css盒子
2013-03-30 16:03 king0222 阅读(208) 评论(0) 编辑 收藏 举报css盒子
一,盒子尺寸
前端开发在写布局的时候常常会碰到这样一种情况,我们希望设置一个元素的宽度为100%,但是他仍然有内边距或外边距的应用。在使用传统的盒模型时,CSS使用父元素的宽度计算百分比宽度,然后再加上外边距和内边距。换句话说,100%宽度的元素加上内边距和外边距就会产生溢出现象。因此,我们可以将box-sizing设置为border-box,而不是原来默认的content-box,这样就可以改变计算尺寸的方式,边框,内边距,外边距都将计算在内。但是这种用法在IE8以前的版本是不支持的,除非你打算放弃兼容这些让人厌恶的IE浏览器。用法如下:
.border-box{ -webkit-box-sizing:border-box; -moz-box-sizing:border-box; box-sizing:border-box; }
二,弹性盒模型
这个东西是我们日夜期待的特性,因为我们总希望我们的块能够在宽度和高度上自动延伸。因此CSS3引入了弹性盒模型的概念,如果你用过或者懂得EXT,那么这里的用法你将会感觉相当熟悉。首先,我们的父元素需要设置为BOX状态:
.hbox{ display:-webkit-box; -webkit-box-orient:horizontal; -webkit-box-align:stretch; -webkit-box-pack:left; display:-moz-box; -moz-box-orient:horizontal; -moz-box-align:stretch; -moz-box-pack:left; } .vbox{ display:-webkit-box; -webkit-box-orient:vertical; -webkit-box-align:stretch; display:-moz-box; -moz-box-orient:vertical; -moz-box-align:stretch; }
父容器设置完成后,我们就可以在子容器中相应的设置其所占据的空间了,用flex就可以非配其空间大小,如果已经有一个固定的宽度或高度值,则将它的flex设置为0:
#sidebar{ -webkit-box-flex:0; -moz-box-flex:0; box-flex:0; width:200; } #content{ -webkit-box-flex:1; -moz-box-flex:1; box-flex:1; }