本系列内容由ZouStrong整理收录
整理自 《写给大家看的CSS书(第2版)》、《CSS权威指南(第3版)》、《精彩绝伦的CSS》、《精通CSS:高级Web标准解决方案(第2版)》、CSS参考手册 css.doyoe.com
示例:
p {float:left;}
示例:
p {clear:both;}
当元素未设置高度时,元素的高度由其子元素或者文本内容决定
当子元素浮动时,子元素脱离了常规文档流,父元素就不能被撑开了,父元素下边的其他元素也会跟着向上“浮”, 占据上面的子元素应该占据的位置,那么,这时就需要清除浮动了
治标不治本,可能会产生新的浮动问题
<div>
<div class="float">浮动元素</div>
<div class="clear"></div>
</div>
.clear {clear : both;}
.clearfix:after { display: block ; content:" " ; clear: both;}
.clearfix{zoom : 1;}
/*IE6,7不支持:after,但只写上zoom就万事大吉了*/
.cont1 {overflow : hidden; width:100%;zoom:1 }
/*width或者zoom出现其一即可,否则IE6不支持(触发IE6的layout)*/
.cont1 {display : inline-block;}
注:最后注意,哪些是应用在父元素上的,哪些是应用在浮动元素本身上的
none:隐藏元素(该元素所占的空间不会保留)
inline:转换为行内元素
block:转换为块级元素
inline-block:转换为行内块级元素
list-item:转换为列表项
table:转换为表格(类似于<table>)
inline-table:转换为表格(类似于<table>)
table-caption:转换为表格标题(类似于<caption>)
table-cell:转换为表格单元格(类似于<td>)
table-row:转换为表格行(类似于<tr>)
table-row-group:转换为表格行组(类似于<tbody>)
table-column:转换为表格列(类似于<col>)
table-column-group:转换为表格列组(类似于<colgroup>)
table-header-group:转换为标题组(类似于<thead>)
table-footer-group:转换为表格脚注组(类似于<tfoot>)
run-in(CSS3):根据上下文决定元素是行内还是块级
box(CSS3):将对象作为弹性伸缩盒显示(最老版本)
inline-box(CSS3):将对象作为行内块级弹性伸缩盒显示(最老版本)
flexbox(CSS3):将对象作为弹性伸缩盒显示(过渡版本)
inline-flexbox:(CSS3)将对象作为行内块级弹性伸缩盒显示(过渡版本)
flex(CSS3):将对象作为弹性伸缩盒显示(最新版本)
inline-flex(CSS3):将对象作为内联块级弹性伸缩盒显示(最新版本)
display改变的只是元素的显示角色,而不是本质
inline-block值得一提,inline-block到底是行内还是块级呢?
可以这样理解:当对inline-block本身应用样式时,它就相当于块级元素,因此可以使用text-indent,text-align、width,height等
当被作为内容应用样式时,例如在父元素上,它就相当于行内元素,因此可以被text-align或者vertical-align控制
当使用JS将元素设置为不可见,又怎么让它按照原来的元素形态显示呢?
div.style.display="none";
只需不指定任何值即可
div.style.display=""; /*恢复元素本来形态*/
与display属性不同,设置元素不可见时,元素占据的位置将会保留
但,与display:none相同的是,两者对于屏幕阅读器来说都是不可见的
所以如果仅仅是为了隐藏某些不希望被看到的元素,但是可以被屏幕阅读器看到,就可以
position:absolute;
left:-10000em;
top:-10000em;
定位决定了元素在页面上的位置,所有元素都有position属性
静态定位(所有元素的默认方式),元素遵循常规文档流
相对定位,元素遵循常规文档流,并且参照定位环境(自身)通过left、right、top、bottom属性来调整元素位置
其默认的位置仍然保留,并且其移动不影响常规流中的其他元素
绝对定位,元素脱离常规文档流,并且参照定位环境(见下面)通过left、right、top、bottom属性来调整元素位置
其默认的位置不再保留,就好像该元素不存在一样,并且其移动不影响常规流中的其他元素,其margin也不与其他margin折叠
使用了absolute值,相当于对元素设置了display : block(类似于float)
对于绝对定位来说,定位环境就是设置了position属性(static值除外)的最近的祖先元素,如果都没有设置,则定位环境是body元素
固定定位的表现完全相同于绝对定位,唯一不同的就是定位环境是浏览器窗口本身
四个值是可以同时使用的,例如当元素宽高未定义时,同时使用这四个值,将会隐式决定元素的宽高
left:0; right:0; top:0;bottom:0; /*把一个未定义宽高的元素,拉伸为与定位环境同宽高*/
left:0; right:50%; top:0;bottom:0; /*把一个未定义宽高的元素,拉伸为与定位环境半宽同高*/
如果设置了宽度和高度,同时使用四个值时,则会忽略right和bottom值
元素绝对定位和固定定位时,如果除bottom以外的任意偏移值设置为auto,会有一种特殊的行为,那就是设置为auto的值,会相对于自己以前的位置来定位(其实就是位置不变,但是移出了文档流)
绝对定位和固定定位的元素,水平居中,仅仅使用margin:0 auto;已经不行了,还应该将left和right设为两个相同的值(只要这两个值和绝对定位元素所占的宽度加起来小于定位环境的宽即可)
垂直居中的话,只要使用margin:auto 0; 然后将top和bottom设为两个相同的值即可
margin:auto; left:0; right:0; top:0;bottom:0;
/*垂直水平全居中,IE6/7不支持*/
绝对定位的元素在top,right,bottom,left属性未设置时,会紧随在其前面的兄弟元素,但不影响常规流中的任何元素,所以可用来做时间紧随标题效果
a {float: left;margin-right: 100px; }
span {position: absolute;margin-left: -100px;}
定位元素的层叠顺序,默认是按照元素在文档中出现的顺序决定,后出现的元素覆盖在先出现的元素上
z-index用于确定元素在当前层叠上下文中的层叠级别,并确定该元素是否创建新的局部层叠上下文
每个元素层叠顺序由所属的层叠上下文和元素本身的层叠级别决定(每个元素仅属于一个层叠上下文)
同一个层叠上下文中,层叠级别(即z-index属性值)大的显示在上面,反之显示在下面
同一个层叠上下文中,层叠级别相同的两个元素,依据它们在HTML文档流中的顺序,写在后面的将会覆盖前面的。
不同层叠上下文中,元素的显示顺序依据祖先的层叠级别来决定,与自身的层叠级别无关。
当z-index未定义时,在IE6,7下会创建新的局部层叠上下文,而在高级浏览器中,按照规范不产生新的局部层叠上下文
作用:设置元素的可视区域
默认值:auto
适用于:绝对定位和固定定位元素
继承性:无
动画性:有
取值:auto、rect(top,right,bottom,left)、inset()
作用:设置元素的可视区域
默认值:auto
适用于:绝对定位和固定定位元素
继承性:无
动画性:有
取值:auto、rect(top,right,bottom,left)、inset()