`
PatrickZhong
  • 浏览: 12177 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

[译][部分][clear float]不通过添加额外标签来清除浮动

阅读更多
这些天看了些CSS方面的书,做了些笔记,做个记录并且share一下

前言:原文在这里 http://positioniseverything.net/easyclearing.html
看懂英文和译成汉语完全是两码事儿啊, 翻译的各种不专业, 并且只译了和标题有关的部分内容(米有精力能力通篇来啊), 但是我没翻译的内容也非常重要! 都是一些issue啊, 技巧神马的, 有时间最好看看.

正文:
---------------------
clear float的老办法

当一个带有可见边框/背景图的容器框内包含一个float元素的时, 就算float元素会因为过高以至超出了容器的下边框线, 那么float元素也不会自动向下调节容器的下边框来让其包围下自己. 而是无视外面容器, 像一面旗子一样挂下来(PS. 想像旗杆是横着的...).只熟悉IE的人就会说了"不是这样的!" IE能所谓'自动的'把float元素包含进它的容器内, 但是容器必须要带有只有IE才能识别的属性hasLayout.

IE的这个功能在鼠标悬停在容器内的link上时也可能暂时失效, 如果鼠标悬停改变了link的背景或其它CSS属性的话. 挺乱, 我们在后面的"Toggle Trouble"部分讨论它.

W3C建议在容器最后放一个定义了"cleared"的标签, 这样容器的高度就会改变来把 "cleared" box 上面的float元素给容纳进去.
引用
"..我们给一个标签clear属性,{ clear: both; }.这样就会增加它的上边距,使它往下移动直到移出上边float元素的底边框.换句话说, 浏览器会增加这个标签的margin-top值(不管它被定义成了多少)直到让这个cleared box位于float元素的下面."

所以这样的cleared box必须在float元素的下面.

外部容器包含内部的float标签的标准方法就是在其最后加一个定义了"cleared"的标签, 这样做的效果就像是把容器的下边框线拽到了 float 标签的下边. 这样, float标签看上去就像是被容器包围进去一样. cleared box代码通常如下:
<div> <!-- float container -->
  <div style="float:left; width:30%;"><p>Some content</p></div>
  <p>Text not inside the float</p>
<div style="clear:both;"></div>
</div>

这种方法带来的问题

第一并且最主要是,要求添加一个额外的标签到代码里,这办法一点也不直观. 且CSS的主要作用就是用来减少HTML代码的臃肿. 所以用增加HTML代码来实现把float包含进它们的容器中不是一个好主意.
并且,有些浏览器处理clear元素也可能出问题, Mozilla特别容易受影响.
一直以来都没有啥好的解决办法, 但是现在有了!感谢Tony Aslett, csscreator.com的主人, 在非IE浏览器里用高级CSS来清除float并且保持在IE里其自己的处理方法.我们可以选择不用那种烦人的让HTML代码里添加clear标签的办法啦!

"Clearing", 21世纪流行款式~(^.^)

新的方法中不用添加clear的标签. 并且它只针对非IE浏览器有效, 不会影响IE自己处理float元素的方法.

使用 :after

这个CSS 2属性允许你通过CSS在一个元素的末尾添加内容.相当于不用在HTML中加额外的标签. 添加的内容在CSS样式表里被指定, 显示在页面上时就像插入了一个正常的HTML标签一样. 由 :after 插入的内容不能指定某些CSS属性, 包括position, float, list 属性, 和 table 属性. 然而 clear 属性是允许的.

设想我们用:after插入一个简单的字符比如说一个'句号', 然后定义它{clear: both;}.就样就可以了, 不过没人想在最下面留一个空行来弄乱容器, 所以我们使用了{height: 0;}和{visibility: hidden;}来不显示我们加的'句号'.
.clearfix:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}

注意{display: block;}也得有, 因为如果不加的话, 元素默认为是inline, inline元素是没有clear属性的.Tony的原始代码里也用了{overflow: hidden;}来隐藏'句号', 但悲剧的是最新的火狐浏览器还是会显示出'句号'.

IE怎么办?

由于IE7还不支持:after伪类, 只能依靠IE6的"自动清除float"功能, 但是要包含浮动元素的容器带有hasLayout属性. 简单定义{zoom: 1;}就可以了.并且要将其隐藏.
分享到:
评论

相关推荐

    css,float,clear

    我对css几个主要属性的理解,inline,block,float,clear

    css中3种清除浮动方法

    css中3种清除浮动方法css中3种清除浮动方法

    CSS的clear属性清除浮动的基本用法示例

    清除浮动就是指解决浮动元素溢出容器的操作,其方法多种多样,这里我们来看最基本的一种:CSS的clear属性清除浮动的基本用法示例

    zcxiaobao#everyday-insist#css清除浮动的几种方法(2020.01.08)1

    分析:清除浮动大致有两种方案:clear、触发 BFC额外标签法: 在浮动元素平级的最后面添加额外元素,例如:&lt;div class="clearfix"&gt;&lt;/d

    详解css清除浮动float的七种常用方法总结和兼容性处理

    在清除浮动前我们要了解两个重要的定义: 浮动的定义:使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。 高度塌陷:浮动元素父元素...1、clear清除浮动(添加空div法) 在浮动元素

    详解利用clear清除浮动的一些问题解决

    下面这段代码是用来清除浮动带来的高度塌陷问题 .clearfix:before { content: "."; display: block; height: 0; clear: both; visibility: hidden; } Question 1: 上面的代码的能够实现清除浮动的问题吗? ...

    css别忘记清除浮动clear:both

    总结下清除浮动的一般解决方案,做网页时要注意

    清除浮动clear:both的应用详解

    当属性设置float(浮动)时,其所在的物理位置已经脱离文档流了,但是大多时候我们希望文档流能识别float(浮动),或者是希望float(浮动)后面的元素不被float(浮动)所影响,这个时候我们就需要用clear:both;来...

    .clear 万能清除浮动(clearfix:after)

    一般情况下: 复制代码代码如下:html body div.clear,... float: none; font-size: 0; margin: 0; padding: 0; overflow: hidden; visibility: hidden; width: 0; height: 0;} 还有一种是 复制代码代码如下:.clearfix:a

    浅谈css清除浮动(clearfix和clear)的用法

    关于 clearfix 和 clear 的样式在这里我就不写了。 下面就谈谈对于这两个 class 的用法,首先我们先看个例子: XML/HTML Code复制内容到剪贴板 &lt;!DOCTYPE HTML&gt;  &lt;html lang="en-US"&gt;  &lt;head&gt;...

    前端学习clear清除

    前端clear清除

    学习笔记18:CSS清除浮动

    清除浮动的方法 1、额外标签法(隔墙法): 在浮动元素末尾添加一个空的标签,例如 优点:通俗易懂,书写方便 缺点:添加许多无意义的标签,结构化较差 :warning_selector::新添加的标签必须为块级元素 2、父级...

    css 的 float 与clear

    NULL 博文链接:https://ywzqzhangjiawei.iteye.com/blog/1490877

    jquery标签

    2.跟在浮动元素(float)之后的元素会围绕着浮动元素,如果不希望有这种围绕,可以在浮动元素之后的那个元素上定义clear属性,来清除这种效果。 3.实现当前标签和内容区域的融合,可以通过使用相同的背景色,外加...

    CSS 清除浮动Clear

    课程关键词:清除浮动Clear.

    方正还原卡彻底清除程序CLear.zip

    正常情况下可以通过控制面板中的“添加/删除程序”或者实模式 HOME 界面中的“卸 载”功能卸载保护卡驱动并清除其写在硬盘上的数据。 如果无法正常卸载,则使用 clear 清除工具进行卸载。 BIOS 版软保护卡, 如果...

    css清除浮动的几种方法以及对应规范说明

    所以适用于浮动元素后面容器之内有个非浮动元素,或是额外添加一个新的空元素。 2、.after-clear-float :after{content:; display:block; clear:both;}利用伪类添加新元素,原理同上,所以只适用于父容器最后一级子...

    Dreamweaver怎么使用clear清除浮动?

    Dreamweaver怎么使用clear清除浮动?Dreamweaver中想要清除清除浮动命令,该怎么使用呢?下面我们就来详细介绍clear清除浮动的使用方法,需要的朋友可以参考下

    浅谈CSS中的clear清除浮动

    2、一开始在CSS中clear浮动是默认both,也就是说一开始不能有浮动的。 3、使用的案例:假设我清除第三个DIV的浮动 XML/HTML Code复制内容到剪贴板 &lt;style type=text/css&gt;  div{ border:1px solid red;...

Global site tag (gtag.js) - Google Analytics