CSS中 Float 的 clear:both 无效的解法

CSS 对於 Float 的 clear:both 每年都会有新的写法. XD

2008、2010 年的 clear:both 写法

不过, 在今年看到此篇: Best Cross-browser CSS Clearfix solution, 跟上述那篇比对起来, 参数多增加了几个, 到底有何差异, 就不细究了~ 直接用就对了. XD

CSS 的 float 使用起来蛮方便的, 但是使用完后, 那块空间就等於是消失, 所以需在下面加 clear:left / clear:right / clear:both (我通常都直接 clear:both 就是了~), 但是有时后会遇到写 clear:both, 但是没有任何作用的状况.

这篇文章也是早就想写, 正好看到 「修正因? float 导致区块无法撑开的问题」 这篇, 该说明的都说很齐全, 所以直接来写写结论就好了~~ 

我现在 CSS 都会规画一个 "/* common */" 的区块, 那边就会定义一些共用的 class, 和 clear 相关的就是下述:

 代码如下 复制代码

.clear {zoom:1; clear:both;}
.clear:after {content:''; display:block; clear:both; visibility:hidden; height:0;}

主要就是这两段, 遇到 float 完后, 要清除的地方, 写个 <p class="clear"></p> 就可以了~ 

不过, 上述的第一段 ".clear {}" 这段, 有些人是不用加的, 或者只有写 ".clear{zoom:1;}" 而已, 但是我使用起来就是有些问题, 所以还是把 "clear:both;" 都加上去.(跟下述的写法有些不同的地方, 我现在也解释不出来, 总之先都记著, 遇到或许就知道了.. XD)

想知道?楹我?茨屈N多东西, 请参照下述两篇:

■如何修正 DIV float 之后导致的外部容易不能撑开的问题
■How To Clear Floats Without Structural Markup(Clearing a float container without source markup)
直接摘取他们的结论, 就是加 clearfix 的 class 即可, 跟我上面目前用的有点不同, 但是差异我现在还不清楚, 要再测试看看, 他们的写法应该周全很多:

 代码如下 复制代码

.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

.clearfix {display: inline-block;}

/* Hides from IE-mac */
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */

CSS .clearfix 写法 (摘录自上述: Best Cross-browser CSS Clearfix solution)

 

 代码如下 复制代码
.clearfix:after {
   content: ".";
   display: block;
   clear: both;
   visibility: hidden;
   line-height: 0;
   height: 0;
}
 
.clearfix {
   display: inline-block;
}
 
html[xmlns] .clearfix {
   display: block;
}
 
* html .clearfix {
   height: 1%;
   overflow: visible;
}

2011 年到了, 今年的解法可见此文: A new micro clearfix hack # 下述取自此文

 

 代码如下 复制代码

/* For modern browsers */
.cf:before,
.cf:after {
content:"";
display:block;
overflow:hidden;
}

.cf:after {
clear:both;
}

/* For IE 6/7 (trigger hasLayout) */
.cf {
zoom:1;
}

时间: 2024-10-26 06:18:35

CSS中 Float 的 clear:both 无效的解法的相关文章

用CSS的float和clear创建三栏液态布局的方法

clear|css|创建 三栏布局是目前最常见的网页布局,主要页内容放在中间一栏,边上的两栏放置导航链接之类的内容.基本布局一般是标题之下放置三栏,三栏占据整个页面的宽度,最后在页的底端放置页脚,页脚也占据整个页面宽度.  绝大多数网页设计者都熟悉传统的网页设计技术,用这些技术可以生成带有表格.创建固定宽度布局或者"液态"(它可以根据用户浏览器窗口宽度自动伸缩)布局的网页. 现在,我们都开始抛弃基于表格的布局技术,许多网络设计者正在从XHTML标记和CSS格式这一新范例中寻找创建三栏布

css中float left与float right clear的原理使用说明图解

点评:CSS中很多时候会用到浮动来布局,也就是经常见到的float:left或者float:right,简单点来说,前者是左浮动(往左侧向前边的非浮动元素飘,全是飘得元素的话,就按照流式来浮动从左到右,放不下则换行),后者是右浮(往右飘)动.但仅仅是如此吗?-No! 要注意以下几点: 1. 浮动元素会被自动设置成块级元素,相当于给元素设置了display:block(块级元素能设置宽和高,而行内元素则不可以). 2. 浮动元素后边的非浮动元素显示问题. 3. 多个浮动方向一致的元素使用流式排列,

CSS中Float概念相关文章采撷

css|概念 Float(浮动)概念也许是CSS中最让人迷惑的一个概念吧.Float经常被错误理解,而且因为将上下文元素全部浮动导致的可读性.可用性问题备受责难.然而,这些问题的根源并不在于理论本身,而是开发人员以及浏览器对理论的解读造成的. 如果你认真的去读一下浮动概念,你会发现并不像所见的那样复杂.大多数问题都是由于老版本的IE带来的(我只是猜想).如果你知道这些bug,你就能避免这些问题. 让我们尝试去解决这些问题并澄清一些以前使用浮动的误解.我们参考了成打的相关文章,并选取了最为重要的一

css 中float后text-align无效解决办法

般写内容居中的时候都会使用text-align:center属性,但是内元素一旦float起来的时候,text-align就会失效. 我们只能其他的方法来达到居中的目的  代码如下 复制代码 <!DOCTYPE HTML> <html lang="en-US"> <head>  <meta charset="UTF-8">  <title>float居中的最佳实践</title>  <st

css中Float属性深入剖析与应用

一.Float的特性 1. 应用于文字围绕图片 2. 创建一个块级框 3. 多列浮动布局 4. 浮动元素的宽度.高度自适应,但可以设置其值. 二.核心解决的问题 文字围绕图片:img标签与多个文本标签放置在一个容器中,如果img浮动,文本标签会围绕图片. <imgsrc="../img/a.jpg"style=" width: 100px; height: 200px; float: left;"alt="">         <

css中解决vertical-align: middle垂直居中无效方法

 div水平居中很容易,设置css样式 text-align: center;  就可以了. 垂直居中也有个属性 vertical-align: middle; 这个属性普通设置是没有效果的. 第一种方法:通过一个空白图片可以达到垂直居中的效果.    代码如下 复制代码 <html>  <title>图片居中</title>  <style> /*定义垂直居中*/ #test * {  margin: 0px;  padding: 0px;  vertic

用CSS的float属性创建三栏布局网页的方法

  三栏布局是最常见的网页布局,主要页内容放在中间一栏,边上的两栏放置导航链接之类的内容.基本布局一般是标题之下放置三栏,三栏占据整个页面的宽度,最后在页的底端放置页脚,页脚也占据整个页面宽度.本文介绍一种用CSS的float和clear属性来获得三栏布局的方法. 绝大多数网页设计者都熟悉传统的网页设计技术,用这些技术可以生成带有表格.创建固定宽度布局或者"液态"(它可以根据用户浏览器窗口宽度自动伸缩)布局的网页. 基本方法 基本的布局包含五个div,即标题.页脚和三栏.标题和页脚占据

详解CSS中clear:left/right的用法

一.理解clear: left/clear: right 当想到clear: left的时候,自然会认为是"清除左浮动",clear: right是清除右浮动. 其实现在想想,这样的理解与表示是不严谨的欠考虑的. 一般,现在中文圈流传的表述是: clear语法: clear : none | left | right | both 取值: none : 默认值.允许两边都可以有浮动对象 left : 不允许左边有浮动对象 right : 不允许右边有浮动对象 both : 不允许有浮动

CSS浮动(float,clear)通俗讲解

  很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多,小菜没有精力从头到尾讲一遍,只能有针对性的讲解. 如果读者理解CSS盒子模型,但对于浮动不理解,那么这篇文章可以帮助你. 小菜水平有限,本文仅仅是入门教程,不当之处请谅解! 本文以div元素布局为例. 教程开始: 首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.