一般在将div居中显示时,使用css:
divX {margin:0 auto;}
此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下:
<div id="cnbruce">margin: 0 auto 看看内容居中否</div>
如上调试结果,IE6.0是不居中的,当然解决的办法可以是对网页主体“<body>”声明文本居中,即
[ Copy ] [ Run ] [ Save ]
< style>
body{text-align:center}
#cnbruce{width:500px; background-color: #ccc; margin: 0 auto}
< /style>
< div id="cnbruce">margin: 0 auto 看看内容居中否(加了body文本居中)</div>
然后,单个div的CSS居中,非要扯上<body>?
于是在不采用“<body>”声明文本居中的情况下,将DOCTYPE声明加上,立马有效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< style>
#cnbruce{width:500px; background-color: #ccc; margin: 0 auto}
< /style>
< div id="cnbruce">margin: 0 auto 看看内容居中否(加了DOCTYPE声明)</div>
其实原理都知道,就是因为用这个“懒人”的HTML调试框,懒得去输入些忘却的东西,到头来还以为真相就是如此呢。。。
同样,关于“一边固定,一边自动扩展”的例子,加与不加在IE效果完全不同
如下是不加的情况:
[ Copy ] [ Run ] [ Save ]
< html xmlns="http://www.w3.org/1999/xhtml">
< head>
< meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
< title>CSS布局</title>
< style type="text/css">
< !--
body {
margin:0;
}
#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
}
#dv2 {
background-color: #FFCC00;
width:100%;
}
-->
< /style>
< /head>
< body>
< div id="dv1">
< pre>#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
} </pre>
< /div>
< div id="dv2">
< pre>#dv2 {
background-color: #FFCC00;
width:100%;
}
< /pre>
< /div>
< /body>
< /html>
如下是添加了DOCTYPE声明
[ Copy ] [ Run ] [ Save ]
< !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">
< head>
< meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
< title>CSS布局1</title>
< style type="text/css">
< !--
body {
margin:0;
}
#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
}
#dv2 {
background-color: #FFCC00;
width:100%;
}
-->
< /style>
< /head>
< body>
< div id="dv1">
< pre>#dv1 {
background-color: #3399FF;
float: left;
width: 280px;
} </pre>
< /div>
< div id="dv2">
< pre>#dv2 {
background-color: #FFCC00;
width:100%;
}
< /pre>
< /div>
< /body>
< /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文档最顶部,在所有代码和标识之上。
分享到:
相关推荐
此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下: 复制代码代码如下: <div id=”cnbruce”>margin: 0 auto 看看内容居中否</div> 如上调试结果,IE6.0是不居中的,当然解决的办法可以是对网页主体...
今天遇到使用一个,div元素使用了以下样式 div.wrap{ width:1000px;...在火狐下此div水平居中,但在IE下不居中。 原因是,此div的父级元素没有使用以下样式 div.wrap_parent{text-align:center;} 特此记录
正常情况下需要将div居中显示时,使用Css样式:margin:0 auto即可,但有时使用margin:0 auto后在FF、Chrome里能居中,而在IE678里不居中的现象。 如下代码: 复制代码代码如下:<style type=”text/css”>#con{...
} 此css在firefox下是好的,但是在ie下不起作用,网上看到原因如下: <div id=cnbruce>margin: 0 auto 看看内容居中否</div> 如上调试结果,IE6.0是不居中的,当然解决的办法可以是对网页主体“<body>”声明...
复制代码代码如下: XHTML CODE: <div id=”layout”>一列固定宽度居中</div> CSS CODE: 复制代码代码如下: #layout{ background-color:#C7E091; border:2px solid #B0BCA6;... margin:0px auto;/*外边距参数*/ }
复制代码代码如下: div { position:absolute; width:500px; height:260px; top:50%; left:50%; margin-left:-250px; height:-130px; z-index:1000; } 文字居中:text-align:center; height:22px;line-height:22px;...
一、margin:auto 0 #wrap { margin:0 auto;} 上面这段代码的意思是说使wrap这个div到左右两侧的距离自动设置,上下为0(可以为任意)。 二、相对定位与负的边距 #wrap { position:relative; width:760px; left...
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline; 例如: <#div id=”imfloat”> 相应的css为 #IamFloat{ float:left; margin:5px;/*IE下理解...
然后利用margin:0 auto;实现图片的水平居中;(有的设计师为图片再加个div标签,然后通过div标签的margin实现居中)。 如果图片在div中下的span属性中,必须转换成display:block;然后padding-top:10px。 以上就是...
一个div在浏览器水平居中的实现方法 第一种方法: CSS Code复制内容到剪贴板 div { margin: 0 auto; width: 960px; } 第二种方法(兼容IE): CSS Code复制内容到剪贴板 body { text-align: ...
复制一下代码到记事本,修改为html后缀的文件。 代码 <html xmlns=”... <head> <... charset=utf-8″ />...<div xss=removed> ...div style=”width:50px; height:50px;... margin:0 auto;
margin:auto; left:0; right:0; top:0; bottom:0; width:200px; height:150px; } 如果只需要左右居中,那么把 bottom:0; 或者 top:0; 删掉即可 如果只需要上下居中,那么把 left:0; 或者 right:0; 即可 下面附一个...
让一个层水平垂直居中是一个非常常见的布局方式,但在html中水平居中使用margin:0px auto;可以实现,但垂直居中使用外边距是无法达到效果的。(页面设置height:100%;是无效的),这里使用绝对定位+负外边距的方式来...
宽度高度不固定div的水平居中演示如下: 水平居中代码: html部分<div class=container><div class=center><a>1</a><a>2</a><a>3</a><div xss=removed></div></div> css部分.container{width:500px;height:80px;...
1、通过css实现水平居中: 代码如下: .className{ margin:0 auto; width:200px; height:200px; } 2、通过css实现水平居中和垂直居中 通过css创建一个水平居中和垂直居中的div是一件比较麻烦的事情,您必须事先知道...
在通常情况下,可以为元素添加margin:0px auto即可让元素在它的父元素水平居中,然后再将它设置为垂直居中对齐即可。但是为绝对定位的对象添加margin:0px auto并不能生效,所以说还是要用老办法实现。 代码示例如下:...
在IE9下面本来应该居中的,结果显示为居左,在IE9以上的版本中,只需要设置 margin:0px auto; 就可以使得DIV居中,下面的示例,大家可以参考下
jsp中让图片在div中居中显示,如上图 例子: 代码如下: //CSS文件 <style type=”text/css”> #bj{ width:200px; height:200px;... margin:0 auto; vertical-align:middle; border:2px solid
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。 解决方案是在这个div里面加上display:inline; 例如: <#div id=”imfloat”> 相应的css为 #IamFloat { float:left; margin:5px;/*IE下...