`
xiongzhenhui
  • 浏览: 209654 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

IE下div使用margin0px auto不居中的原因

 
阅读更多
一般在将div居中显示时,使用css:
divX {margin:0 auto;}
此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下:
<div id="cnbruce">margin: 0 auto 看看内容居中否</div>
如上调试结果,IE6.0是不居中的,当然解决的办法可以是对网页主体“<body>”声明文本居中,即
[ Copy ] [ Run ] [ Save ]
< style>
body{text-align:center}
#cnbruce{width:500px; background-color: #ccc; margin: 0 auto}
< /style>
< div id="cnbruce">margin: 0 auto 看看内容居中否(加了body文本居中)</div>
然后,单个div的CSS居中,非要扯上<body>?
于是在不采用“<body>”声明文本居中的情况下,将DOCTYPE声明加上,立马有效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< style>
#cnbruce{width:500px; background-color: #ccc; margin: 0 auto}
< /style>
< div id="cnbruce">margin: 0 auto 看看内容居中否(加了DOCTYPE声明)</div>
其实原理都知道,就是因为用这个“懒人”的HTML调试框,懒得去输入些忘却的东西,到头来还以为真相就是如此呢。。。
同样,关于“一边固定,一边自动扩展”的例子,加与不加在IE效果完全不同
如下是不加的情况:
[ Copy ] [ Run ] [ Save ]
< html xmlns="http://www.w3.org/1999/xhtml">
< head>
< meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
< title>CSS布局</title>
< style type="text/css">
< !--
body {
margin:0;
}
#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
}
#dv2 {
background-color: #FFCC00;
width:100%;
}
-->
< /style>
< /head>

< body>

< div id="dv1">
< pre>#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
} </pre>
< /div>
< div id="dv2">
< pre>#dv2 {
background-color: #FFCC00;
width:100%;
}
< /pre>
< /div>
< /body>
< /html>
如下是添加了DOCTYPE声明
[ Copy ] [ Run ] [ Save ]
< !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>
< meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
< title>CSS布局1</title>
< style type="text/css">
< !--
body {
margin:0;
}
#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
}
#dv2 {
background-color: #FFCC00;
width:100%;
}
-->
< /style>
< /head>

< body>

< div id="dv1">
< pre>#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
} </pre>
< /div>
< div id="dv2">
< pre>#dv2 {
background-color: #FFCC00;
width:100%;
}
< /pre>
< /div>
< /body>
< /html>
下次再也不信HTML调试框了,还是用软件,呵呵。

引用W3C的一些关于DOCTYPE的说明
http://www.w3cn.org/article/step/2004/26.html
引用
什么是DOCTYPE
上面这些代码我们称做DOCTYPE声明。DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。

其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。

要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。

XHTML 1.0 提供了三种DTD声明可供选择:

过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>。完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

我们选择什么样的DOCTYPE
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择(包括本站,使用的也是过渡型DTD)。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通 过W3C的代码校验。

注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。

打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。

补充
DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。
分享到:
评论

相关推荐

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

    总结来说,`margin: 0px auto` 在某些情况下不居中的主要原因有两点:一是IE6的“怪异模式”,二是缺少DOCTYPE声明导致的浏览器解析差异。解决这些问题的方法包括在`&lt;body&gt;` 标签中设置`text-align: center` 或者...

    DIV+CSS DIV居中布局

    设置`margin-left`和`margin-right`为`auto`,可以使`&lt;div&gt;`在父容器中水平居中。例如: ```css .centered-div { width: 200px; /* 元素的宽度 */ margin: 0 auto; /* 自动左右外边距实现居中 */ } ``` 2. **...

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

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

    ie css margin auto 不居中解决方案

    } 此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下: &lt;div id=cnbruce&gt;margin: 0 auto 看看内容居中否&lt;/div&gt; 如上调试结果,IE6.0是不居中的,当然解决的办法可以是对网页主体“&lt;body&gt;”声明...

    div错位解决IE6IE7IE8样式不兼容问题

    ### div错位解决IE6/IE7/IE8样式不兼容问题 在Web开发中,兼容性一直是开发者面临的重要挑战之一。特别是在早期浏览器版本中,如Internet Explorer 6(IE6)、IE7 和 IE8,由于这些浏览器对于CSS的支持存在较大差异...

    div层居中代码下载

    这里通过设置`margin-right`和`margin-left`属性为`auto`,可以使`&lt;div&gt;`在其父容器中水平居中。这种方式适用于任何类型的`&lt;div&gt;`元素,只要它们的宽度设定合理。 #### 三、垂直居中 ##### 3.1 使用Flexbox布局...

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

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

    div内内容文本水平居中.docx

    我们可以使用 `margin: 0 auto` 来使 `div` 元素水平居中。例如: ```css div { margin: 0 auto; width: 370px; border: 1px solid #000; } ``` 这将使 `div` 元素水平居中,并且设置了宽度和边框。 示例代码 ...

    通过margin:0px auto来实现一列固定宽度居中

    复制代码代码如下: XHTML CODE: &lt;div id=”layout”&gt;一列固定宽度居中&lt;/div&gt; CSS CODE: 复制代码代码如下: #layout{ background-color:#C7E091; border:2px solid #B0BCA6;... margin:0px auto;/*外边距参数*/ }

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

    本篇文章将深入探讨如何使用div+css方法来实现这一目标。在现代Web开发中,div元素作为布局容器广泛使用,而CSS则是样式控制的关键。我们将探讨不同情况下的居中策略,并结合给出的`juzhong.html`示例文件进行讲解。...

    DIV+CSS水平垂直居中

    使用position:absolute可以将DIV元素水平垂直居中,方法是将DIV元素的left和top属性设置为50%,然后通过margin-left和margin-top属性将其调整到中心位置。例如: &lt;div style="position:absolute;background-color:...

    利用margin属性将一个div水平居中

    通过以上内容,我们可以了解到,当需要水平居中一个div时,可以通过设置CSS的`margin`属性为`0 auto`来实现。这种方法简单且兼容性好,适用于大多数情况下的元素水平居中。在实际开发中,应根据具体的布局需求和...

    在IE下,当margin:0 auto;无法使得块级元素水平居中时

    这个问题在描述中已经提及,即在IE下,当使用`margin: 0 auto;`时,块级元素可能无法正确地水平居中。 首先,我们需要理解`margin: 0 auto;`的工作原理。它将元素的上、下外边距设置为0,而左右外边距自动设置为...

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

    然后,为需要居中的特定元素设置`text-align: left`,并使用`margin: 0 auto`来实现水平居中。如下所示: ```css body { text-align: center; } #wrap { text-align: left; margin: 0 auto; } ``` 这样,`...

    IE9下DIV本来应该居中的结果显示为居左

    标题和描述中提到的问题是在IE9浏览器下DIV元素无法通过设置margin: 0px auto实现水平居中的问题。这个问题通常是由于IE浏览器的某些特定版本在解析CSS样式上的bug或者特性导致的。而描述中也提供了在IE9及以下版本...

    DIV完全居中

    对于不支持新布局模型的旧浏览器,可以使用绝对定位来实现居中。需要给父元素添加相对定位(`position: relative;`),并为子元素设置绝对定位: ```css .container { position: relative; } .centered-div { ...

    div完美自适应动态上下左右居中

    复制代码代码如下: div { position:absolute; width:500px; height:260px; top:50%; left:50%; margin-left:-250px; height:-130px; z-index:1000; } 文字居中:text-align:center; height:22px;line-height:22px;...

Global site tag (gtag.js) - Google Analytics