解析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,而且更方便,兼容更好

### CSS 中 `margin: 20px auto` 的具体含义和作用 在 CSS 布局中,`margin: 20px auto` 是一种常见的属性声明形式,用于控制元素的外边距。以下是对其含义和作用的详细解析: #### 外边距分解 - **顶部和底部外边距**:`20px` 表示元素的上方和下方分别留出 20 像素的距离。 - **左侧和右侧外边距**:`auto` 则表示由浏览器计算左右两侧的外边距大小[^4]。 #### 左右自动分配机制 当设置 `margin-left` 和 `margin-right` 为 `auto` 时,浏览器会在父容器内均匀分配剩余空间给这两个方向上的外边距。这通常用来实现块级元素在其包含块中的水平居中效果[^3]。 #### 应用场景 1. **水平居中** 如果一个块级元素设置了固定的宽度(例如通过 `width` 属性指定),那么应用 `margin: 20px auto` 可以使其既保持上下固定距离又能够水平居中显示[^3]。 ```css .centered-element { width: 50%; /* 明确的宽度 */ margin: 20px auto; /* 上下20px, 左右自动 */ background-color: lightblue; } ``` 2. **增强可读性和美观度** 设置统一的上下间距有助于提升页面整体视觉体验,而水平居中则常被应用于标题、图片展示区等需要突出显示的内容区域[^4]。 #### 注意事项 - 元素需为 **块级元素** 才能生效。如果是行内元素或者行内块元素,则即使指定了 `margin: 20px auto`,也不会产生预期的效果[^4]。 - 宽度必须明确指定。如果没有设定具体的宽度而是采用默认行为或相对单位如百分比,可能会导致无法正常居中[^3]。 --- ### 示例代码 下面提供了一个完整的 HTML + CSS 实例来演示如何使用 `margin: 20px auto` 达到理想布局效果: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Margin Example</title> <style> body { text-align: center; /* 额外辅助措施 */ } .container { width: 80%; /* 设定明确宽度 */ margin: 20px auto; /* 上下各20px,左右自适应 */ padding: 20px; border: 1px solid black; background-color: #f9f9f9; } </style> </head> <body> <div class="container"> This is a centered container with top and bottom margins of 20 pixels. </div> </body> </html> ``` 此例子展示了如何创建一个带有上下边界以及自动调整左右空白从而达到屏幕中央位置的区块结构[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值