美文网首页码神之路:CSS/CSS3篇Web前端之路让前端飞
在CSS样式中有关 float 浮动嵌套 问题

在CSS样式中有关 float 浮动嵌套 问题

作者: 暗恋桃花源丫 | 来源:发表于2017-09-19 14:59 被阅读54次

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

我们来看一个例子:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.wrap { border: solid 2px red; float: left; margin:4px; }
.sub { width: 200px; height: 200px; float: left; background: blue; }
</style>
</head>

<body>
<div class="wrap">
    <div class="sub"></div>
</div>
<span class="wrap">
    <span class="sub"></span>
</span>
</body>
</html> 

浏览器效果图:

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

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

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.wrap { border: solid 2px red; float: left;  margin:4px; width: 100px; height: 100px; }
.sub { width: 200px; height: 200px; float: left; background: blue; }
</style>
</head>

<body>
<div class="wrap">
    <div class="sub"></div>
</div>
<span class="wrap">
    <span class="sub"></span>
</span>
</body>
</html> 


浏览器效果图:


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

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

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#contain { background: #FF99FF; }/*包含元素*/
span {float: left; width: 200px; height: 100px; }/*定义共同属>*/ 
/*内嵌浮动对象样式 */
#span1 { border: solid blue 10px; }
#span2 { border: solid red 10px; }
</style>
</head>

<body>
<div id="contain">
    <span id="span1">span元素浮动</span>
    <span id="span2">span元素浮动</span>
</div>
</body>
</html> 

浏览器效果图:

未适用子元素大小.png

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

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

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#contain { background: #FF99FF; }/*包含元素*/
span {float: left; width: 200px; height: 100px; }/*定义共同属>*/ 
/*内嵌浮动对象样式 */
#span1 { border: solid blue 10px; }
#span2 { border: solid red 10px; }
.clear {/*定义清除类*/
    clear:both; 
}
</style>
</head>

<body>
<div id="contain">
    <span id="span1">span元素浮动</span>
    <span id="span2">span元素浮动</span>
    <div class="clear"></div><!--增加一个清除元素-->
</div>
</body>
</html> 


浏览器效果图:

添加清除元素.png

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

如有侵权24小时内删除。联系QQ:1522025433

相关文章

  • 在CSS样式中有关 float 浮动嵌套 问题

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

  • float初识

    一:float初印象 float是h5中css样式中的一个属性,float 属性定义元素在哪个方向浮动。 以往这个...

  • CSS样式--浮动float

    一、标准文档流的特性 1)空白折叠现象 无论多少个空格、换行、tab都会折叠为一个空格,比如我们想让img标签之间...

  • Css中的float和BFC(Block Formatting

    css中的float(浮动): 在css中浮动的作用可让元素脱离文档流,从而达到某种布局效果 float:left...

  • 关于CSS样式随记

    下面就介绍几个常用的CSS样式知识点: 1.浮动 在html文本中给某子元素添加了浮动效果(例如:float:le...

  • 把笔记备份一下到简书里1

    我是标题,这一篇主要是部分CSS样式小问题: 1、float浮动:给所有子元素加上float,可以使子元素横向并排...

  • Test10

    引用文章: 那些年我们一起清除过的浮动 CSS浮动float详解 Clear Float CSS float浮动的...

  • HTML第二课

    CSS控制div样式 1.浮动布局:float 实现两个布局并行显示 2.清除浮动布局 清除本块布局被覆盖的float

  • CSS之浮动float

    浮动 1.1 浮动的元素 在CSS中,浮动通过float属性实现。 取值: left | right | non...

  • web学习CSS6:float浮动

    1.CSS定位机制 普通流 元素的自动样式 2.CSS Float 的 基础知识 3.使用浮动后产生的问题 4.清...

网友评论

    本文标题:在CSS样式中有关 float 浮动嵌套 问题

    本文链接:https://www.haomeiwen.com/subject/yxbwsxtx.html