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