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

2016-02-20 00:25 11 1 收藏

今天给大家分享的是由图老师小编精心为您推荐的CSS box-align: center实现子框架居中,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

【 tulaoshi.com - Web开发 】

有时我们需要令一个宽度固定的容器里的子框架居中(例如一个 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.tulaoshi.com/webkaifa/)

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

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

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

兼容 IE

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

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

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

后记

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

原文地址:

来源:http://www.tulaoshi.com/n/20160220/1631823.html

延伸阅读
标签: Web开发
vertical-align版本:CSS1/CSS2 兼容性:IE4+ NS4+ 继承性:无 语法: vertical-align : auto | baseline | sub | super | top | text-top | middle | bottom | text-bottom | length 取值: auto : CSS1 根据 layout-flow 属性的值对齐对象内容 baseline : CSS1 默认值。将支持 valign 特性的对象的内容与基线对齐 sub : CS...
标签: Web开发
利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法。我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站。 使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效。下面我们看一下使对象垂直集中的5种不同方法,以及它们各自的优缺点。(可以看看 测试页面 ,有简短解释。) 图1 ...
标签: Web开发
CSS盒子(CSS box)     首先要清楚,CSS中没有box这个属性。CSS的盒子(box)是由以下几个部分组成的:     内容(content)、 填充(padding) 、边框 (border) 和边界( margin)。盒子的内容当然是必须有的,而填充、边框和边界都是可选的。如果把CSS的盒子看做现实生活中的盒子,那么内容就是盒子里装的货物;而填充...
标签: Web开发
    使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效。下面我们看一下使对象垂直集中的3种不同方法,以及它们各自的优缺点 方法一: 这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。 div id="wrapper" div id="cell" div class="content...
使用 CSS 实现垂直居中并不容易。有些方法在一些浏览器中无效。下面我们看一下使对象垂直集中的5种不同方法,以及它们各自的优缺点。 方法一 这个方法把一些 div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align property 属性。 div id="wrapper" div id="cell" div class="content" Content...

经验教程

814

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部