margin:0 auto在IE中失效的解决方案

转自:http://www.cnblogs.com/hongchenok/archive/2012/11/29/2795041.html

最近在开发项目的时候,发现在火狐浏览器中设置外容器margin:0 auto是可行的。

但是到了IE6,IE7,IE8则出现了不能居中的现象。

开始也没怎么在意,刚刚在浏览网页的时候看到这篇文章,帮我解决了这个疑问。

解决方案如下:

很多人都忽略了“文档类型”。下面就是正确设置的文档类型了。

<!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”>

另外,如果你使用的IDE是Dreamweaver,还可以通过调整页面属性来解决。该选项在菜单中的修改–>页面属性。

详细设置如下图:

Unicode 标准化表单下面的“包括Unicode签名”选项不要打钩。其他调整成如上的设置即可解决。

知识补充:

关于网页声明,参考:

HTML <!DOCTYPE> 标签

定义和用法

<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前。此标签可告知浏览器文档使用哪种 HTML 或XHTML 规范。

该标签可声明三种 DTD 类型,分别表示严格版本、过渡版本以及基于框架的 HTML 文档。

以下面这个 <!DOCTYPE> 标签为例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

在上面的声明中,声明了文档的根元素是 html,它在公共标识符被定义为 "-//W3C//DTD XHTML 1.0 Strict//EN" 的 DTD 中进行了定义。浏览器将明白如何寻找匹配此公共标识符的 DTD。如果找不到,浏览器将使用公共标识符后面的 URL 作为寻找 DTD 的位置。

提示和注释:

注释:<!DOCTYPE> 标签没有结束标签!

HTML

HTML 4.01 规定了三种文档类型:Strict、Transitional 以及 Frameset。

HTML Strict DTD

如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">HTML Transitional DTD

Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 HTML 的呈现特性时,请使用此类型:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">Frameset DTD

Frameset DTD 应当被用于带有框架的文档。除 frameset 元素取代了 body 元素之外,Frameset DTD 等同于 Transitional DTD:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML

XHTML 1.0 规定了三种 XML 文档类型:Strict、Transitional 以及 Frameset。

XHTML Strict DTD

如果您需要干净的标记,免于表现层的混乱,请使用此类型。请与层叠样式表(CSS)配合使用:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML Transitional DTD

Transitional DTD 可包含 W3C 所期望移入样式表的呈现属性和元素。如果您的读者使用了不支持层叠样式表(CSS)的浏览器以至于您不得不使用 XHTML 的呈现特性时,请使用此类型:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML Frameset DTD

当您希望使用框架时,请使用此 DTD!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

如需检查你是否编写了带有正确 DTD 的合法 XHTML 文档,您可以把您的 XHTML 页面链接到一个 XHTML 验证器。

时间: 2025-01-31 00:31:49

margin:0 auto在IE中失效的解决方案的相关文章

css中元素的auto属性值是什么意思,比如margin:0 auto表示什么?

auto 你可以理解为一种 自动/自适应 的概念 比如 现在项目需要一个宽度为960px的整体布局居中 根据用户浏览器大小不同你将需要使用margin:0 auto;来实现. 无论用户浏览器宽度为多少.960px的定位宽度永远居中. css中的auto是自动适应的意思,而在css中auto往往都是默认值. 正如margin:0 auto,意思就是上下边距为0,左右边距为auto,就是自动适应.但是,如果要使用他的话,就必须给标签配上指定的宽度,如下:<div class="center&q

margin:0 auto 与 text-align:center 的区别

基本概念:1.text-align: 属性规定元素中的文本的水平对齐方式;  该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式;一般情况下设置文本对齐方式的时候使用此属性.例如:div { text-align: left; }  //文本居左对齐.所有浏览器都支持 text-align 属性:任何的版本的 Internet Explorer (包括 IE8)都不支持属性值 "inherit".2.margin 是设置对象四边的外延边距,被称为外补丁或外边距.例如:

margin:0 auto 与 text-align:center

1.text-align:通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式; text-align:center 设置文本或img标签等一些内联对象的居中. 2.margin :是设置对象四边的外延边距. margin:0 auto 设置块元素的居中.   注意:这两个属性IE与FF的理解也有所不同. <body> <p> <img src=""/> </p> </body> 1. 设置 body{ text-a

ie8下面margin:0 auto;不能居中的解决方案,ie8兼容性代码

今天写了个div,用margin:0 auto:来定义他的属性,让他居中,结果,竟然无效. 一开始以为是css里的代码冲突了,检查了好几遍,没问题,然后用火狐和谷歌浏览器测试,居中了... 看来是浏览器兼容性的问题,突然想起现在用了win7,ie已经升级到了ie8,看来问题就处在ie8的兼容性上.百度之.... 特将解决方法复制到下面: IE6,7,Firefox下实现居中一般用:margin: auto 来实现,但在IE8下,这是不够的.现提供两种解决的办法: 方法一(推荐): 首先页首必须设

postion:fixed和margin:0 auto的使用

很多同学将顶部菜单固定,使用postion:fixed,然后使用margin:0 auto进行居中,发现margin:0 auto并不起作用. 通常,我们要让某元素居中,会这样做: #element{ margin:0 auto; } 如果还想让此元素位置固定呢?一般我们会添加position:fixed,如下: #element{ position:fixed; margin:0 auto; } 但是这样做的结果就是,元素不居中了.这说明fixed使对象脱离了正常文档流. 解决方案: #ele

margin:0 auto居中无效

让最外层DIV在IE浏览器中水平居中,除了对其设置margin:0 auto外,一般还要对body设置样式,但一般高版本浏览器无须设置此css样式也能使DIV居中,低版本IE比如IE6和对标准比较严格浏览器需要设置text-align:center. 有时不经意对要居中的最外层设置float:left或float:right也是造成设置margin:0 auto布局不能水平居中原因. 因为设置float是让DIV浮动靠左或浮动靠右,你要让DIV居中肯定需要设置margin:0 auto,这个时候

margin:0 auto

1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无标题文档</title> 6 <style> 7 #box{width:200px;height:200px;background:Red;margin:0 auto;} 8 </style> 9 </head> 10 <body&g

IE浏览器解决margin:0 auto;不居中办法!

一般情况下需要将div居中显示时,使用Css样式:margin:0 auto;或者margin:0 auto 1px;即可,但有时使用margin:0 auto后在firef.Chrome等浏览器里能居中,而在IE678里不居中的现象. 如下代码: <style type="text/css"> #con{width:980px;martin:0 auto;} </style> <div id="con">margin: 0 au

margin:0 auto 在ie不居中的解决办法

一般情况下需要将div居中显示时,使用Css样式:margin:0 auto;或者margin:0 auto 1px;即可,但有时使用margin:0 auto后在firef.Chrome等浏览器里能居中,而在IE678里不居中的现象. 如下代码: <style type="text/css"> #con{width:980px;martin:0 auto;} </style> <div id="con">margin: 0 au