margin: 0 auto; 元素水平居中布局无效

失效原因:

  1. 要给居中的元素一个宽度,否则无效。
  2. 该元素一定不能浮动或绝对定位,否则无效。
  3. 在HTML中使用<center></center>标签,需考虑好整体构架,否者全部元素都会居中的。
  4. 有时需要给父级元素添加text-align: center;
  5. 有时可能涉及到 <!DOCTYPE>类型相关定义。

当元素 float 后元素身上发生了什么:

  1. 脱离当前的文档流,变换到容器的边缘,或是另一个浮动box的边缘,若空间不够则向下移动直到可以放下(margin的值是auto或不指定在渲染时会被当做0处理)
  2. 文档流中的line box, inline box将围绕float box
  3. float box若不设宽度将是它实际内容的宽度
  4. 把box都变成block-level box,形成一个新的block formatting context
  5. top/left/right/bottom, z-index无效

滥用float会导致各种bug,诸如:Incorrect Float Shrink-Wrap Bug、Float Squeeze Weird Gap Bug、Float Squeeze Duplicate Last Character Bug、Image Float Bullet Chaos Bug、Staircase Bug、Double Margin Bug、Italics Float Bug、3px Jog Bug、Scared of Floats Bug、Escaping Floats Bug、IE6 Peekaboo Bug……等等。所以在实际使用中有个原则,尽量不同时用2个或以上的float(比如可以用inline-block替代float)

转自 http://blog.csdn.net/Dong_PT/article/details/51239526

原文地址:https://www.cnblogs.com/code1992/p/8592976.html

时间: 2024-11-13 06:31:04

margin: 0 auto; 元素水平居中布局无效的相关文章

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,这个时候

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在IE中失效的解决方案

转自:http://www.cnblogs.com/hongchenok/archive/2012/11/29/2795041.html 最近在开发项目的时候,发现在火狐浏览器中设置外容器margin:0 auto是可行的. 但是到了IE6,IE7,IE8则出现了不能居中的现象. 开始也没怎么在意,刚刚在浏览网页的时候看到这篇文章,帮我解决了这个疑问. 解决方案如下: 很多人都忽略了“文档类型”.下面就是正确设置的文档类型了. <!DOCTYPE html PUBLIC “-//W3C//DTD

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

IE下margin:0 auto为什么不居中?

http://blog.sina.com.cn/s/blog_68c6be330101k7kn.html 我们经常用DIV+CSS布局网页的时候,正常情况下需要将div居中显示时,使用Css样式:margin:0 auto就可以了,但有时使用margin:0 auto后在FireFox浏览器.谷歌Chrome浏览器里能居中,而在IE678里却不能不居中. 例如以下代码: <style type="text/css"> #con{width:980px;martin:0 au

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