`

CSS之使用clearfix清除浮动

    博客分类:
  • css
 
阅读更多

block一般一个块占一行,除非float
inline是自动排为一行,就象段内的文字一样,可成为多行。

clear:both
语法:clear : none | left |right | both 
none :  允许两边都可以有浮动对象
both :  不允许有浮动对象
left :  不允许左边有浮动对象
right :  不允许右边有浮动对象
说明:该属性的值指出了不允许有浮动对象的边。请参阅float属性。

 

!important 具有优先权,提升指定样式规则的应用优先权。
示例:div { color:red!important }

 

display:inline|block
display:inline比较经典的用法是用在 <ul> 下的 <li> 中
display:inline 对应不显示为 display:none
display:block 对应不显示为 hidden
 说通俗点样式为none的元素不占位置,而样式为hidden的元素虽然不显示但还是占地方

 

1.传统处理方式:   
li {float:left;}/*这样,对固定宽度导航条来说,li不能自动居中*/

2.inline-block方式:
ul {text-align:center;font-family:simsun;font-size:14px;}
li {display:inline-block;*display:inline;zoom:1;margin-right:-0.5em;
 *margin-right:0;}
a{display:block;}
/*行内显示并且水平居中;
display:inline;zoom:1;是对ie的hack,
margin-right:0.5em是对现代浏览器去缝
*/


浏览器FireFox,Chrome下,li之间有缝隙,Google得知缝隙由字体大小产生,所以另外加入hack来除缝
关于zoom:1;的作用,可以看下帮助文档,地址:http://www.yesky.com/imagesnew/software/css/css2/c_zoom.html
而这两种实现方法中,float:left要比display:inline;的表现方式要好。因为内联(display:inline;)

属于行布局,其特性是在一行里进行布局,所以不能被设定宽高。块级元素的布局相对于内联样式要精
确的多。所以尽量使用float:left;
当我们使用float:left后,发现父级元素的div没有被撑开了. 通常情况下要清理浮动.这也是我们公司现在所使用的方法. 如

 

<div>
      <ul style="float:left">
           <li><a href="#">1</a></li>
           <li><a href="#">2</a></li>
           <li><a href="#">3</a></li>
      </ul>
       <!--需要清理浮动-->
       <div style="clear:both"></div>
</div>

 用了很久这样的方法,每次写Repeater绑定的时候都要加个<div style="clear:both"></div>的标签,以
前没有注意到这方面的东西.今天重新写样式的时候,就上网搜了下替代的方法.果然在Google中搜到了一
篇How To Clear Floats Without Structural Markup的文章,灵活的处理了清空浮动的问题
首先设置代码为:

.clearfix:after {
  content:".";
  display:block;
  height:0;
  clear:both;
  visibility:hidden;
}
这样我们只要对父级div引入这个clearfix的类即可,即

 

<div class="clearfix" >
      <ul style="float:left">
           <li><a href="#">1</a></li>
           <li><a href="#">2</a></li>
           <li><a href="#">3</a></li>
      </ul>
</div>

 这个css的原理是经过使用after伪对象,它将在应用clearfix的元素结尾添加content中的内容,也就是一
个".",并且把他设置为块级元素(display="block");高度设置为0,clear="both",然后将其内容隐藏掉
(visibility="hidden").这样就会撑开此块级元素.
但是,IE并不支持.所以如果你需要兼容IE浏览器的话,可以设定以个Hack.

 

 .clearfix:after {
    content:".";
    display:block;
    height:0;
    clear:both;
    visibility:hidden;
}
 
* html .clearfix {zoom:1;}
这样我们就可以只在父级div引用class类解决了繁琐的清空步骤.
下面给出别的网站清空浮动的代码:
/* 豆瓣的clear both方式 */
.clearfix:after {
content: “.”;
display:block;
height:0;
clear:both;
visibility:hidden
}
.clearfix {
zoom: 1;
display: inline-block;
_height: 1px
}
*html .clearfix { height: 1% }
*+html .clearfix { height: 1% }
.clearfix { display: block }

CSS hack 用来让网页兼容各种浏览器(在各种环境下都能“正确的”显示)
*+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html又为IE7特有标签.

/*虾米的方式*/
.clearfix:after{
content:”.”;
display:block;
height:0;
clear:both;
visibility:hidden;
}

 

直接copy下bootstrap里面的clearfix写法:
    .clearfix {
      *zoom: 1;
    }

    .clearfix:before, .clearfix:after {
      display: table;
      line-height: 0;
      content: "";
    }

.clearfix:after {
  clear: both;
}

.clearfix{zoom:1;}

在一个有float 属性元素的外层增加一个拥有clearfix属性的div包裹,可以保证外部div的height,即
清除"浮动元素脱离了文档流,包围图片和文本的 div 不占据空间"的问题。
看到”闲聊CSS之关于clearfix–清除浮动“ (http://www.indievox.com/e2ghost/post/50238)的文章给
了一个比较清晰的分析:

构成Block Formatting Context的方法有下面几种:
    float的值不为none。
    overflow的值不为visible。
    display的值为table-cell, table-caption, inline-block中的任何一个。
    position的值不为relative和static。
很明显,float和position不合适我们的需求。那只能从overflow或者display中选取一个。
因为是应用了.clearfix和.menu的菜单极有可能是多级的,所以overflow: hidden或overflow: auto也不

满足需求
(会把下拉的菜单隐藏掉或者出滚动条),那么只能从display下手。
我们可以将.clearfix的display值设为table-cell, table-caption, inline-block中的任何一个
但是display: inline-block会产生多余空白,所以也排除掉。
剩下的只有table-cell, table-caption,为了保证兼容可以用display: table来使.clearfix形成一个Block Formatting Context因为display: table会产生一些匿名盒子,这些匿名盒子的其中一个(display值为table-cell)会形成Block Formatting Context。这样我们新的.clearfix就会闭合内部元素的浮动。

这就是为什么选择display:table的原因。

 

 

firefox不支持float:right

 

<button class="vjs-fullscreen-control vjs-control vjs-button" 
type="button" aria-live="polite" title="Fullscreen" 
aria-disabled="false"></button>
<div class="vjs-volume-menu-button vjs-menu-button 
vjs-menu-button-inline vjs-control vjs-button  
vjs-volume-menu-button-horizontal vjs-vol-3" 
title="Mute" aria-disabled="false"></div>

 

 

/********replace float:right********************/
.vjs-default-skin .vjs-volume-menu-button{
  position:absolute;
  right:0;
  top:0;
  margin-right: 4em;
}

.vjs-default-skin .vjs-fullscreen-control{
  position:absolute;
  right:0;
  top:0;
}

/*.vjs-default-skin .vjs-volume-menu-button{
  float:right;
  margin-right: 4em;
}

.vjs-default-skin .vjs-fullscreen-control{
  float:right;
}*/
/*******replace float:right*********************/

 

分享到:
评论

相关推荐

    CSS中使用clearfix清除浮动的方法

    然后,随着CSS技术的进步,人们发明了clearfix方法,它允许我们在不添加额外HTML元素的情况下清除浮动。原始的clearfix方法如下: ```css .clearfix:after { visibility: hidden; display: block; font-size: 0;...

    css中3种清除浮动方法

    总结来说,CSS中的清除浮动有多种方法,包括传统的`clearfix`方法、使用`:clearfix`伪类和采用Flexbox布局。选择哪种方法取决于项目的需求,如兼容性、代码简洁性和布局复杂性等因素。理解这些方法的原理和应用场景...

    css中clearfix清除浮动的用法及其原理示例介绍

    在CSS布局中,`clearfix`是一个常见的解决方案,用于清除浮动元素带来的影响,防止父元素因浮动元素而高度塌陷。`clearfix`方法的出现,主要是为了处理传统浮动布局(如左侧导航和右侧主要内容)中,父容器无法包含...

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

    本文主要是讲解如何在 html 中使用 clearfix 和 clear,针对那些刚开始了解 css 的童鞋。关于 clearfix 和 clear 的样式在这里我就不写了。 下面就谈谈对于这两个 class 的用法,首先我们先看个例子: XML/HTML Code...

    css hack之清除浮动(clearfix)

    但这样增加了页面的结构的源代码,造成代码的拥肿,其实也可以有更好的办法, 在浮动元素的外包clearfix样式 复制代码代码如下: ”clearfix”&gt; ”fl”&gt;&lt;/div&gt; ”fr”&gt;&lt;/div&gt; &lt;/div&gt; .clearfix:after{ visibility:...

    css清除浮动clearfix:after的用法详解(附完整代码)

    为了解决这个问题,我们可以使用CSS的clearfix技术,特别是通过`:after`伪元素来清除浮动。 `:after`伪元素是CSS中的一种特殊选择器,它用于在元素的内容之后插入内容。在清除浮动的上下文中,`:after`伪元素通常被...

    css清除浮动的方法有哪些?.docx

    CSS清除浮动是为了应对浮动元素对周围元素布局的影响,特别是防止父元素因子元素浮动而高度塌陷的问题。在Web开发中,有多种方法可以清除浮动,以下将详细介绍四种常见的清除浮动的方法。 一、使用带有`clear`属性...

    CSS清除浮动 clearfix:after 使用技巧及兼容Firefox等符合W3C标准的浏览器

    `clearfix`方法是一种非侵入式的清除浮动方式,它允许父元素自动扩展以包含其浮动的子元素,而无需在HTML中添加额外的元素或者使用`clear:both`属性。这里我们将详细介绍`clearfix:after`的使用技巧以及如何实现跨...

    CSS清除浮动_2种方法源代码.zip

    `clearfix` 类是最常用的清除浮动方法之一,它并不需要添加额外的HTML元素,而是利用CSS伪类来解决。这种方法适用于那些不支持CSS3的旧版浏览器。以下是`clearfix`类的源代码: ```css .clearfix:after { content:...

    xhtml+css清除浮动的3种方法

    最后一种方法是使用CSS伪元素`::after`来创建一个不可见的元素,用于清除浮动。这种方法可以避免添加额外的标签,并且能够很好地兼容现代浏览器。示例代码如下: ```css .clearfix::after { content: "."; ...

    浅谈css中浮动和清除浮动带来的影响

    1. **隔墙法**(clearfix):在需要清除浮动的元素前添加一个无内容的空元素,如`&lt;div class="clearfix"&gt;&lt;/div&gt;`,并为`.clearfix`类设置样式`clear: both;`。这种方法在早期被广泛应用,但现在已逐渐被更现代的解决...

    css如何清除浮动常用的方法有哪些

    另外,使用CSS3的伪元素`:after`,可以创建一个不可见的内容区域,同样达到清除浮动的目的: ```css .clearfix:after { content: ''; display: block; clear: both; visibility: hidden; height: 0; } ```...

    css清除浮动

    ### CSS清除浮动详解 #### 一、引言 在网页设计与前端开发中,CSS(层叠样式表)是用于定义HTML文档外观的关键技术之一。其中,“清除浮动”是一项非常重要的概念,它解决了布局中常见的一个问题——即由于元素...

    CSS:清除浮动的最优方法

    另外,文中还提到了一种名为`clearfix`的清除浮动方法,它利用CSS伪元素`:after`和`clear:both`来创建一个看不见的元素来清除浮动,这种方法适用于不支持`overflow`属性清除浮动的旧版本浏览器。 总的来说,`...

Global site tag (gtag.js) - Google Analytics