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*********************/