当前位置:网站首页>DOM —— 元素盒子模型
DOM —— 元素盒子模型
2022-08-02 14:17:00 【z_小张同学】
(1)offset类:
offsetParent:返回最近的定位父级元素,如无,返回body元素
offsetWidth:本身宽度+边框线+左右内边距;
offsetHeight:本身高度+边框线+上下内边距;
offsetTop:相对第一个父级节点有定位属性的上偏移量;
offsetLeft:相对有定位属性的父节点左偏移量;
<body>
<style>
body {
margin: 0px;
}
.box {
width: 400px;
height: 300px;
background-color: aqua;
cursor: pointer;
position: relative;
left: 100px;
top: 20px;
}
.box2 {
width: 200px;
height: 200px;
background-color: chartreuse;
cursor: pointer;
position: absolute;
left: 10px;
top: 20px;
}
.box3 {
width: 100px;
height: 100px;
background-color: coral;
cursor: pointer;
margin: 10px;
padding: 5px;
border: 3px solid rebeccapurple;
}
</style>
<div class="box">
<div class="box2">
<div class="box3"></div>
</div>
</div>
<script>
var box = document.querySelector(".box")
var box2 = document.querySelector(".box2")
var box3 = document.querySelector(".box3")
console.log(box2.offsetWidth);
console.log(box2.offsetHeight);
console.log(box2.offsetTop);
console.log(box2.offsetLeft);
</script>
</body>
因为offsetParent:返回最近的定位父级元素,如无,返回body元素,而且document.body.offsetParent为 null
offsetLeft,offsetTop:对于无定位父级的元素,返回相对文档的坐标;对于有定位父级的元素返回相对于最近的有定位的父级的坐标。注意:与自己是否是定位元素无关。
因此可以自己定义封装一个函数方法,来求元素相对于文档的位置:
Object.prototype.offset = function() {
let parent1 = this.offsetParent; //获取上一级定位元素对象
let x=this.offsetLeft
let y=this.offsetTop
while (parent1 != null) {
x += parent1.offsetLeft;
y += parent1.offsetTop;
parent1 = parent1.offsetParent;
}
return {x,y};
}
(2)client类
clientWidth:本身的宽度+左右内边距;
clientHeight:本身的高度+上下内边距;
clientTop:上边框线的宽度
clientLeft:左边框线的宽度
<body>
<style>
body {
margin: 0px;
}
.box {
width: 400px;
height: 300px;
background-color: aqua;
cursor: pointer;
position: relative;
left: 100px;
top: 20px;
}
.box2 {
width: 200px;
height: 200px;
background-color: chartreuse;
cursor: pointer;
position: absolute;
left: 10px;
top: 20px;
}
.box3 {
width: 100px;
height: 100px;
background-color: coral;
cursor: pointer;
margin: 10px;
padding: 5px;
border: 3px solid rebeccapurple;
}
</style>
<div class="box">
<div class="box2">
<div class="box3"></div>
</div>
</div>
<script>
var box = document.querySelector(".box")
var box2 = document.querySelector(".box2")
var box3 = document.querySelector(".box3")
console.log(box2.clientWidth);
console.log(box2.clientHeight);
console.log(box2.clientTop);
console.log(box2.clientLeft);
</script>
</body>
(3) scroll类
scrollWidth:盒子的实际宽度(包括滚动条不可见部分,不包括边线)
scrollHeight:盒子的实际高度(包括滚动条不可见部分,不包括边线)
scrollTop:滚动条向下滚动的距离;
scrollLeft:滚动条向右滚动的距离;
<body>
<style>
body {
margin: 0px;
}
.box {
width: 400px;
height: 300px;
background-color: aqua;
cursor: pointer;
position: relative;
left: 100px;
top: 20px;
}
.box2 {
width: 200px;
height: 200px;
background-color: chartreuse;
cursor: pointer;
position: absolute;
left: 10px;
top: 20px;
}
.box3 {
width: 100px;
height: 100px;
background-color: coral;
cursor: pointer;
margin: 10px;
padding: 5px;
border: 3px solid rebeccapurple;
}
</style>
<div class="box">
<div class="box2">
<div class="box3"></div>
</div>
</div>
<script>
var box = document.querySelector(".box")
var box2 = document.querySelector(".box2")
var box3 = document.querySelector(".box3")
console.log(box2.scrollWidth);
console.log(box2.scrollHeight);
console.log(box2.scrollTop);
console.log(box2.scrollLeft);
</script>
</body>
(4)window类
window.innerHeight:浏览器窗口可见区域高度;
window.innerWidth:浏览器窗口可见区域宽度;
边栏推荐
猜你喜欢
随机推荐
UINIX 高级环境编程杂项之限制
Vert.x web 接收请求时反序列化对象 Failed to decode 如何解决?
炒鸡好用的音乐平台(插件)
一分钟之内搭建自己的直播服务器?
网络运维系列:二级域名启用与配置
HCIE学习记录——OSI参考模型
Template series-union set
PostgreSQL 协议数据样例
为什么 RTP 的视频的采样率是 90kHz ?
项目管理模块-项目权限功能开发
网络运维系列:端口占用、端口开启检测
【软件测试】性能测试理论
【软件测试】测试基础讲解
搭建Spark开发环境
Mysql索引底层数据结构
MYSQL5.7详细安装步骤
OpenPose run command ([email protected])
小知识点系列:StringUtil.isEmpty()与StringUtil.isBlank()的区别
支付系列文章:PCI合规能力建设
smart_rtmpd 的 NAT 映射方式使用说明