没有合适的资源?快使用搜索试试~ 我知道了~
首页深入理解CSS负外边距在文档流中的布局技巧
"负外边距(margin负值)在CSS布局中是一种强大的工具,尤其对于前端开发者来说,理解并熟练运用它是至关重要的。负边距允许元素在不改变其原始尺寸的情况下,通过调整其在文档流中的位置来实现非传统的布局效果。当元素不脱离文档流,如非浮动、绝对定位或固定定位的元素时,负边距可以改变它们与其他元素之间的空间关系。 例如,当给块状元素、行内元素或inline-block元素设置负margin(-10px)时,这些元素会在文档流中相对于其原本的位置向左和向上移动,同时让后续的元素填补了它们留下的空间。这种行为与相对定位不同,后者虽然也能偏移位置,但保持了原空间,不会影响其他元素的正常布局。 负边距可以用来模拟元素尺寸的减小,但实际上并不改变元素的实际尺寸,而是文档流在计算元素位置时的视觉错觉。例如,如果一个未设定高度的块状元素内部有一个子元素,通过负margin-bottom使子元素下移,文档流的高度计算将受到影响,导致整个块状元素的高度看起来似乎减小了。 需要注意的是,负边距仅能在文档流的方向(通常是水平或垂直)上起作用,不能逆向推动内容。这意味着在设计布局时,要遵循文档流的方向性规则,以确保布局的逻辑性和一致性。 掌握负外边距的用法可以帮助开发者实现复杂的布局设计,但也需谨慎使用,以免影响到页面的稳定性和可维护性。对于初学者来说,理解和实践这一技巧是提升CSS布局能力的关键一步。"
资源详情
资源推荐
常用技巧常用技巧margin负外边距的使用介绍负外边距的使用介绍
css中的负边距(negative margin)是布局中的一个常用技巧,只要运用得合理常常会有意想不到的效果。很多特殊的css布局方
法都依赖于负边距,所以掌握它的用法对于前端的同学来说,那是必须的。本文非常基础,老鸟可以略过。
负边距在普通文档流中的作用和效果负边距在普通文档流中的作用和效果
那些没有脱离文档流的元素(指不是浮动元素也不是绝对定位、固定定位的元素等),其在页面中的位置是跟随者文档流的变
化而变化的。看下面这幅图:
负边距对这些由文档流控制的元素的作用是,会使它们在文档流中的位置发生偏移,但这种偏移不同于相对定位,通过相对定
位偏移后,其仍然会坚守着它原来占据的空间,不会让文档流的其它元素乘虚而入。而通过负边距进行偏移的元素,它会放弃
偏移前占据的空间,这样它后面文档流中的其它元素就会“流”过来填充这部分空间。还是通过例子来说明吧。现在我们把上图
中的块状元素、行内元素以及inline-block元素都设一个负边距 margin:-10px; 看看会发生什么:
我们看到,黑灰色的块状元素好像向左和向上都分别嵌入了浏览器窗口的边界里10px,然后块状元素下面的文字也爬到了它身
上,行内元素向左移动盖住了它前面的一个字,它后面的文字也有一部分覆盖在了它身上,inline-block的位置变化也很明显。
好了,这点相信大家早就心知肚明了,就是负的边距好像能减小元素在文档流中的尺寸一样,但事实上,它的尺寸大小并没
变,只是文档流在计算元素位置的时候,会认为负边距把元素的尺寸减小了,因为位置也就发生变化了。这只是打个很形象的
比喻,帮助大家理解一下。还要注意的是,文档流只能是后面的流向前面的,即文档流只能向左或向上流动,不能向下或向右
移动。
所以,一切只要是由文档流决定的东西,负边距就能起作用了。
比如,一个没有设定高度的块状元素,其高度是自动的,具体来说就是由它里面的文档流最后的位置决定的。假设它里面有一
个出于文档流中的子元素,高度为100px;那这时这个父元素的高度就等于子元素的高度100px了,如果子元素继续增高,那么
父元素也会跟着增高。可是如果这时子元素设一个负的margin-bottom,比如-20px,因为负边距会影响到文档流,本来文档流
的高度是从父元素的最顶端到子元素的最底端这段高度,现在子元素有一个margin-bottom:-20px;就相当于文档流要向上退后
20px,这样整个文档流的高度就减少了20px了,那么父元素的高度也会跟着减少20px。在标准浏览器中,这还需要父元素拥有
一个overflow:hidden的属性才能办到,在IE浏览器中则不需要。所以以前所说的多列等高布局就是利用这个原理来实现的。
总之一句话,在文档流中,元素的最终边界是由margin决定的,margin为负的时候就相当于元素的边界向里收,文档流认的
只是这个边界,不会管你实际的尺寸是多少。
左和右的负边距对元素宽度的影响左和右的负边距对元素宽度的影响
负边距不仅能影响元素在文档流中的位置,还能增加元素的宽度!
这个作用能实现的前提是:该元素没有设定width属性(当然width:auto是可以的)。
比如下图的黑灰色部分是一个块状元素,它没有设定宽度。它被包裹在一个宽度为400px,且水平居中的父元素中。
下载后可阅读完整内容,剩余3页未读,立即下载
weixin_38521831
- 粉丝: 2
- 资源: 917
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功