`
xiongzhenhui
  • 浏览: 204891 次
  • 性别: 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不居中的原因分析及解决

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

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

    今天遇到使用一个,div元素使用了以下样式 div.wrap{ width:1000px;...在火狐下此div水平居中,但在IE下不居中。 原因是,此div的父级元素没有使用以下样式 div.wrap_parent{text-align:center;} 特此记录

    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;”声明...

    通过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完美自适应动态上下左右居中

    复制代码代码如下: 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;...

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

    一、margin:auto 0 #wrap { margin:0 auto;} 上面这段代码的意思是说使wrap这个div到左右两侧的距离自动设置,上下为0(可以为任意)。 二、相对定位与负的边距 #wrap { position:relative; width:760px; left...

    div CSS技巧

    设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline; 例如: &lt;#div id=”imfloat”&gt; 相应的css为 #IamFloat{ float:left; margin:5px;/*IE下理解...

    解决img在div中居中的问题

    然后利用margin:0 auto;实现图片的水平居中;(有的设计师为图片再加个div标签,然后通过div标签的margin实现居中)。 如果图片在div中下的span属性中,必须转换成display:block;然后padding-top:10px。 以上就是...

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

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

    css margin:0 auto居中

    复制一下代码到记事本,修改为html后缀的文件。 代码 &lt;html xmlns=”... &lt;head&gt; &lt;... charset=utf-8″ /&gt;...&lt;div xss=removed&gt; ...div style=”width:50px; height:50px;... margin:0 auto;

    css中position:fixed实现div居中上下左右居中

    margin:auto; left:0; right:0; top:0; bottom:0; width:200px; height:150px; } 如果只需要左右居中,那么把 bottom:0; 或者 top:0; 删掉即可 如果只需要上下居中,那么把 left:0; 或者 right:0; 即可 下面附一个...

    使用绝对定位+负外边距让DIV层水平垂直居中页面

    让一个层水平垂直居中是一个非常常见的布局方式,但在html中水平居中使用margin:0px auto;可以实现,但垂直居中使用外边距是无法达到效果的。(页面设置height:100%;是无效的),这里使用绝对定位+负外边距的方式来...

    宽度高度不固定的div 如何水平居中以及垂直居中

    宽度高度不固定div的水平居中演示如下: 水平居中代码: html部分&lt;div class=container&gt;&lt;div class=center&gt;&lt;a&gt;1&lt;/a&gt;&lt;a&gt;2&lt;/a&gt;&lt;a&gt;3&lt;/a&gt;&lt;div xss=removed&gt;&lt;/div&gt;&lt;/div&gt; css部分.container{width:500px;height:80px;...

    基于jQuery实现的水平和垂直居中的div窗口

    1、通过css实现水平居中: 代码如下: .className{ margin:0 auto; width:200px; height:200px; } 2、通过css实现水平居中和垂直居中 通过css创建一个水平居中和垂直居中的div是一件比较麻烦的事情,您必须事先知道...

    将一个绝对定位的div水平垂直居中对齐

    在通常情况下,可以为元素添加margin:0px auto即可让元素在它的父元素水平居中,然后再将它设置为垂直居中对齐即可。但是为绝对定位的对象添加margin:0px auto并不能生效,所以说还是要用老办法实现。 代码示例如下:...

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

    在IE9下面本来应该居中的,结果显示为居左,在IE9以上的版本中,只需要设置 margin:0px auto; 就可以使得DIV居中,下面的示例,大家可以参考下

    Jsp中如何让图片在div中居中

    jsp中让图片在div中居中显示,如上图 例子: 代码如下: //CSS文件 &lt;style type=”text/css”&gt; #bj{ width:200px; height:200px;... margin:0 auto; vertical-align:middle; border:2px solid

    css浏览器兼容性前端人员的必备

    设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。 解决方案是在这个div里面加上display:inline; 例如: &lt;#div id=”imfloat”&gt; 相应的css为 #IamFloat { float:left; margin:5px;/*IE下...

Global site tag (gtag.js) - Google Analytics