css 元素实际宽高

首先定义一个div

 

 

然后稍微装修一下

 

 

下面开始区分

 

一、clientWidthclientHeigh clientTopclientLeft

 

        1clientWidth的实际宽度

        clientWidth = width+左右padding

 

        2clientHeigh的实际高度

         clientHeigh = height + 上下padding 

 

        3clientTop的实际宽度

           clientTop = boder.top(上边框的宽度)

 

        4clientLeft的实际宽度

            clientLeft = boder.left(左边框的宽度)

 

二、offsetWidthoffsetHight  offsetTopoffsetLeft

 

         1,offsetWidth的实际宽度

            offsetWidth = width + 左右padding + 左右boder

 

         2,offsetHeith的实际高度

                      offsetHeith = height + 上下padding + 上下boder

 

         3offsetTop实际宽度

                       offsetTop:当前元素 上边框 外边缘 到 最近的已定位父级(offsetParent) 上边框 内边缘的 距离。如果父

 

                 级都没有定位,则分别是到body 顶部 和左边的距离

 

         4offsetLeft实际宽度

              offsetLeft:当前元素 左边框 外边缘 到 最近的已定位父级(offsetParent) 左边框 内边缘的            距离。如果父级都没有定位,则分别是到body 顶部 和左边的距离

 

三、scrollWidthscrollHeight scrollTopscrollLeft

        1scrollWidth实际宽度

               scrollWidth:获取指定标签内容层的真实宽度(可视区域宽度+被隐藏区域宽度)。

 

        2scrollHeight的实际高度

         scrollHeight:获取指定标签内容层的真实高度(可视区域高度+被隐藏区域高度)

 

        3scrollTop

                scrollTop :内容层顶部 到 可视区域顶部的距离。

 

实例:

var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

 

持续获取高度的方式:

window.addEventListener('scroll', ()=>{

  var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

});

 

        4scrollLeft

                scrollLeft:内容层左端 到 可视区域左端的距离.

 

转载于:https://www.cnblogs.com/xuxiaoyu/p/11495507.html

### 块级元素不一致的原因分析 块级元素实际度和度与设置值不一致,通常是由以下几种常见原因导致的: 1. **浮动(Float)导致的度塌陷** 当子元素使用 `float` 属性时,这些子元素会脱离标准文档流,父元素无法感知到它们的存在,从而导致父元素度为零或不正确[^1]。这种情况会影响背景颜色或边框等样式的正常显示。 2. **外边距(Margin)重叠** 在垂直方向上,相邻的块级元素之间的外边距可能会发生重叠,导致实际间距小于预期。这种现象在父子元素之间尤为明显,当子元素的上外边距(margin-top)与父元素的下外边距(margin-bottom)重叠时,会导致视觉上的度差异[^3]。 3. **盒模型(Box Model)的影响** CSS 中存在两种盒模型:标准 W3C 盒模型和 IE 盒模型。在标准 W3C 盒模型中,元素度和度仅包含内容区域(content),而不包括内边距(padding)和边框(border)。如果开发者未明确指定 `box-sizing` 属性,默认情况下,设置的度和度可能因内边距和边框的存在而超出预期。 4. **默认样式(User Agent Stylesheet)** 浏览器对不同元素应用了不同的默认样式,例如 `<body>` 元素可能有默认的外边距,`<ul>` 和 `<ol>` 元素可能有默认的内边距。这些默认样式可能导致实际尺寸与预期不符。 5. **绝对定位(Absolute Positioning)** 使用 `position: absolute` 的元素会脱离文档流,其尺寸不会影响父元素或其他兄弟元素的布局[^2]。这可能导致父元素度计算不准确。 --- ### 解决方案 针对上述问题,以下是对应的解决方法: 1. **清除浮动(Clear Floats)** - 使用 `clear: both;` 清除浮动对父元素的影响。 - 在父元素末尾添加一个空标签,并设置 `clear: both;`。 - 使用伪元素 `::after` 实现清除浮动: ```css .clearfix::after { content: ""; display: block; clear: both; } ``` 将父元素设置为 `class="clearfix"` 即可[^1]。 2. **调整盒模型(Box Sizing)** - 设置 `box-sizing: border-box;`,使元素度和度包含内边距和边框: ```css * { box-sizing: border-box; } ``` 3. **重置默认样式(Reset Default Styles)** - 使用全局样式重置浏览器的默认样式: ```css * { margin: 0; padding: 0; box-sizing: border-box; } ``` 4. **避免外边距重叠(Prevent Margin Collapse)** - 给父元素设置 `overflow: hidden;` 或 `overflow: auto;`,可以阻止外边距重叠[^3]。 5. **合理使用绝对定位(Proper Absolute Positioning)** - 确保绝对定位的元素不会干扰其他元素的布局。如果需要隐藏元素,可以使用 `visibility: hidden;` 或 `opacity: 0;` 替代绝对定位[^2]。 --- ### 示例代码 以下是一个综合示例,展示如何解决块级元素不一致的问题: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CSS Block Element</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } .container { border: 1px solid black; overflow: hidden; /* 防止外边距重叠 */ } .child { float: left; width: 50%; height: 100px; background-color: lightblue; } .clearfix::after { content: ""; display: block; clear: both; } </style> </head> <body> <div class="container clearfix"> <div class="child"></div> <div class="child"></div> </div> </body> </html> ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值