解析margin的自动值auto

有一个div居中的样式属性,在firefox中显示正常,在IE下就不能居中
找了一下,有的说是要加一个w3c认证的一个声明

加一个3C 调用声明

Html代码 复制代码  收藏代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


我不想加

还有一个说法,说要给body加一个属性

Html代码 复制代码  收藏代码
  1. text-align:center;  
text-align:center;


我更不想加,代价有点大

既然给body加这个属性能行,那干嘛不在外面包上一个带这个属性的div呢
测试之,通过

Html代码 复制代码  收藏代码
  1. <div style="text-align:center;">  
  2.   <div style="margin:0 auto;">居中</div>  
  3. </div>  

 

 

.nav {
 position: relative;
 /*
 margin: 0px  0px 0px 0px;   /*主菜单的距离  为:上,右,下,左*/
 width:961px;
 margin: 0 auto 0px auto;
 background: url(images/bImg/nav_bg.png) no-repeat 0 -36px;
}

======================

使用margin的auto值有什么好说的呢。一个元素在水平方向上所占的长度,由width ,padding ,和margin 决定。这些值中,只有width和margin-left,margin-right可以设为auto。在这里和大家讨论一下三者之间的关系 。下面 介绍一下几条原则:

1. auto 可以解释为:弥补其它部分与所要求总合之间的差别;

2.如果三个属性都没有被设置成auto ,那么margin-right会被强制设为auto;

3.如果两个边界都被设为 auto ,则被设为相等的值。

4. 如果两个边界之一和width设为auto ,则被设置为auto的边界值为0;

5.三个都被设为auto ,则2个边界的值都为0,width的值为最大可能值。

写得有点乱,记得以前看过一些资料有这方面的详细描述,只是现在想不起也找不到了。不过大概也就这几个点了,了解一下就可以。

 

 

转自:http://hotsunshine.iteye.com/blog/1069573

        http://www.cnblogs.com/freeskycd/archive/2010/03/03/1677820.html

 

注意:没有上或者下方向的auto
此应用一定程度上可以代替float,而且更方便,兼容更好

`margin: 0 auto` 是 CSS 中用于**水平居中**块级元素的常用简写属性,其作用及原理如下: --- ### 代码解析 ```css margin: 0 auto; ``` - **等价于**: ```css margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; ``` - **效果**: - 上下外边距为 `0`。 - 左右外边距自动分配,使元素在父容器中水平居中。 --- ### 关键条件 1. **元素必须是块级元素**(如 `div`、`p`、`section`),或通过 `display: block` 显式设置。 - 行内元素(如 `span`)需先改为块级或 `inline-block`。 2. **元素必须设置宽度**(如 `width: 50%` 或 `max-width: 1200px`)。 - 默认宽度为 `100%` 时,左右 `auto` 会计算为 `0`,无法居中。 --- ### 示例代码 ```html <div class="container"> <div class="box">这个盒子会水平居中</div> </div> ``` ```css .container { width: 100%; border: 1px solid #ccc; } .box { width: 80%; /* 必须设置宽度 */ margin: 0 auto; /* 水平居中 */ background: #f0f0f0; text-align: center; } ``` --- ### 常见问题 1. **为什么垂直方向是 `0`?** `0 auto` 中的 `0` 显式清除了上下外边距,避免继承或默认样式干扰。 2. **如何垂直居中?** 需结合其他方法(如 Flexbox、Grid 或绝对定位),例如: ```css .parent { display: flex; justify-content: center; /* 水平居中 */ align-items: center; /* 垂直居中 */ height: 100vh; } ``` 3. **`auto` 的计算规则** - 浏览器将剩余空间均分给左右 `auto`,实现居中。 - 若只写 `margin-left: auto`,元素会右对齐。 4. **与 `text-align: center` 的区别** - `margin: 0 auto` 控制**块级元素自身**居中。 - `text-align: center` 控制**行内内容**(如文字、图片)居中。 5. **响应式设计中的注意事项** - 在移动端优先布局中,常用 `max-width` 替代固定宽度: ```css .box { max-width: 600px; margin: 0 auto; } ``` --- ### 进阶用法 - **结合 `calc()` 动态计算**: ```css .box { width: calc(100% - 40px); margin: 0 auto; } ``` - **与 `padding` 配合实现复杂布局**: ```css .container { padding: 20px; } .box { width: 70%; margin: 0 auto; } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值