在CSS的开发中,之前对于清除浮动这块总感觉迷惑,为什么要清除浮动?清除浮动的方式又有那些?
如下面一段HTML代码:
<ol> <li> <h2>运用CSS3的-webkit-box属性实现导航条效果</h2> <ul class="navone"> <li><a href="javascript:void(0)">Home</a></li> <li><a href="javascript:void(0)">About</a></li> <li><a href="javascript:void(0)">Content</a></li> </ul> </li> <li> <h2>用overflow:hidden来实现浮动清除</h2> <ul class="navtwo"> <li><a href="javascript:void(0)">Home</a></li> <li><a href="javascript:void(0)">News</a></li> <li><a href="javascript:void(0)">Photos</a></li> </ul> </li> <li> <h2>用伪类清除浮动</h2> <ul class="navthree"> <li><a href="javascript:void(0)">Home</a></li> <li><a href="javascript:void(0)">About</a></li> <li><a href="javascript:void(0)">Content</a></li> </ul> </li> <li> <h2>添加额外的元素来清除浮动</h2> <ul class="navfour"> <li><a href="javascript:void(0)">Home</a></li> <li><a href="javascript:void(0)">About</a></li> <li><a href="javascript:void(0)">Content</a></li> <span class="clearfix"></span> </ul> </li> <li> <h2>使父元素浮动</h2> <ul class="navfive"> <li><a href="javascript:void(0)">Home</a></li> <li><a href="javascript:void(0)">About</a></li> <li><a href="javascript:void(0)">Content</a></li> </ul> </li> </ol>
在上面一段代码中,我们需要对li元素进行浮动处理,以创建导航条。当对li元素应用float:left;时,它们就会脱离正常的文档流,跳出父块也就是ul元素的包围。如,对父元素ul应用了一个边框,但是子元素li跳出了ul的包围,就不会得到预期的效果。
我写的一段CSS代码如下,通过5种方式可以清楚浮动,当然也有最佳的选择:
ul{margin: 0;padding: 0;} ul li{margin: 0;padding: 0;list-style:none;} a{text-decoration: none;} /* 运用CSS3的-webkit-box属性实现导航条效果 */ ul.navone{display:-webkit-box;width: 15em;border: 1px dashed #000;} ul.navone li{-webkit-flex:1;-webkit-box-sizing:border-box;width:5em;border-right: 1px solid #000;} ul.navone li:last-child{border: none;} ul.navone li a{display: block;text-align: center;} /* 用overflow:hidden来实现浮动清除 */ ul.navtwo{width: 15em;border: 1px dashed #000;overflow: hidden;} ul.navtwo li{width: 5em;float: left;box-shadow: 1px 0 0 #000;} ul.navtwo li a{display: block;text-align: center;} /* 用伪类清除浮动 */ ul.navthree{width: 15em;border: 1px dashed #000;} ul.navthree:after{content: ".";height: 0;overflow: hidden;display: block;clear: both;} ul.navthree li{width: 5em;float: left;box-shadow: 1px 0 0 #000;} ul.navthree li a{display: block;text-align: center;} /* 添加额外的元素来清除浮动 */ ul.navfour{width: 15em;border: 1px dashed #000;} ul.navfour li{width: 5em;float: left;box-shadow: 1px 0 0 #000;} ul.navfour li a{display: block;text-align: center;} ul.navfour .clearfix{display:block;width:100%;clear: both;} /* 使父元素浮动 */ ul.navfive{width: 15em;border: 1px dashed #000;float: left;} ul.navfive li{width: 5em;float: left;box-shadow: 1px 0 0 #000;} ul.navfive li a{display: block;text-align: center;}
以上5种方式为常用的清楚浮动的方式,随着CSS3的普及,手机端完全可以依靠第一种方式就能实现(当然在使用CSS3相关属性时,要加上前缀,如display:-webkit-box;就要加上-webkit前缀),也就是不用浮动,自然也不用清除浮动。但是,对于桌面浏览器,则还需要运用第二种方式来清除浮动。
最终的效果如下:
相关推荐
清除浮动主要有以下几种方式: 1. 使用CSS的`clear`属性:我们可以给后续元素设置`clear:both`,这将强制该元素不与任何浮动元素相邻接。例如: ```css .clear-fix { clear: both; } ``` 然后在HTML中添加一...
浮动布局在CSS中是一种经典而基础的布局方式,它允许元素在页面中向左或向右浮动,使得其他内容能够环绕其展示。然而,浮动元素的一个常见问题是它们可能导致父容器的高度无法正确计算,进而影响后续元素的布局。这...
本文将深入探讨浮动的原理,以及清除浮动的各种方法。 1. **浮动的原本意义** 浮动最初设计的目的是为了实现文字环绕图像的效果。当一个元素(如图片)被设置为`float: left`或`float: right`时,它会从正常的文档...
因此,我们需要“清除浮动”或者说“闭合浮动”,以确保容器能够正确包裹其内的浮动元素。常见的清除浮动方法包括: 1. 添加额外的标签:在浮动元素后面插入一个带有`clear:both`样式的空`div`,这样可以创建一个新...
这是最基础的清除浮动方式。通过设置`clear`属性,我们可以指定元素不允许与浮动元素相邻。例如,将`.clr{clear:both;}`应用到元素上,使得这个元素会向下移动,直到它不再与任何浮动元素相邻。下面是一个示例: `...
另一种常用的清除浮动方法是通过设置容器的`overflow`属性为`hidden`或`auto`。这种方法不需要额外的HTML标记,而且兼容性良好,但在某些老版本的IE浏览器中可能需要加上`*zoom:1`来触发“hasLayout”,以确保正确...
为了解决这个问题,开发者通常会采用几种不同的清除浮动(clear float)方法。下面我们将详细探讨这些方法的优缺点。 1. **额外元素法** 这种方法是在浮动元素后面添加一个额外的非浮动元素,如`...
这是最传统的清除浮动方式,通过在父元素上设置`clear: both`,阻止了父元素内的后续元素与浮动元素相邻。但是这种方法需要额外的HTML元素,增加代码复杂性。 ```css .clearfix::after { content: ""; display: ...
5. **使用br标签清除浮动** 通过在浮动元素后面添加带有`clear="both"`属性的br标签,可以达到清除浮动的效果。但这违反了样式和结构分离的原则,不利于代码维护。 6. **使用overflow:hidden** 设置父级元素的...
清除浮动是确保页面布局正常显示的关键,即使在HTML5时代,这一需求仍然存在,因为W3C标准并没有对这一问题进行根本性的改变。 传统的清除浮动方法通常有两种:一是使用额外的HTML标签,如`<br clear="all">`或添加...
下面我们将详细讨论几种常见的清除浮动的方法。 1. **添加空元素**: 这是最传统的方法之一,即在浮动元素之后添加一个空的HTML元素,如`<div>`,并为其设置CSS样式`clear:both`。这将迫使该空元素下方的任何内容...
清除浮动主要有以下几种方式: 1. **添加空` `标签**:在所有浮动元素之后插入一个空的` `标签,由于` `具有清除浮动的特性,可以解决溢出问题。但这并不是一个最佳实践,因为它引入了额外的HTML标记,...
清除浮动是指在浮动元素后面添加一个清除浮动的元素,以避免浮动元素对其他元素的影响。清除浮动的方法有多种,如 `clear: both`、`overflow: hidden` 等。 小结: 浮动是 CSS 中的一种基本布局方式,用于实现网页...
以下是几种常见的清除浮动方式及其优缺点: 1. **clear属性**:通过在后续元素上应用`clear`属性,可以防止该元素与前面的浮动元素相邻。`clear: left`表示不允许左侧有浮动元素,`clear: right`不允许右侧有浮动...
Flexbox提供了一种更加灵活且易于控制的布局方式,而Grid则为二维布局提供了强大的工具。不过,浮动仍然在某些特定场景下有其用武之地,尤其是在兼容旧版浏览器时。 6. **实际应用示例** - 图片与文本的环绕:将...