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

内容摘要
一、理解clear: left/clear: right
当想到clear: left的时候,自然会认为是“清除左浮动”,clear: right是清除右浮动。
其实现在想想,这样的理解与表示是不严谨的欠
文章正文

一、理解clear: left/clear: right

当想到clear: left的时候,自然会认为是“清除左浮动”,clear: right是清除右浮动。

其实现在想想,这样的理解与表示是不严谨的欠考虑的。

一般,现在中文圈流传的表述是:

    clear语法:
    clear : none | left | right | both

    取值:
    none : 默认值。允许两边都可以有浮动对象
    left : 不允许左边有浮动对象
    right : 不允许右边有浮动对象
    both : 不允许有浮动对象

w3.org官方的解释是:「元素盒子的边不能和前面的浮动元素相邻」。

我个人觉得官方解释更好一点。

无论是我“清除左/右浮动”,还是业界流传的“不允许左/右边有浮动对象”,其意思都是,设置的clear的元素让浮动元素如何如何。也就是我让别人如何如何~~大家可以仔细体会,细细感受下……

而官方的说法则是“设置了clear的元素不能怎样怎样”。也就是我自己如何如何~~大家可以再次感受下……

为何官方解释更好呢?难道是“己所不欲勿施于人”的缘故?哈,这个解释赞的,方便记忆。更通俗的原因是:

务必记住这句话:“float是魔鬼,会影响其他相邻元素;但是clear是小白,其只会影响自身,不会对其他相邻元素造成影响!”

但是,官方的解释似乎拗口,缺少点灵性。于是,我根据自己的感性认知,做了如下理解:

    clear语法:
    clear : none | left | right | both

    取值:
    none : 默认值。
    left : 左侧抗浮动
    right : 右侧抗浮动
    both : 两侧抗浮动

“抗”这个拟人化的动词的发起者是设置了clear属性的元素,既形象又释义准确。

实例出真知
您可以狠狠地点击这里:demo中有示意:

两个图片实际上都是右浮动(float: right)的,这种情况下,显然,图片会是一行排排站。但是,如果后面一张图片设置了右侧抗浮动声明:clear: right. 则,后面一张图片就会落下来,形成垂直布局;加上自身的浮动特性依旧存在,于是,两张图片犹如一个浮动整体。这就是典型的“垂直环绕布局”。

于是,我们如下HTML以及CSS,就有符合题目要求的新型布局方式啦!

CSS Code复制内容到剪贴板
  1. <div style="width:500px;font-size:12px;overflow:hidden;_zoom:1;">   
  2.     <span style="float:left;width:96px;...">头像</span>   
  3.     <strong style="float:left;clear:left;...">姓名</strong>   
  4.     <p style="margin-left:106px;...">我是一个帅哥……</p>   
  5.  </div>  


至此,三兄弟终于平起平坐啦!


代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!