如何用CSS实现多个子框架居中?
有时我们需要令一个宽度固定的容器里的子框架居中(例如一个 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;
}
本文所举例子的最终效果请看下面演示代码
- 栏目搜索>>分类导航
-
Flash幻灯
jQuery幻灯
JS幻灯
Flash相册
jQuery相册
图片特效
导航菜单
广告代码
在线客服
表单按钮
其它特效
-
HTML
CSS
JavaScript
Dreamweaver
Fireworks
设计分享
-
建站教程
网站运营
实用工具
网页模板
网页素材
- CSS酷站 网上购物 设计团队 设计博客
- 教程排行榜
- 21个令人惊叹的CSS技术(案例)展示
- 看这些用CSS3绘制的图标,你震撼了吗
- HTML5的Video标签详细说明手册
- 如何使一个DIV层居中于浏览器中?
- 加一段代码让IE6支持hover伪类效果
- IE PNG Fix—让IE6完美支持PNG透明图片的插件
- CSS Sprite(CSS精灵)的优点和使用方法
- 最新的IE6、IE7和IE8的CSS BUG汇总列表
- 深入理解CSS的inherit与auto之间区别
- 用浮动清除LI元素在IE6中底部3像素的BUG
- CSS3教程:17种用CSS实现的很酷炫的立体网...
- 解决IE6下PNG图片透明的最佳方法
- IE的几个最常见BUG及解决方案
- DIV+CSS布局两列右列宽度自适应布局的不同...
- CSS样式的postion属性absolute和fixed的区别
- CSS教程:用相对定位实现简单的图片边框阴...
- 下载排行榜
- 基于jQuery的超炫酷的3D切换JS幻灯焦点图特效代码
- 半透明立体质感的宽屏flash+xml焦点幻灯代码
- 简洁效果多图切换flash幻灯焦点图代码
- 带标题和数字导航的JS焦点幻灯特效代码
- 适合摄影网站超漂亮的宽屏flash+xml幻灯轮换代码
- 31款简单实用的CSS+JS下拉菜单脚本
- 3D立体效果金字塔环形旋转的flash+xml相册代码
- 基于jQuery实现的瀑布流布局列表特效代码
- 透明质感上下滑动带小图预览5屏JS焦点图幻...
- 超酷的3D摩天轮flash+xml相册幻灯图片代码
- 能沿多个方向滑动切换的jquery幻灯代码
- 自带多种幻灯效果支持缩略图导航的jquery画...
- 可改图片尺寸和张数的flash幻灯轮换代码
- 很好看的带缓冲效果CSS下拉菜单导航代码
- 基于jquery很有趣的360度全景图片预览特效
- 6屏幻灯上下滑动式带缩略图和文字介绍的fla...
