JS 操作 dom 元素
0. 获取 dom 节点
1 | document.getElementById('id') |
1. 获取 dom 位置
Element.getBoundingClientRect() - Web API 接口参考 | MDN (mozilla.org)
getBoundingClientRect()
方法返回元素的大小及其相对于视口的位置。

1 | // 判断元素是否处于视口内 |
2. 移动 dom
Element.scrollIntoView() - Web API 接口参考 | MDN (mozilla.org)
滚动 dom 的父容器,使 dom 对用户可见,平滑移向中间。
dom.scrollIntoView({ block: 'nearest', inline: 'center', behavior: 'smooth' })
1 | element.scrollIntoView(); // 等同于 element.scrollIntoView(true) |
alignToTop
参数
- 如果为
true
,元素的顶端将和其所在滚动区的可视区域的顶端对齐。相应的scrollIntoViewOptions: {block: "start", inline: "nearest"}
。这是这个参数的默认值。 - 如果为
false
,元素的底端将和其所在滚动区的可视区域的底端对齐。相应的scrollIntoViewOptions: {block: "end", inline: "nearest"}
。
scrollIntoViewOptions
参数属性
behavior
可选定义动画过渡效果,
"auto"
或"smooth"
之一。默认为"auto"
。block
可选定义垂直方向的对齐,
"start"
,"center"
,"end"
, 或"nearest"
之一。默认为"start"
。inline
可选定义水平方向的对齐,
"start"
,"center"
,"end"
, 或"nearest"
之一。默认为"nearest"
。
3. 获取 dom 相关节点
1 | var dom = document.getElementById("c-dom"); |
4. 增删 dom
1 | // 增删子元素 |
5. 操作 class
① html5(不兼容 ie10 以下:)
1 | var dom = document.getElementById('domid'); |
② 兼容
1 | var dom = document.getElementById('domid'); |
6. 操作 style
① 设置:dom.style.<attribute>
使用该方法读取到的只有元素内联的样式。如果一个元素为<div style='color:red,left:40px'></div>
,那么 ele.style.color
就会返回 red,如果使用 ele.style.left
就会返回 40px。该方法可以同时设置或者获取某一个元素的样式。
② 获取:window.getComputedStyle()
与 getPropertyValue
1 | getComputedStyle(document.getElementById('caseroul'),null).getPropertyValue('left'); |
③ 获取:currentStyle 与 getAttribute(兼容 ie)
currentStyle
获取的是一个元素的所有的样式属性值,这一点功能是与 getComputedStyle()
一样的,但是在获取某一个具体的属性的时候,可以结合 getAttribute
来实现。
和 getComputedStyle
方法不同的是,currentStyle
要获得属性名的话必须采用驼峰式的写法。也就是如果我需要获取 font-size
属性,那么传入的参数应该是 fontSize
。因此在 IE 中要获得单个属性的值,就必须将属性名转为驼峰形式。
1 | // IE 下将 CSS 命名转换为驼峰表示法 |
7. 面试题
① 将 A 元素拖拽并放置到 B 元素中,B 元素需要做哪项操作()?
event.preventDefault()
event.prevent()
event.drag()
event.drop()
② 以下不支持冒泡的鼠标事件为( )?
- mouseover
- click
- mouseleave
- mousemove