首页 > 其他分享 >CSS2.1规范笔记——8.2 外边距与margin合并

CSS2.1规范笔记——8.2 外边距与margin合并

时间:2023-07-22 19:23:29浏览次数:43  
标签:8.2 流内 元素 合并 相邻 CSS2.1 外边 margin

外边距

margin取值

  • <length>:一个固定值
  • <percentage>:百分比根据当前生成盒的包含块的width来计算。注意,margin-top和margin-bottom也是根据其包含块的width来计算的。如果包含块的width取决于该元素,那么产生的布局在CSS2.1是未定义的。
  • auto:具体见“计算width与margin”章节。

margin无效的情况

非替换的行内元素上的垂直margin将不会产生任何效果。(所谓替换元素,指的是input、button这样的不同平台不同的,需要根据具体情况替换成平台对应的实体的元素)

此外table-caption、table和inline-table设置margin无效。(这一行是规范中说的,但我自己测了一下,都是可以设置margin的,估计是CSS3修改了)

margin合并

CSS中,两个或多个盒(可能但不一定是兄弟)的相邻margin会被结合成一个margin。外边距按这种方式结合叫做合并,产生的结合的外边距叫做折叠外边距(collapsed margin)。

并不是所有相邻的margin都会合并,以下的margin就不会发生合并:

  • 根元素(即html元素)的margin不合并;(经验证,第一个子元素的上margin不会与html元素的上margin合并)
  • 相邻元素的水平margin不会合并;
  • 相邻元素的垂直margin一般会合并,但如果带有间隙(clearance,是指clear属性产生的、放在上margin上方的额外间距,具体可见https://www.cnblogs.com/hdxg/p/17574033.html)的元素的上margin和下margin相邻,它的margin会和紧挨着的兄弟元素的相邻margin合并,但不会再和父级块的下magin合并。

 

两个margin是相邻的:

  • 当且仅当都属于流内(in-flow)块级盒,处于同一个BFC中。这表明:
    • 浮动的盒与任何其他盒之间的margin不会合并(因为浮动的盒不属于流内块级盒)
    • 建立了新的BFC的元素的margin不会与它们的流内孩子合并margin
  • 没有行框(line box)、空隙、内边距和边框把它们隔开来。
  • 都属于垂直相邻边界(vertical-adjacent box edges),即形成下列某一对:
    • 盒的上margin与其第一个流内孩子的上margin;
    • 盒的下margin与其下一个流内挨着的兄弟的上margin;
    • 最后的一个流内孩子的下margin与其height计算为auto的父元素的下margin;
    • 盒的上边距和下边距,要求该盒没有建立新的块格式化上下文,并且min-height计算值为0,height计算值为0或auto,还没有流内孩子。(经过验证,这种情况并不会发生合并)

另外,折叠外边距也能与与另一个外边距相邻。

标签:8.2,流内,元素,合并,相邻,CSS2.1,外边,margin
From: https://www.cnblogs.com/hdxg/p/17574051.html

相关文章

  • CSS2.1规范笔记 - 8.1 盒尺寸
    中文链接:http://www.ayqy.net/doc/css2-1/cover.html英文链接:https://www.w3.org/TR/2011/REC-CSS2-20110607/本笔记是2020年自学前端时所写,当时写在word文档上,今天重温,就搬到博客园上来。盒尺寸盒模型的组成css盒模型描述了一个为文档树中的元素生成的,根据视觉格式化模型进......
  • WPS Office 2019 v11.8.2.12014
    下载地址:https://pan.baidu.com/s/18T2jwDAjeqy-ebT5u18zVA#list/path=%2F软件介绍WPSOffice2019博湖县政府专用版,无需序列号,免激活长期授权,这是目前最新的WPS政府专用版。WPSOffice是款一免费的办公软件套件,全面涵盖了文字处理、电子表格,演示文稿、PDF以及云服务等功能。WP......
  • day08 8.2 安卓开发项目简介
    【一】安卓项目目录结构(开发流程)【二】安卓项目目录结构├──.gradle#AndroidStudio自动生成的文件,会自动修改它的,项目打包时也会删除;├──.idea#AndroidStudio自动生成的文件,会自动修改它的,项目打包时也......
  • 2. Q_ 行内_inline_元素 设置_margin_top_和_margin_bottom_
    Q:行内(inline)元素设置margin-top和margin-bottom是否起作用?A:不起作用。(答案是起作用,个人觉得不对。)html里的元素分为替换元素(replacedelement)和非替换元素(non-replacedelement)。替换元素是指用作为其他内容占位符的一个元素。最典型的就是img,它只是指向一个图像......
  • 焰火十二卷调色板软件 v2.8.27 更新进度说明
    ​ 调色板是数字创意时代的重要工具,它能够影响设计作品的视觉效果和美感。焰火十二卷是一款免费开源的色彩编辑器,它可以让你从色轮或者其他来源生成一组协调的色彩,并且可以自由调整色彩的属性(比如亮度、饱和度、对比度等)。也可以把生成的色彩保存为色彩组或者色库,并且可以方便地......
  • centos8.2升级centos stream
    背景2020年12月08日,CentOS官方宣布CentOSLinux项目将停止并推出CentosStream项目。2022后CentOS8的使用者将无法获得包括问题修复和功能更新在内的任何软件维护和支持。升级过程首先,输入如下命令,查看你的yum仓库是否有centos-release-stream[root@gby~]#yumsea......
  • Android 的Margin和Padding属性以及支持的长度单位
    Android的Margin和Padding跟Html的是一样的。如下图所示:黄色部分为Padding,灰色部分为Margin。通俗的理解Padding为内边框,Margin为外边框对应的属性为android:layout_marginBottom="25dip"android:layout_marginLeft="10dip"android:layout_marginTop="10dip"an......
  • neon配置flatpak国内的源,并安装octave 8.2
    1、neon毕竟是基于ubuntu的,软件版本不是一般的老,octave官方仓库是6.4的,有些函数和插件竟然不支持了,只能安装8.2的,可以使用discover安装,那速度嘿嘿,谁用谁知道啊2、配置国内的源,使用上交大的源,先感谢上交大的辛苦付出。https://mirror.sjtu.edu.cn/docs/flathub进入后依次......
  • The specified source IP address attack occurred.(Slot=LPU1, SourceAttackIP=80.82
    February1120239:57:029303-1%%01SECE/4/SPECIFY_SIP_ATTACK(l)[412]:ThespecifiedsourceIPaddressattackoccurred.(Slot=LPU1,SourceAttackIP=80.82.78.27,AttackProtocol=TCP,AttackPackets=125packetspersecond)February1120239:57:029303-1%%01SEC......
  • 8.23 数组操作
    建立一个可以实现整型数组的操作类(Array),而后在里面可以操作的数组的大小由外部来决定,而后在Array类里面需要提供有数组的如下处理:进行数据的增加(如果数据满了则无法增加)、可以实现数组的容量扩充、取得数组全部内容。完成之后在此基础上再派生出两个子类:·数组排序类:返回的数......