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

花児黛刺

花児黛刺

2016-02-19 23:27

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享CSS网页布局:div水平居中的各种方法,希望可以对大家能有小小的帮助。

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

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

  在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

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)
展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

关于CSS控制DIV水平居中问题

Web开发
关于CSS控制DIV水平居中问题

div css网页布局入门

Web开发
div css网页布局入门

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

CSS垂直居中网页布局实现的5种方法

Web开发
CSS垂直居中网页布局实现的5种方法

CSS实现DIV内容垂直及水平居中

Web开发
CSS实现DIV内容垂直及水平居中

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

如何设置打开和关闭Windows10麦克风与摄像头

如何设置打开和关闭Windows10麦克风与摄像头

dl、dt、dd 标记来改造163邮箱的广告条

dl、dt、dd 标记来改造163邮箱的广告条
下拉加载更多内容 ↓