CSS—嵌套块元素外边距合并导致的塌陷(3种处理方法)

html-css04

CSS—嵌套块元素外边距合并导致的塌陷(3种处理方法),第1张

嵌套块元素外边距合并导致的塌陷(3种处理方法)

一、现象解释

指对于嵌套关系的块元素,若父子双方均有外边距则父元素会塌陷较大的外边距(通俗解释:就是父子均按照最大的外边距进行移动)

tips:谁大塌陷多少

eg:

<style>

.father{

width:500px

height:500px

background-color:rgb(15,213,240)

margin-top:100px

   }

.son{

width:300px

height:300px

background-color:rgb(14,71,226)

margin-top:50px

   }

</style>

<body>

<divclass="father">

<divclass="son">

</div>

</div>

</body>

二、解决方案

1.加一个透明的边框

即:加一个border: 1px solid transparent

<style>

.father{

width:500px

height:500px

background-color:rgb(15,213,240)

margin-top:100px

border:1pxsolidtransparent

   }

.son{

width:300px

height:300px

background-color:rgb(14,71,226)

margin-top:50px

   }

</style>

<body>

<divclass="father">

<divclass="son">

</div>

</div>

</body>

2.给父元素加一个内边距

即:padding:1px

<style>

.father{

width:500px

height:500px

background-color:rgb(15,213,240)

margin-top:100px

padding:1px

   }

.son{

width:300px

height:300px

background-color:rgb(14,71,226)

margin-top:50px

   }

</style>

<body>

<divclass="father">

<divclass="son">

</div>

</div>

</body>

3.给父元素加一个overflow:hidden

4.其他

浮动元素可以相互嵌套,嵌套规律与流动元素的嵌套相同。浮动的包含元素(父元素)总会自动调整自身的高度和宽度以实现对浮动元素的包含。

我们来看一个例子:

浏览器效果图:

这时会发现父元素会自动调整自身的大小来包含子元素。

如果包含元素定义了高度和宽度则他不会随子元素的大小而自动调整自身显示区域来适应子元素的显示。注意,在IE6及更低版本浏览器中包含框仍然能够自动调整自身大小来适应子元素的显示大小,不过在IE7版本中微软纠正了这个不符合标准的显示方法。如下

示例:

浏览器效果图:

默认状态下溢出不隐藏,我们可以添加 样式 overflow:hidden隐藏多余的部分或overflow: scroll多余部分显示滚动条。

如果把浮动元素嵌入到流动元素之内,则父元素不能够自适应子元素的高度,

如下示例:

浏览器效果图:

在上图中可以看到包含元素div并,没用显示。原因就是包含元素没有适应子元素的高度,而是根据自身定义的属性以独立的形式显示(父元素没有被撑开,仅收缩成一条直线显示)。所以,在应用混合嵌套式,要预测到浮动与流动混合布局时会出现的各种怪现象,并积极做好兼容处理。

解决方法:可以在包含元素内的最后一行添加一个清除元素,强制撑开包含元素,使其包含浮动元素。

示例如下:

浏览器效果图:

本文章参考书籍:HTML5+CSS3+JavaScript从入门到精通(标准版)未来科技 编著

这是css选择器,顾名思义,就是根据选择器来选择对应的元素然后添加对应的样式。

常用css选择器有3种:标签选择器,类选择器,和id选择器

第1部分 html,body,h1.....这些属于标签选择器,就是所有提到的标签都遵从该选择器定义的样式,这行主要是做css reset,清除各标签的默认样式,防止浏览器默认值不同导致兼容性问题。

第2部分是css3新特性@keyframes,用于创建动画的

第3部分以下是类选择器,就是针对 class="类名"定义的样式,类选择器写法: .类名