CSS高级技巧:网页布局

2020-05-09 06:46:54易采站长站整理

但是要使容器垂直居中的话, 那就比较复杂了.

HTML如下:

<body>
<div class="wrapper">
<div id="box">123</div>
</div>
</body>

CSS如下:

body{margin:0;padding:0;height:100%;}
.wrapper{display:table-cell;vertical-align:middle;width:600px;height:400px;border:solid 1px red;}
#box{width:200px;margin:auto;vertical-align:middle;border:solid 1px blue;}

按理说这样就可以了呀, 但是IE下面一点效果都没有…那是因为IE的display属性只接收:block, inline, inline-block, none, inherit, 不接收table, table-cell, table-row, 那就头痛了呀.

唔, 其实思路有很多, 我提供其中一种:

CSS如下:

body{margin:0;padding:0;height:100%;}
.wrapper{width:600px;height:400px;border:solid 1px red;}
#box{width:200px;height:200px;position:relative;top:50%;left:50%;margin-top:-100px;margin-left:-100px;border:solid 1px green;}

局限性非常大, 必须要已知高度…

更可以对IE浏览器进行filter之后hack它. 使用ie独有的expression, 虽然在大型脚本上expression表现的相当差, 但是简单的计算offsetHeight还是不太会影响性能, 再怎么说M$也针对expression进行过优化.

所以垂直居中还是要看场合自行挑选合适的方案来解决.

浮动布局

现在大家都熟知浮动布局了, 不多说, 这个是CSS布局的基础…主要是float和margin的合理应用.

Faux Columns:

伟大的Dan的另一项发明, 呵呵, 其实很简单, 用垂直平铺背景图来做出视觉上多栏布局等高的效果. 但是很实用, 不是吗?

Equal height boxes with CSS:

在标准推行过程中比较有名的文章之一, 介绍像table一样进行CSS布局, 但是不适用于IE…唉

弹性布局

很不错的理念, 原理其实也不难, 就是用em来标注尺寸, 这样就可以让浏览器自行放大或缩小任何的容器或是元素了.

下一篇CSS教程 文章:CSS高级技巧:阴影效果