元素偏移量offset
offset概述
- 获得元素距离带有定位父元素的位置
- 如果子元素没有父亲或者父元素没有定位,则以body为准
- 获得元素自身的大小(包含padding+border+width)
注意:该属性返回的数值都不带单位
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7e858422dafd7706468b887ea47a8981.png)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.father{
position: relative;
width: 400px;
height: 200px;
background-color: pink;
margin: 100px;
}
.son{
width: 200px;
height: 100px;
background-color: purple;
margin: 100px;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
<script>
var father = document.querySelector('.father');
var son = document.querySelector('.son');
console.log(father.offsetWidth);
console.log(son.offsetWidth);
</script>
</html>
ofset与style的区别
offset
- offset可以得到任意样式表中的样式值
- offset系列获得的数值是没有单位的
- offserWidth包含padding+border+width
- offsetWidth等属性是只读属性,只能获取不能赋值
用offset获取元素大小位置更加合适
style
- style只能得到行内样式表中的样式值
- style.width获得的是带有单位的值
- style.width是可读写属性,可以获取也可以赋值
style适合于给元素更改值
拖拽模态框案例
- 点击弹出层,显示模态框和遮挡层
- 点击关闭按钮,隐藏模态框和遮挡层
- 在页面中拖拽原理,鼠标按下并且移动,之后松开鼠标
- 鼠标移动过程中,获得最新的值给模态框的left和top值
- 模态框真正位置为鼠标坐标减去鼠标在盒子内的坐标
html代码
<body>
<div class="login-header">