div使用margin:0px auto 不居中

30 篇文章 0 订阅

一般在将div居中显示时,使用css:

  
  
  1. divX {margin:0 auto;} 


此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下:

  
  
  1. <div id="cnbruce">margin0 auto 看看内容居中否</div> 


如上调试结果,IE6.0是不居中的,当然解决的办法可以是对网页主体“<body>”声明文本居中,即

  
  
  1. <style> 
  2. body{text-align:center
  3. #cnbruce{width:500pxbackground-color#cccmargin0 auto
  4. </style> 
  5. <div id="cnbruce">margin0 auto 看看内容居中否(加了body文本居中)</div> 


然后,单个div的CSS居中,非要扯上<body>?


于是在不采用“<body>”声明文本居中的情况下,将DOCTYPE声明加上,立马有效果

  
  
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " 
  2.  
  3. http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4. <style> 
  5. #cnbruce{width:500pxbackground-color#cccmargin0 auto
  6. </style> 
  7. <div id="cnbruce">margin0 auto 看看内容居中否(加了DOCTYPE声明)</div>  
其实原理都知道,就是因为用这个“懒人”的HTML调试框,懒得去输入些忘却的东西,到头来还以为真相就是如此呢。。。 同样,关于“一边固定,一边自动扩展”的例子,加与不加在IE效果完全不同。 如下是不加的情况:

     
     
  1. <html xmlns=" 
  2.  
  3. http://www.w3.org/1999/xhtml"> 
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  6. <title>CSS布局</title> 
  7. <style type="text/css"> 
  8. <!-- 
  9. body {margin:0;} 
  10. #dv1 {background-color: #3399FF;float: left;width: 280px;} 
  11. #dv2 {background-color: #FFCC00;width:100%;} 
  12. --> 
  13. </style> 
  14. </head> 
  15. <body> 
  16. <div id="dv1"> 
  17. <pre>#dv1 {background-color: #3399FF;float: left;width: 280px;} </pre> 
  18. </div> 
  19. <div id="dv2"> 
  20. <pre>#dv2 {background-color: #FFCC00;width:100%;}</pre> 
  21. </div> 
  22. </body> 
  23. </html>  



如下是添加了DOCTYPE声明

     
     
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " 
  2.  
  3. http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  4. <html xmlns="http://www.w3.org/1999/xhtml"> 
  5. <head> 
  6. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  7. <title>CSS布局1</title> 
  8. <style type="text/css"> 
  9. <!-- 
  10. body {margin:0;} 
  11. #dv1 {background-color: #3399FF;float: left;width: 280px;} 
  12. #dv2 {background-color: #FFCC00;width:100%;} 
  13. --> 
  14. </style> 
  15. </head> 
  16. <body> 
  17. <div id="dv1"> 
  18. <pre>#dv1 {background-color: #3399FF;float: left;width: 280px;} </pre> 
  19. </div> 
  20. <div id="dv2"> 
  21. <pre>#dv2 {background-color: #FFCC00;width:100%;}</pre> 
  22. </div> 
  23. </body> 
  24. </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文档最顶部,在所有代码和标识之上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值