CSSOM视图模型中几个常用的位置、尺寸相关属性的详解
什么是CSSOM视图模型,这里就不解释了,有兴趣的童鞋可以到官网去看下。这里只说说几个很有用却容易混淆的属性,这几个属性兼容性都蛮不错的,基本不用太关注浏览器环境。
clientLeft 与 clientTop
返回元素内容区域左上边界(包含padding,并且是可见区域)相对于元素整个区域左上边界(包含边框,但不包含margin)的偏移距离,兼容常见浏览器(指ie6+,firefox 3.0+,chrome 4+,opera 10.10+,safari 4.0+等浏览器,后文相同)
ps:可见区域是指我们能看到的部分,即不包括超出隐藏部分或是有滚动条时被隐藏的那部分。
再ps:后文中如再提到元素的内容区域,则指的是包含padding后的区域,元素的整个区域指的是包含padding和border,但不包含margin的区域.
offsetLeft 与 offsetTop
返回元素的整个区域的左上边界相对于最近的有动态定位(也就是除static以外的定位)的祖先元素(也称为offsetParent)的内容区域左上边界的偏移距离.
注:在ie6中,当offsetParent元素的position属性为relative时,则offsetLeft和offsetTop的计算点会变为文档的左上角,ie7+待测
另:书上以及很多地方都说,offsetParent的最顶级元素(即页面中不存在有动态定位的祖先元素时,会取这个最顶级元素作为offsetParent)为body,但实际中,offsetParent的最顶级元素应为html,在绝对定位中,最高参照物也是html,而不是body
ps: 在IE和Opera浏览器下,position属性为fixed
的元素是没有offsetParent的。
总结:clientLeft 与 clientTop的计算只涉及到一个元素,也就是自身,而offsetLeft 与 offsetTop则需要它父元素中的一个来参与计算,因此涉及到了两个元素。
clientWidth 与 clientHeight
返回元素内容区域(包含padding,但不包含边框和滚动条,并且是可见区域)的尺寸大小,兼容常见浏览器
ps:有滚动条产生时,元素尺寸不会额外增大,而是从自身的空间里扣除
offsetWidth 与 offsetHeight
返回整个元素(包含padding和border)的大小,兼容常见浏览器
总结:由以上几个属性可看出,带client的都是和元素内容区域相关,带offset的都是和元素的整个区域的相关的。
scrollLeft 与 scrollTop
返回元素已滚动部分的距离,兼容常见浏览器
scrollWidth 与 scrollHeight
返回元素的的clientWidth或clientHeight(包括超出隐藏的或滚动的部分),兼容常见浏览器
注意:
clientWidth或clientHeight是不包括超出隐藏或滚动部分的
clientX 与 clientY
返回鼠标事件时鼠标相对于浏览器窗口左上角的位置,与html或body的边框、内外边距等无关,兼容常见浏览器
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!