CSS box

有时我们需要令一个宽度固定的容器里的子框架居中(例如一个 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:防止最后一个子框架被挤到下一行

overflow: hidden:隐藏超出 #parent 范围的内容

vertical-align: middle:使所有子框架都垂直居中

display: inline-block:是所有子框架都排列在同一行,并且保持 block 级元素的特性

兼容 IE

在今时今日,老版本的 IE 浏览器已经成为网页设计师的心头大恨,虽然上面的 CSS 能兼容 IE8,但由于 IE6 和 IE7 并不完全支持 inline-block 级元素,因此我们还需要写下面的一段 Hack,确保在 IE6 和 IE7 里能保持和现代浏览器一致的效果。


以下为引用的内容:

.child {
	*display: inline;
	*margin: 0 20px 0 20px;
}

本文所举例子的最终效果可以看这个 DEMO。

后记

本文所举的例子虽然只有短短的两句 IE Hack,但在实际开发中大家要写的 Hack 肯定要多很多,因此淘汰老版本 IE 的任务已经刻不容缓。我听过很多人说:“我不用 IE 浏览器的,我用傲游和世界之窗”,在这里我提醒一下大家,对这些无法解释清楚的人,我们可以简单地和他们说:“凡是能用支付宝的浏览器都是落后的,请放弃使用。”。

原文地址:http://blog.imbolo.com/center-multiple-divs-with-css/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索框架
, display
, 浏览器
, 属性
, 效果
, inline-block
, 父框架
框架之间
,以便于您获取更多的相关知识。

时间: 2024-11-16 14:50:28

CSS box的相关文章

你可能不知道的7个CSS单位

如果你是一名前端开发工程师,一般px和em使用频率比较高.但是今天本文的重点是介绍一些我们使用很少.甚至么有听说的单位. 一.重温em <style type="text/css">     body {font-size: 12px;}     div  {font-size: 1.5em;} </style> <body>     <div>         Test-01 (12px * 1.5 = 18px)         &l

CSS几种特殊技巧

同时给P元素两个类,中间用空格格开,这样所有text和side两个类的属性都会加到P元素上来.如果它们两个类中的属性有冲突的话,后设置的起作用,即在CSS文件中放在后面的类的属性起作用. 1.CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight:bold; font-style:italic; font-varient:small-caps; font-size:1em; line-height:1.5em; font-family:verdana,sans-se

50款实用的CSS工具

包含CSS网格和布局工具,CSS 优化工具,CSS 菜单生成工具,CSS 按钮生成器,CSS 圆角生成器,CSS 框架,CSS Sprites生成器,CSS 排版工具以及 CSS 表单生成器.  50款CSS工具,包含,CSS网格和布局工具,CSS 优化工具,CSS 菜单生成工具,CSS 按钮生成器,CSS 圆角生成器,CSS 框架,CSS Sprites生成器,CSS 排版工具以及 CSS 表单生成器. 网格和布局 The 1KB CSS Grid 新颖的 CSS 网格工具,可用于简化内容管理

[译]CSS的十大密技

css 在某blog看到一篇关于css的文章,觉得还挺有用的,大致译了一下,译文和原文如下,如果有译得不正确的地方或是对类似问题有其他更好地解决办法的,请不吝赐教! 译文: 1.css 字体简写规则 当使用css定义字体时你可能会这样做:font-size: 1em;line-height: 1.5em;font-weight: bold;font-style: italic;font-variant: small-caps;font-family: verdana,serif; 事实上你可以简

Internet Explorer 6 中的css增强之我见

css 天阅读了 msdn 上的 Internet Explorer 6 中的 CSS 增强功能 一文,感觉微软的确是为web 标准做了比较大的努力.按<网站重构>(Designing with web standards) 的说法,Internet Explorer 6 终于算是一个比较现代的浏览器了. 相对于它之前的版本,毋庸置疑,它的确是改进了不少,而且对 W3C标准支持得更好.比如,IE 6能够通过 标签进行"开关转换"(关于DOCTYPE开关,请参阅上文提到的文章

学习网页制作之总结CSS十大技巧

css|技巧|网页 1.css字体简写规则 当使用css定义字体时你可能会这样做: font-size:1em;line-height:1.5em;font-weight:bold;font-style:italic;font-variant:small-caps;font-family:verdana,serif; 事实上你可以简写这些属性: font: 1em/1.5em bold italic small-caps verdana,serif 现在好多了吧,不过有一点要注意:使用这一简写方

分享:CSS使用技巧20则

css|技巧 1. CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight: bold;font-style: italic;font-varient: small-caps;font-size: 1em;line-height: 1.5em;font-family: verdana,sans-serif 但也可以把它们全部写到一行上去: font: bold italic small-caps 1em/1.5em verdana,sans-serif 真不错!只有

CSS经典技巧十则

css|技巧 本文由经典论坛 r2no1 翻译整理 原文发表网站:www.webcredible.co.uk 本翻译并未得到作者或网站授权.一切权利都归原作者及原网站所有.如果你得到原作者或原发表网站的授权,可以自由使用本翻译. 1.CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight:bold;font-style:italic;font-varient:small-caps;font-size:1em;line-height:1.5em;font-family

你知道这些css网页设计技巧吗

css|技巧|设计|网页|网页设计 本翻译并未得到作者或网站授权.一切权利都归原作者及原网站所有.如果你得到原作者或原发表网站的授权,可以自由使用本翻译. 1.CSS字体属性简写规则 一般用CSS设定字体属性是这样做的: font-weight:bold;font-style:italic;font-varient:small-caps;font-size:1em;line-height:1.5em;font-family:verdana,sans-serif; 但也可以把它们全部写到一行上去: