`
Leon.Wood
  • 浏览: 288290 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CSS网页布局DIV水平居中的各种方法

阅读更多

容器中的内容居中:text-align: center
容器在上层容器中居中:margin-right: auto; margin-left: auto;
.a{margin:0px auto;} (div class="a"中的内容居中。b在a中也会居中)
.b{margin:0px auto;}(b中的内容居中)

 在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> 

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

 

分享到:
评论

相关推荐

    div水平居中的方法

    CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法 CSS网页布局DIV水平居中的各种方法CSS网页布局DIV水平居中的各种方法

    CSS网页布局DIV水平居中的各种方法[参考].pdf

    在CSS网页布局中,实现DIV水平居中是一个常见的需求,尤其在软件开发中,良好的页面布局能提供优秀的用户体验。本文将详细介绍几种不同的方法来实现这一目标。 首先,对于单行垂直居中的情况,我们可以利用CSS的`...

    DIV+CSS DIV居中布局

    总的来说,`DIV+CSS`的居中布局有多种实现方式,选择哪种方法取决于具体的需求和浏览器兼容性考虑。随着现代浏览器对Flexbox和Grid的支持日益增强,它们已经成为实现居中布局的首选方法。然而,对于老版本浏览器,`...

    div+css垂直居中和水平居中

    在网页设计中,实现元素的垂直居中和水平居中是一项常见的需求,这涉及到CSS布局技术。本篇文章将深入探讨如何使用div+css方法来实现这一目标。在现代Web开发中,div元素作为布局容器广泛使用,而CSS则是样式控制的...

    CSS网页布局:div水平居中的各种方法

    不过,还是经常会有人问到这个问题,在这里我简单总结一下使用Div和CSS实现页面水平居中的方法: 一、margin:auto 0 与 text-aligh:center 在现代浏览器(如Internet Explorer 7、Firefox、Opera等)现代浏览器实现...

    DIV+CSS水平垂直居中

    DIV+CSS 水平垂直居中网页学习 DIV+CSS 水平垂直居中是Web开发中一个常见的问题,如何将DIV元素水平垂直居中是一个非常重要的知识点。本文将详细介绍DIV+CSS水平垂直居中的方法和实现原理。 一、使用position:...

    在DIV中图片垂直/水平居中(最简单方法).rar

    在网页设计中,将图片在div中垂直和水平居中是一项常见的需求,这涉及到CSS布局技术的运用。本文将深入探讨如何使用最简单的方法来实现这个目标,同时也会涉及JavaScript(JS)的一些特效,尽管在描述中没有明确指出...

    DIV+CSS 图片垂直居中效果

    在网页设计中,"DIV+CSS 图片垂直居中效果"是一个常见的布局需求,它涉及到CSS的盒模型、定位和Flexbox或Grid等现代布局技术。以下是对这一主题的详细阐述: 1. **基础概念** - **DIV**:HTML中的`<div>`元素是一...

    CSS网页布局:div垂直居中的各种方法

    在CSS布局中,垂直居中是一项常见的需求,但相比水平居中,它的实现方式更为多样且复杂。在本文中,我们将探讨如何通过不同的方法在网页布局中实现div元素的垂直居中。 首先,我们注意到CSS的`vertical-align`属性...

    DIV+CSS上下左右绝对居中

    在网页设计中,"DIV+CSS上下左右绝对居中"是一个常见的布局需求,尤其是在构建响应式网站时。这个主题涉及到CSS(层叠样式表)的布局技巧,它可以帮助元素在不同屏幕尺寸下都能保持在容器的中心位置。下面将详细探讨...

    Div+CSS简单布局

    要让Div居中,有多种方法,包括使用`text-align`、`margin`、Flexbox或Grid。 1. **Text-align居中**:如果Div是内联元素,可以设置父元素的`text-align: center`使其居中。 2. **Margin居中**:对于块级元素,...

    网页设计-页面布局篇(Css+Div)

    **标题与描述**:本教程聚焦于网页设计中的关键环节——页面布局,并详细介绍了如何运用CSS和Div技术来构建网页的基本结构。 **重要性**:网页设计是网络开发的重要组成部分之一,良好的页面布局不仅能够提升用户...

    css布局居中和CSS内容居中区别和对应DIV CSS代码.docx

    - **布局居中案例**:可以参考相关的CSS布局居中教程,学习如何实现单个或多个div的水平居中,包括一列和多列布局的居中方法。 - **内容居中案例**:探索更多关于HTML文本、div内字体和元素垂直居中的CSS技巧,以...

Global site tag (gtag.js) - Google Analytics