转自:http://www.blogjava.net/sealyu/archive/2010/01/08/308640.html

一般在将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文档最顶部,在所有代码和标识之上。这个是很关键的,不然margin:0 atuo ;都不能居中!

转载:IE下div使用margin:0px auto不居中的原因的更多相关文章

  1. IE下div使用margin:0px auto不居中的原因

    IE下div使用margin:0px auto不居中的原因 一般在将div居中显示时,使用css: divX {margin:0 auto;} 此css在firefox下是好的,但是在ie下不起作用, ...

  2. margin:0 auto;不能居中的原因

    原因: 1.没有设置本身元素和父元素的宽度 2.本身元素使用了绝对定位和浮动 2.没声明DOCTYPE

  3. css————关于margin:0px auto的几个居中问题

    前言 margin:0px auto;适用于指定了固定宽度的div与其它元素,比如p,img等,使用 margin:0px auto,居中是大家在做css div定位时的最常用方法,但是据我自己的使用 ...

  4. margin:0px auto和text-align:center区别

    (1)margin:0px auto :作用于块级元素,对块级元素进行居中 (2)text-align:center:作用于内联元素,必须放在要居中的内联元素所在的块级元素. 例: (1) <d ...

  5. css中设置div水平居中,margin:0px auto无用的情况

    在CSS中加了margin:0px auto;却没有效果,不能实现居中的问题!margin:0px auto;意思就是:上下边界为0.左右依据宽度自适应!就是水平居中的意思.无效的原因是,当你没有设置 ...

  6. css中设置div水平居中,margin:0px auto没用的情况

    在CSS中加了margin:0px auto;却没有效果,不能实现居中的问题!margin:0px auto;意思就是:上下边界为0,左右根据宽度自适应!就是水平居中的意思.无效的原因是,当你没有设置 ...

  7. margin: 0px auto; center 行类 块级

    <html> <head> <title> biaoti </title> </head> <body style="bor ...

  8. 绝对定位后,position:absolute;不能使用margin: 0 auto;实现居中;

    声明: web小白的笔记,欢迎大神指点!联系QQ:1522025433. 我们都知道margin: 0 auto:可也实现块状元素的水平居中:但是对于绝对顶为的元素就会失效: 请看实例: <!d ...

  9. IE8 margin:0 auto 不能居中显示的问题

    ie8下面margin:0 auto;不能居中的解决方案,ie8兼容性代码 今天写了个div,用margin:0 auto:来定义他的属性,让他居中,结果,竟然无效. 一开始以为是css里的代码冲突了 ...

随机推荐

  1. nginx是以多进程的方式来工作的

    nginx是以多进程的方式来工作的. nginx在启动后,会有一个master进程和多个worker进程. master进程主要用来管理worker进程: 包含: 1.接收来自外界的信号,向各work ...

  2. 使用.net的跟踪诊断来记录wcf消息

    首先在项目的config文件中定义以下结点: <system.diagnostics> <sources> <source name="System.Servi ...

  3. 【精】iOS 文件操作:沙盒(SandBox)、文件操作(FileManager)、程序包(NSBundle)

    1.沙盒机制介绍 iOS 中的沙盒机制(SandBox)是一种安全体系. 每一个 iOS 应用程序都有一个单独的文件系统(存储空间).并且仅仅能在相应的文件系统中进行操作,此区域被称为沙盒. 全部的非 ...

  4. linux下使用shell脚本自动化部署项目

    在Java开发项目时经常要把正在开发的项目发布到测试服务器中去测试,一般的话是要把项目先打成war包,然后把war包发布到服务器中,关闭服务器, 最后重新启动服务器,虽然这过程不是很繁琐,但如果是多个 ...

  5. java多线程实验 滚动字

    package com.rgy.Test; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt ...

  6. nginx location URI匹配规则

    当nginx收到一个请求后,会截取请求的url部份,去搜索所有location指令中定义的URI匹配模式.在server模块中可以定义多个location指令来匹配不同的url请求,多个不同的loca ...

  7. web 安全问题(二):XSS攻击

    上文说完了CSRF攻击,本文继续研究它的兄弟XSS攻击. 什么是XSS攻击 XSS攻击的原理 XSS攻击的方法 XSS攻击防御的手段 什么是XSS攻击 XSS攻击全名(Cross-Site-Scrip ...

  8. How to Enable EPEL Repository for RHEL/CentOS 7.x/6.x/5.x

    What is EPEL EPEL (Extra Packages for Enterprise Linux) is open source and free community based repo ...

  9. AngularJS实现跨域请求

    跨域,前端开发中经常遇到的问题,AngularJS实现跨域方式类似于Ajax,使用CORS机制. 下面阐述一下AngularJS中使用$http实现跨域请求数据. AngularJS XMLHttpR ...

  10. 字符串copy推导演变

    #include <stdio.h> #include<string.h> /*基本水平*/ void mycopy1(char *des,char * sou) { unsi ...