`
yangyou230
  • 浏览: 1650643 次
文章分类
社区版块
存档分类

正确的使用margin:0 auto与body{text-align:center;}实现元素居中

 
阅读更多
body{text-align:center}与margin:0 auto的异同?这是一个对齐上的迷惑,刚开始的时候或许大家对它们都不是很理解。我们通过下面的一些小例子来了解他们到底有什么区别,应该在什么样的情形下正确的使用body{text-align:center}与margin:0 auto。我们首先了解一下它们的基本概念:
% _* m4 b* ~/ {: L8 P* B& M1 }, F% v) U: o
  text-align是用于设置或对象中文本的对齐方式。一般情况下我们设置文本对齐方式的时候需要用此属性进行设置,如:
. j' j* w0 @5 q& w0 _+ L2 B- Y& A( X. d
Example Source Code - K; G( _& F: [: k1 J

* C. G5 y/ n j; @! h1 A) }  div { text-align: left; } 表示文本居左对齐。 i& J% B2 x- z, L8 e

, h- L F9 `! m1 c- S* }- Y' @
) i3 I! Q" } w. ^8 F ?9 t. I; ^  margin是设置对象四边的外延边距,被称为外补丁或外边距。如:
) k V# p5 T: U0 Y0 i. c1 ?, `+ J3 c0 i9 C6 z% g* Z$ E0 L
Example Source Code
: K, _" S& @, b, i5 `
% }7 N, M; l+ r, Y7 m  div { margin: 20px 10px 30px 40px; }
5 E. y* S; u- P0 Q0 O
9 t0 z: B: S* T/ j; L+ c( ?+ Q  表示对象外边距,顶20px、右10px、下30px、左40px。* @: h' Z* k" F* R( Q) Y8 A
! P. g7 Q% c( `7 Z( m8 v% T
  我们设置某个对象水平方向居中的时候,常常将左右的外边距设置为auto来实现。如:
. K. @0 r: {) l0 q$ Y; A& a5 z8 p8 \6 [2 C5 e7 d9 }
Example Source Code
9 t: u) C; I9 y! |
! q; u2 o7 e( ]/ d( rdiv { margin: 0 auto; }- u2 V& ~0 G$ u: }" t8 @; X

0 B5 L7 z5 } H  现在的问题是:body{text-align:center}与margin:0 auto的异同。text-align:center设置为文本或img标签等一些内联对象(或与之类似的元素)的居中。margin:0 auto是设置块元素(或与之类似的元素)的居中。但这两个属性IE与FF的理解也有所不同。
9 k% d- P$ |# q v; y& ^
* G4 U) `. F0 k2 z% K' k2 p  我们设置一个段落P,在段落内存在一个图片img标签。9 u8 a8 }( V) o- j2 i; O6 R
9 J A# @) T9 q3 b; @4 U) W, X1 }
  我们设置body{text-align:center;}。得到下面的图片:
6 x2 `3 D( E' M8 g5 }: j! K) a$ E" _. O# h8 D' L+ N5 E; N

5 i7 T2 A8 e; Q% Q, `

7 F# T5 A8 b. l1 B. e9 b3 t

在IE中,段落P,图片img同时实现了居中对齐,也就是说text-align:center;同时作用于元素p与元素img。
& h: J5 c# f6 X3 Q* D( Q* j
- O0 p% g/ ?3 N- B$ F  在FF中,段落P,没有能实现居中对齐,而图片img实现了居中对齐,也就是说text-align:center;作用于img标签,而段落p标签没有起到居中的作用。! W0 e$ L: |9 U4 u! u

% f( Z2 y3 [% @, l/ m, y, |  我们设置段落 p {margin:0 auto;}。得到下面的图片:6 p6 U/ r: N, Z" h+ Q+ l5 y/ c
, G2 z P! t& d2 F3 l4 J4 \
$ w" K2 w: j7 P, n4 ^

) p! d$ w+ ?0 Q# E) E& V O

l$ l* t+ k$ S; ~
5 b' O$ C7 T1 n
  我们发现在IE与FF中,段落P均实现了居中对齐。图片img由于不是作用对象,所以不会居中对齐。7 f- E' S U1 g% a, |

# R/ W. |, d# v; \. _  有三种情况需要说明:
) H% i c9 V4 S' F* M+ g3 |" H1 o
3 v& z/ s0 x; l  一、有朋友在操作的时候,将margin:0 auto;的选择器混淆了,应该是作用对象,如div,p,而不是body。如果设置:body { margin:0 auto; }将不会达到任何效果,除非你定义body的宽度,那将会让body内的元素产生位置变化。如我们设置body宽度为500px。对p段落不作任何设置,我们最大化窗口将会看到段落并非处于窗口的最左上角。6 Y4 m7 @) t0 Q8 _# W
8 M+ Y* G0 s. P5 Y$ H
  二,我们设置段落 p {text-align:center;} 将要实现的并不是段落本身的对齐方式,而是段落内元素居中对齐。
4 g5 m. y: `: O- a5 F! X ~) M6 q6 t( P" m* w% l
  三,我们设置图片标签img {margin:0 auto;} ,我们就犯了一个小错误,img类于内联对象,不可以设置图片img标签的margin属性,如果你一定想要设置,那么首先要将它的属性转变为块元素,如下面的代码:img {display:block; margin:0 auto;}

有朋友产生疑问了,那该如何使用呢?说说我的建议:
8 M6 J7 w0 E# L% M
. P4 j4 }0 S7 Z; P  如果页面中的元素,均位于div标签或其它块元素内,进行了合理的嵌套,我们不必设置body{text-align:center}。只需要设置相应的div元素margin:0 auto;即可。如上面的代码所讲述,页面中的元素均位于段落p标签中,只需要将段落居中即可。
& I7 ^" U4 Y; p/ e$ m9 k9 F6 o- G/ J4 a8 ^/ H0 L) x6 p
  如果页面中的元素,有一部分不是在div标签或其它块元素内,我们需要设置body{text-align:center}。但也会遇到问题,这样设置以后,大部分内联元素,都居中对齐了,包括页面中其它的一些文本,还需要进行相应的调整才能适应设计的需要。如:我们设置body内有一个段落P,在段落内有一个图片img及一段文本,在body内还存在一个独立的图片img,看下面的图片:
+ r0 s/ I; h. h4 T; X
$ [( n5 ^- O. \: } D

& Q: e$ r" X/ p' [" ^ v( Z' B

; C7 Y+ R8 ~ i$ {# U  我们实现了段落p的居中,同时也让位于段落外的图片实现了居中,但段落中的图片与文本居中对齐了。如下是运行代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
O4 Q; I, z/ i* z- T4 Y; p<html xmlns="http://www.w3.org/1999/xhtml">
) e7 P2 c5 r6 j4 Y2 H- T1 l<head>0 b! Y4 h) [- k& Y6 g [; N
< meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
$ @- y$ m3 g' i" d4 T7 b<title>www.52css.com</title>
. l. P7 S9 [& L$ A" X7 ^' {7 |<style type="text/css">- q5 }# [2 T8 {/ n
body {
* H) E7 X+ M9 S% x8 i text-align:center;
0 g9 F% x9 s9 c6 u3 @1 w2 f}
- d+ c* b$ C6 O- pp {
# B$ k" [8 b5 {. l* ^, g. Y margin:0 auto;# \, d k5 m, M# [- D
width:300px;
, }; K# c4 ?0 h u background:#06f; 8 `% g. Y, f1 K
}0 B: X$ [! }5 v: S% \1 Z
img { @4 ?$ n7 |. k+ s* _

$ e+ }7 u/ w( [}, U, V4 `) B' x Q) ?; s
< /style>
/ o, ]5 E- N. B1 E9 P$ O</head>
[: d5 q4 s# R+ V<body>9 L. N% h0 H1 P z
< p>1 a9 q e0 \7 q2 c
< img src="http://www.52css.com/skins/logo3.gif" alt="52CSS.com - CSS Web Design" width="200" height="90" style="vertical-align:top;" />
# ] x; D% V0 @4 o: L<br />6 m: r/ \9 f5 f& T
52CSS.com是一个专业的CSS学习站点,内容丰富并且保持每天更新,我们建立了很多供网友们互动讨论学习,52CSS.com是学习开发符合WEB标准的网页及网站重构的首选站点。
/ J4 }$ m0 O. S</p>4 b1 D r( h+ ^: Q6 {; T$ u1 J
< br />, y( ^: J0 l; A7 ?' G6 A+ m; K9 K
< img src="http://www.52css.com/skins/logo3.gif" alt="52CSS.com - CSS Web Design" width="200" height="90" style="vertical-align:top;" />
0 Y6 D6 x; g- h. N2 j8 Z9 M</body>
3 ?3 }8 [" l. [: {% S6 W* f</html>

分享到:
评论

相关推荐

    XHTMl 第三章源代码

    margin:0px auto 0px auto; width:800px; text-align:left; background:url(container_bg.jpg) no-repeat bottom right; /* 底部右侧的背景图片 */ } #globallink{ width:800px; height:430px; margin:0px; ...

    div使用margin:0px auto不居中的原因分析及解决

    一般在将div居中显示时,使用css: 复制代码代码如下: divX {margin:0 auto;} 此css在firefox下是好的,但是在ie下不起作用,... body{text-align:center} #cnbruce{width:500px; background-color: #ccc; margin: 0

    CSS实例:vertical-align属性让网页层居中

    body{TEXT-ALIGN: center;}#center{MARGIN-RIGHT: auto;MARGIN-LEFT: auto;height:200px;background:#fff;width:400px;vertical-align:middle;line-height:200px;}&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;div id=...

    ie下margin不居中的三种解决方法

    正常情况下需要将div居中显示时,使用Css样式:margin:0 auto即可,但有时使用margin:0 auto后在FF、Chrome里能居中,而在IE678里不居中的现象。 如下代码: 复制代码代码如下:&lt;style type=”text/css”&gt;#con{...

    如何使div垂直水平居中的css代码

    主要的样式定义如下,这也是最简单的方法: body {TEXT-ALIGN: center;} #center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; } 说明: 首先在父级元素定义TEXT-ALIGN: center;这个的意思就是在父级元素内的内容居中...

    ie css margin auto 不居中解决方案

    一般在将div居中显示时,使用css: divX {margin:0 auto;} 此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下: &lt;div id=cnbruce&gt;margin: 0 auto 看看内容居中否&lt;/div&gt; 如上调试结果,IE6.0是不居中的...

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

    总结一下css让页面居中对齐的方法1....这个方法把整个页面当作文本对待,把body的属性设置为{text-align:center;}这样的话页面所有内容全部居中了,还需要把页面总的外框(wrap)属性{text-align:left;}这样的话页面

    静态页练习

    text-align: center;/*文字对齐方式*/ background: #FFF;/*背景颜色*/ } a:link, a:visited { font-size: 12px;/*字体大小*/ text-decoration: none;/*文字修饰*/ } a:hover { } /*页面层容器*/ #container { ...

    CSS解决未知高度的垂直水平居中自适应问题

    body { text-align:center} #info{ margin:0 auto; width:500px; text-align:left; border:1px solid #3333FF} &lt;/style&gt; &lt;/head&gt; &lt;body&gt; ”info”&gt;this is test.&lt;/div&gt; &lt;/body&gt; &lt;!...

    web实验报告.doc

    } .landscape-left, .landscape-right { text-align: center; border: #D9D9D9 solid 3px; margin: 0px 15px; } .landscape-left { float:left; } .landscape-right { float:right; } h2,h3 { clear: both; } li a ...

    一个div在浏览器水平居中的实现方法

    一个div在浏览器水平居中的实现方法 第一种方法: ... body { text-align: center; } div { margin: 0 auto; width: 960px; }  第三种方法(不推荐) CSS Code复制内容到剪贴板 di

    css三种方法实现div在浏览器水平居中

    本文教大家如何实现一个div在浏览器水平居中,下面是三种解决方法,具体内容如下 ... body { text-align: center; } div { margin: 0 auto; width: 960px; }  第三种方法(不推

    u=3083571013,2480410743&fm=26&gp=0.jpg.png

    text-align: center; } nav a:hover { background-color: #F00; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;li&gt;&lt;a href="#"&gt;首页&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;电影 &lt;li&gt;&lt;a href="#"&gt;新上映&lt;/a&gt;...

    浅谈HTML(css基础样式)

    solid 边框加粗border:5px 设置边像素display:inline-block 横着显示块状的line-height:40px 字体上下居中text-align:center 字体左右居中margin-right:20px 调整外界边框 CSS Code复制内容到剪贴板 &lt;body ...

    css入门笔记

    取值:auto 则内容居中 2、外边距margin 6、背景颜色 1.背景色 属性:background: 取值:颜色 2.背景图片 属性:background-image:url(); 取值:url() 3.背景图像平铺 属性:background-repeat 取值:...

    CSS的各种居中——如何书写高质量代码

    水平居中 1、行内元素水平居中(文本,图片) 给父层设置 text-align:center; 可以实现行内元素水平居中。 复制代码代码如下: &lt;!DOCTYPE HTML&gt; &lt;html lang=”en-US”&gt; &lt;head&gt; &lt;meta charset=”...

    CSS水平居中总结(新手必看篇)

    如果被设置元素为文本、图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。 html代码: XML/HTML Code复制内容到剪贴板 &lt;body&gt;  我想要在父容器中水平居中显示。  &lt;/...

    HTML+DIV+CSS

    text-align: center; /*水平居中*/ } img{ float:left; /*左浮动*/ border: 1px #9999cc dashed;/*边框类型*/ margin: 5px; /*内间距*/ } p{ font-size: 12px; text-indent: 2em; /*首行缩进*/ line...

    css 解决浏览器兼容问题

    这里大家要知道CSS不兼容的原因是因为各浏览器给...} 上面的建站常用代码就相是格式化CSS样式,让各浏览器按照我们设置的属性值渲染网页 第二招:IE和FF下对象居中问题 IE下大家应该知道只要设置body{text-align:center

Global site tag (gtag.js) - Google Analytics