快速业务通道

CSS box-align: center实现子框架居中

作者 佚名技术 来源 CSS技术 浏览 发布时间 2012-02-24

有时我们需要令一个宽度固定的容器里的子框架居中(例如一个 Div ,或者其他 block 级元素),如果子框架只有一个的话,我们只需要为子框架加上 CSS 属性 margin: auto 就可以了。

但如果我们要让多个子框架居中,并且等分父框架剩余的空间的话,我们对所有子框架使用 CSS box-align: center 来实现这种效果。

可是目前还有相当一部分主流浏览器不支持 box-align 属性,那么我们应该如何编写 CSS,使这种效果能兼容大部分的浏览器呢?

通常的方法
为了使多个 block 级元素排列在同一行里,我们习惯使用 float 属性使子框架浮动,然后利用 margin 属性让每一个子框架之间都留出一些空白的间距。可是这样做会触发经典的 IE6 双倍 margin BUG,这样反而要投入额外的时间去调试 IE6 的 Hack。

虽然我们还可以通过 display: inline 来避开 IE6 的 BUG,但我们仍然需要调整这些子框架间的间距,防止最后一个自框架被挤到下一行。

改变子框架级别并且控制剩余的空白

使用 float 和 margin 来让多个子框架居中并且等分父框架剩余空间的做法缺点很多。为了避开这些缺点,我们还可以使用另一种方法:把子框架的级别改为 inline-block ,并且通过 letter-spacing 属性 控制自框架之间的间距。

假设在一个父框架里有四个 block 级的子容器,每个子容器的大小均为 100px x 100px。为了让这些子框架能排列在同一行内,我们可以把它们改为 inline-block 级,由于子框架和父框架之间并没有其它的内容,应此要控制子框架的空间分配将易如反掌。姑且假设父框架 id=parent,子框架 class=child,那么 CSS 可以这样写:

以下为引用的内容:

#parent {
	width: 615px;
	border: solid 1px #aaa;
	text-align: center;
	font-size: 20px;
	letter-spacing: 35px;
	whitewhite-space: nowrap;
	line-height: 12px;
	overflow: hidden;
}
.child {
	width: 100px;
	height: 100px;
	border: solid 1px #ccc;
	display: inline-block;
	vertical-align: middle;
}

在这段样式里,#parent 的 text-align、letter-spacing、white-space、overflow 和 .child 的 vertical-align、display 这些属性是实现预想效果的关键,下面解释一下这些属性起了什么作用。

text-align:使 #parent 里的所有内容都居中

letter-spacing:控制每个子框架之间的空白大小

white-space: nowrap:防止最后一个子框架

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号