`
tansitongba
  • 浏览: 485145 次
文章分类
社区版块
存档分类
最新评论

CSS居中的常用方法

 
阅读更多

在Web标准中的页面布局是使用Div配合CSS来实现的。这其中最常用到的就是使整个页面水平居中的效果,这是在页面布局中基本,也是最应该首先掌握的知识。不过,还是经常会有人问到这个问题,在这里我简单总结一下使用Div和CSS实现页面水平居中的方法:

一、margin:auto 0 与 text-aligh:center

在现代浏览器(如Internet Explorer 7、Firefox、Opera等)现代浏览器实现水平居中的方法很简单,只要设定到左右两侧的空白为自动即可。意即:

#wrap { margin:0 auto;}

上面这段代码的意思是说使wrap这个div到左右两侧的距离自动设置,上下为0(可以为任意)。请在现代浏览器(如Internet Explorer 7、Firefox、Opera等)中运行现在的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
div#wrap {
width:760px;
margin:0 auto;
border:1px solid #333;
background-color:#ccc;
}
</style>
</head>

<body>
<div id="wrap">
在Firefox等现代浏览器设定页面元素的水平居中,只要指定margin:0 auto;即可
<pre>
div#wrap {
width:760px;
margin:0 auto; /*这里的0可以任意值*/
border:1px solid #ccc;
background-color:#999;
}
</pre>
</div>
</body>
</html>

上面的效果很好。但是这在Internet Explorer 6及改正的版本中是不起作用的,不过幸好它有自己的解决办法。在Internet Explorer中text-align属性是可继承的,即在父元素中设置后在子元素中就默认具有了该属性。因此我们可以在body标签中设置text-align属性值为center,这样页面内所有的元素都会自动居中,同时我们还要加一个hook把页面中的文字变成我们习惯的阅读方式——居左对齐。因此我们要如此来写代码:

body {text-align:center;}
#wrap {text-align:left;}

这样在Internet Explorer中我们就轻松实现了Div的居中对齐。因此要在所有的浏览器中显示居中的效果,我们就可以这样写我们的代码:

body { text-align:center; }
#wrap { text-align:left;
margin:0 auto;
}

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> CSS+Div实现水平居中对齐的页面布局 </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
body { text-align:center; }
div#wrap {
text-align:left;
width:760px;
margin:0 auto;
border:1px solid #333;
background-color:#ccc;
}
</style>
</head>

<body>
<div id="wrap">
在Firefox等现代浏览器设定页面元素的水平居中,只要指定margin:0 auto;即可
<pre>
div#wrap {
width:760px;
margin:0 auto; /*这里的0可以任意值*/
border:1px solid #ccc;
background-color:#999;
}

在Internet Explorer 6 及以下的版本中我们还要做以下的设置:
body { text-align:center; }

div#wrap {
text-align:left;
}
</pre>
</div>
</body>
</html>

不过这里有一个前提,就是设置居中的元素要有固定的宽度,比如这里我们设定了为760像素。

二、相对定位与负的边距

对于wrap进行相对定位,然后使用负的边距抵消偏移量。这种方法比较简单还很容易实现:

#wrap {
position:relative;
width:760px;
left:50%;
margin-left:-380px
}

这段代码的意思是,设置wrap的定位是相对于其父元素body标签的,然后将其左边框移动到页面的正中间(也就是left:50%含意);最后我们再从中间位置向左偏移回一半的距离来,这样就实现了水平居中了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> CSS+Div实现水平居中对齐的页面布局 </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
div#wrap {
position:relative;
width:760px;
left:50%;
margin-left:-380px;
border:1px solid #333;
background-color:#ccc;
}
</style>
</head>

<body>
<div id="wrap">
在所有浏览器中都有效的方法:
<pre>
div#wrap {
position:relative;
width:760px;
left:50%;
margin-left:-380px;
border:1px solid #333;
background-color:#ccc;
}

</pre>
</div>
</body>
</html>

同样,在设定水平居中前你需要设定一个固定的宽度。

P.S.究竟选择哪个方法?

上面两个方法究竟选择哪种方法好呢?在第一种方法中貌似使用了Hack技术,其实并没有,它是中规中矩的Web标准写法,完全符合规范,因此,两个种方法中完全可以随便的选取其中的任一种进行使用,他们不存在CSS hack的问题。

三、其它的居中方式

上面所说的都是设定了具体宽度的情况下水平居中的实现。有时候我们想做一个弹性布局,或者当一个元素处于一个容器中时我们只想让它居中并不想设定一个具体的宽度。其实这并不是真正的居中布局,就像对一个100%长度的元素来说,你说它是居中对齐还是居左对齐呢?所以所有不高宽度的居中都不是真正的居中。这样的设计我们是使用的像元素的padding来设置的,实际中我们是改变了父元素的容器大小:

如我们希望wrap元素长度随窗口而改变,同时又维持居中,我们就可以这样写:

body {
padding:10px 150px;
}

这里,我们只需要保持父元素左右两侧的填充是相等的就可以了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> 随浏览器窗口大小而改变的具有弹性的居中布局 </title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
body {
padding:10px 150px;
}
div#wrap {
border:1px solid #333;
background-color:#ccc;
}
</style>
</head>

<body>
<div id="wrap">
一种随浏览器窗口大小而改变的具有弹性的居中布局:
<pre>
body {
padding:10px 150px;
}

这里,我们只需要保持父元素左右两侧的填充是相等的就可以了。
</pre>
</div>
</body>
</html>

当然这只是“貌似居中”,不过却常常很有用处。


分享到:
评论

相关推荐

    学会这三种方法css居中,已经够你用啦

    却不能做到垂直居中……下面就css居中的一些常用方法做个集中的介绍。新建一个前端学习qun438905713,在群里大多数都是零基础学习者,大家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的小伙伴来一起...

    居中+遮蔽css+html

    对于css如何让div剧中一直没太明白,这两天查看了好多资料,看了好多感觉这个还挺常用的

    常用的css将元素垂直居中的6种方法

    常用的css将元素垂直居中的方法 1. 使用line-height将单行文本垂直居中 设置line-height等于height,可使单行文本垂直居中 例: div { height: 50px; width: 200px; border: 1px solid #ccc; } 效果如下: ...

    css如何让浮动元素水平居中

    对于定宽的非浮动元素我们可以在CSS中用 margin:0 auto 进行水平居中,对于不定宽的浮动元素我们也有一个常用的技巧解决它的水平居中问题。解决水平居中问题有很多种方法,下面先给大家分享一下三种方法,希望能帮助...

    css布局网页水平居中常用方法

    页面水平居中一般会令人很头疼,尤其新手。浏览器之间的不兼容也会带来很大问题。本篇文章主要介绍了css布局网页水平居中常用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    CSS盒子居中的常用的几种方法(小结)

    用css的position属性 &lt;style type="text/css"&gt; .div1 { width: 100px; height: 100px; border: 1px solid #000000; position: relative; } .div2 { width: 40px; height: 40px; background-color: ...

    css中常用的几种居中方法(推荐)

    下面小编就为大家带来一篇css中常用的几种居中方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    前端笔记前端笔记前端笔记前端笔记,一些div居中以及常用的CSS属性

    一些div居中以及常用的CSS属性,一些div居中以及常用的CSS属性

    CSS布局居中

    css中居中是最常用的布局,所以总结了一下,基本涵盖日常所有的方式

    网页制作 css让页面居中对齐

    总结一下css让页面居中对齐的方法1.我们常用的margin:0 auto;方法这个方法是大家用的最多的方法,使用的时候必须为容器制定宽度!例子: #main {width:960px;margin:0 auto;} 这个在大部分浏览器里面都可以很好的...

    CSS文集

    利用CSS的Expression自定义属性来实现表格的OnMouseOver 特效 需要掌握...important标记区别Firefox和IE6 DIV+CSS页面布局中注意的问题以及常用的CSS使用方法 网页布局基础-XHTML与CSS基础 CSS命名规则

    CSS中使用负margin值来调整居中位置

    这或许是最常用的居中方法。如果知道了各个元素的大小,设置等于宽高一半大小的负margin值(如果没有使用box-sizing: border-box样式,还需要加上padding值),再配合top: 50%; left: 50%;样式就会使块元素居中。 ...

    div垂直居中-CSS元素垂直居中方法的探究

    针对学员疑问“div垂直居中?”引出的“CSS元素垂直居中一系列方法的探究”的针对性课程,课程包含两方面:1、文本垂直居中的解决方案;2、块级元素垂直居中的解决方案。

    css相关资料汇总------总有你需要的

    DIV 居中的绝好解决方法.txt DIV+CSS制作专业信息网站的制作规范 .txt DIVCSS布局大全.pdf dom10.chm web标准化设计:常用的CSS命名规范.mht 学习网页技术CSS样式表整理的20个技巧.txt 样式表滤镜中文手册....

    css实现的让图片垂直居中的方法

    图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项目可能会用到这个方案,所以把一些常用的方法都收集整理了一下。

    css实现元素垂直居中的常用方法(总结)

    垂直居中 css: .box1{ display: table-cell; vertical-align: middle; text-align: center; } 方法2:display:flex .box2{ display: flex; justify-content:center; align-items:Center; } 方法3:绝对...

    css js常用效果用法

    css js常用效果用法:纯CSS制作的新闻网站中的文章列表;定义li图片头;在DIV中图片垂直、水平居中(最简单方法);纯css的防止图片撑破页面的代码(图片自动缩放)

    CSS布局奇淫技巧之–各种居中总结

    使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍。 注:本文所讲方法除了特别说明外,都是兼容IE6+、谷歌、火狐等主流浏览器的。 ...

    CSS文本和div垂直居中方法总结

    在样式布局中,我们经常碰到需要将元素居中。通过css实现元素的水平居中较为简单:对文本,只需要对其父级元素设置text-align: center;...因此我们需要通过别的方法去实现元素的垂直居中,下面我总结了几种了常用垂直居

Global site tag (gtag.js) - Google Analytics