元素偏移量—offset 系列
属性:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> * { margin: 0; padding: 0; } .father { /*position: relative;*/ width: 200px; height: 200px; background-color: pink; margin: 150px; } .son { width: 100px; height: 100px; background-color: purple; margin-left: 45px; } .w { width: 200px; height: 200px; background-color: skyblue; margin: 0 auto 200px; padding: 10px; border: 15px solid red; } </style> </head> <body> <div class="father"> <div class="son"></div> </div> <div class="w"></div> <script> // 获取元素 var father = document.querySelector('.father'); var son = document.querySelector('.son'); // 1. 可以得到元素偏移量, 150 没有单位 console.log(father.offsetTop); console.log(father.offsetLeft); console.log('-----------------------------------'); // 2. 如果有定位的父亲,则以父亲为准,没有就以body为准 console.log(son.offsetLeft); // 以body 195 console.log(son.offsetLeft); // 以定位father 45 console.log('-----------------------------------'); // 3. offsetWidth 包含padding+border+width 只读属性不能赋值操作 var w = document.querySelector('.w'); console.log(w.offsetWidth); // 200 + 10 *2 + 15 * 2 = 250 console.log(w.offsetHeight); // 200 + 10 *2 + 15 * 2 = 250 console.log('-----------------------------------'); // 4. 返回带定位父亲,否则是body console.log(son.offsetParent); // 返回带有定位的父亲 否则返回的是body console.log(son.parentNode); // 返回父亲 是最近一级的父亲 亲爸爸 不管父亲有没有定位 </script> </body> </html>
offset 和 style 区别:
offset
- 可以得到任意样式的样式值
- 获取到的值没有单位
- 只读属性,不能修改
- offsetWidth offsetHeight 包含padding+border+width
style
来源:https://www.cnblogs.com/py-web/p/12509071.html