子元素设置了margin-top,父元素跟随下移问题

子元素设置了margin-top,父元素跟随下移问题,第1张

HTML

CSS

1. 两个元素为同级元素 ,即当一个元素出现在另一个元素上面时,第一个元素的margin-bottom与第二个元素的margin-top发生合并,合并后的margin值是margin-bottom和margin-top中较大的那一个

2. 当两个元素嵌套 ,即一个元素包含在另一个元素中时(假设没有padding或border把两个元素的margin分隔开),它们的margin-bottom和/或margin-top也会发生合并,合并后的margin值同样也是margin-bottom和margin-top中较大的那一个; 该问题就属于这一种情况

3. 假设有一个空元素,且不设置它的宽高, 它有margin-bottom和margin-top,但是没有padding或border。在这种情况下,margin-bottom和margin-top就碰到了一起,它们也会发生合并,合并后的margin值同样也是margin-bottom和margin-top中较大的那一个。

如果这个外边距遇到另一个元素的外边距,它还会发生合并。

在这个说明中,“collapsing margins”(折叠margin)的意思是:2个或以上盒模型之间(关系可以是相邻或嵌套)相邻的margin属性(这之间不能有非空内容、padding区域、border边框

或使用清除分离方法)结合表示为一个单独的margin。

常用以下四种解决方法:

1、父元素设置 overflow:hidden

2、父元素设置 padding-top:1px

3、父元素设置 border-top:1px solid transparent

4、父元素或子元素设置浮动 float:left 或者绝对定位 position:absolute。

子元素说明:

与后代选择器相比,即只对直接后代有影响,而对“孙子”以及多个层的后代不产生作用。

选择子元素:

如果您不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器(Child selector)。

例如,如果您希望选择只作为 h1 元素子元素的 strong 元素,可以这样写:

h1 >strong {color:red} 这个规则会把第一个 h1 下面的 strong 元素变为红色,但是第二个 strong 不受影响:

<h1>This is <strong>very</strong>important.</h1><h1>This is <em>really <strong>very</strong></em>important.</h1>

语法解释:

您应该已经注意到了,子选择器使用了大于号(子结合符)。

子结合符两边可以有空白符,这是可选的。因此,以下写法都没有问题:

h1 >strong h1>strong h1 >strong h1>strong 如果从右向左读,选择器 h1 >strong 可以解释为“选择作为 h1 元素子元素的所有 strong 元素”。

如何将子盒子垂直居中于父盒子?新手可能会想到使用margin,

但是子盒子设置margin-top后,会作用于父盒子,如图1

造成这个现象的原因是:

1.当一个元素包含在另一个元素中时(假设没有填充或边框将边界分隔开),它们的顶和/或底边界会发生叠加。

2.只有普通文档流中块框的垂直边界才会发生边界叠加。行内框、浮动框或绝对定位框之间的边界不会叠加。

解决办法如下?

方法一:为父元素设置border

方法二:为父元素添加overflow:hidden;样式

方法三:为父元素或者子元素声明浮动

方法四:为父元素或者子元素声明绝对定位


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11643365.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存