陪你到世界终结txt下载:css兼容

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 18:23:30
div 的垂直居中问题vertical-align:middle; 将行距增加到和整个DIV 一样高line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
2. margin 加倍的问题设置为float 的div 在ie 下设置的margin 会加倍。这是一个ie6
都存在的bug 。解决方案是在这个div 里面加上display:inline; 例如: <#divid=”imfloat”> 相应的css 为#IamFloat{ float:left; margin:5px;/*IE 下理解为10px*/ display:inline;/*IE 下再理解为5px*/}

3.浮动ie 产生的双倍距离#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE 会产生200px 的距离display:inline; //使浮动忽略} 这里细说一下block 与inline 两个元素:block 元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline 元素的特点是, 和其他元素在同一行上, 不可控制( 内嵌元素);
#box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的效果


4. IE 与宽度和高度的问题IE 不认得min-这个定义,但实际上它把正常的width 和height 当作有min 的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width 和min-height 的话,IE 下面根本等于没有设置宽度和高度。比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样: #box{ width:80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height:35px;}


5.页面的最小宽度min -width 是个非常方便的CSS 命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE 不认得这个,而它实际上把width 当做最小宽度来使。为了让这一命令在IE 上也能用,可以把一个

放到 标签下,然后为div 指定一个类, 然后CSS 这样设计: #container{ min-width: 600px;width:e-xpression(document.body.clientWidth < 600? "600px": "auto" );} 第一个min-width是正常的;但第2 行的width 使用了Javascript,这只有IE 才认得,这也会让你的HTML 文档不太正规。它实际上通过Javascript 的判断来实现最小宽度。
6.DIV 浮动IE 文本产生3 象素的bug 左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px 的间距. #box{ float:left; width:800px;}
#left{ float:left; width:50%;} #right{ width:50%;} *html #left{ margin-right:-3px; //这句是关键}

7.IE 捉迷藏的问题当div 应用复杂的时候每个栏中又有一些链接,DIV 等这个时候容易发生捉迷藏的问题。有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。解决办法:对#layout 使用line-height 属性或者给#layout 使用固定高和宽。页面结构尽量简
单。
8.float 的div 闭合;清除浮动;自适应高度;
① 例如:<#div id=”floatA” ><#div id=”floatB” ><#div id=” NOTfloatC” >这里的NOTfloatC并不希望继续平移,而是希望往下排。(其中floatA、floatB 的属性已经设置为float:left;) 这段代码在IE 中毫无问题,问题出在FF。原因是NOTfloatC 并非float 标签,必须将float 标签闭合。在<#div class=”floatB”> <#div class=”NOTfloatC”>之间加上< #div class=”clear”>这个div 一定要注意位置,而且必须与两个具有float 属性的div 同级,之间不能存在嵌套关系,否则会产生异常。并且将clear 这种样式定义为为如下即可: .clear{ clear:both;}
②作为外部wrapper 的div 不要定死高度,为了让高度能自动适应,要在wrapper 里面加上overflow:hidden; 当包含float 的box 的时候,高度自动适应在IE 下无效,这时候应该触发IE 的layout 私有属性(万恶的IE 啊!)用zoom:1;可以做到,这样就达到了兼容。例如某
一个wrapper 如下定义: .colwrapper{ overflow:hidden; zoom:1; margin:5px auto;}
③对于排版,我们用得最多的css 描述可能就是float:left.有的时候我们需要在n 栏的float div后面做一个统一的背景, 譬如:
比如我们要将page 的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right 的向下拉长,而page 居然保存高度不变,问题来了,原因在于page 不是float 属性,而我们的page 由于要居中,不能设置成float, 所以我们应该这样解决
再嵌入一个float left 而宽度是100%的DIV 解决之
④万能float 闭合(非常重要!) 关于clear float 的原理可参见[How To Clear FloatsWithout Structural Markup], 将以下代码加入Global CSS 中, 给需要闭合的div 加上class="clearfix" 即可, 屡试不爽. /* Clear Fix */ .clearfix:after { content:".";display:block; height:0; clear:both; visibility:hidden; } .clearfix { display:inline-block; }
/* Hide from IE Mac */ .clearfix {display:block;} /* End hide from IE Mac */ /* end of clearfix */ 或者这样设置:.hackbox{ display:table; //将对象作为块元素级的表格显示}
11.高度不适应高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用margin 或paddign 时。例: #box {background-color:#eee; }
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }

p 对象中的内容

解决方法:在P 对象上下各加2 个空的div 对象
CSS 代码:.1{height:0px;overflow:hidden;}或者为DIV 加上border 属性。
12 .IE6 下为什么图片下有空隙产生解决这个BUG 的方法也有很多,可以是改变html 的排版,或者设置img 为display:block 或者设置vertical-align 属性为vertical-align:top | bottom |middle |text-bottom 都可以解决.
13.如何对齐文本与文本输入框加上vertical-align:middle;
14.web 标准中定义id 与class 有什么区别吗一.web 标准中是不容许重复ID 的,比如div id="aa" 不容许重复2 次,而class 定义的是类,理论上可以无限重复, 这样需要多次引用的定义便可以使用他. 二.属性的优先级问题ID 的优先级要高于class,看上面的例子三.方便JS 等客户端脚本,如果在页面中要对某个对象进行脚本操作,那么可以给他定义一个ID,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个ID 来得简单.
15. LI 中内容超过长度后以省略号显示的方法此方法适用与IE 与OP 浏览器type="text/css">

16.为什么web 标准中IE 无法设置滚动条颜色了解决办法是将body 换成html http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> content="text/html; charset=gb2312" />
17.为什么无法定义1px 左右高度的容器IE6 下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hidden | zoom:0.08 | line-height:1px
18.怎么样才能让层显示在FLASH 之上呢解决的办法是给FLASH 设置透明
19.怎样使一个层垂直居中于浏览器中这里我们使用百分比绝对定位,与外补丁负值的方法,负值的大小为其自身宽度高度除以二
FF 与IE
1. Div 居中问题div 设置margin-left, margin-right 为auto 时已经居中,IE 不行,IE 需要设定body 居中,首先在父级元素定义text-algin: center;这个的意思就是在父级元素内的内容居中。
2.链接(a 标签)的边框与背景a 链接加边框和背景色,需设置display: block, 同时设置 float: left 保证不换行。参照menubar, 给a 和menubar 设置高度是为了避免底边显示错位,若不设height, 可以在menubar 中插入一个空格。
3.超链接访问过后hover 样式就不出现的问题被点击访问过的超链接样式不在具有hover 和active 了,很多人应该都遇到过这个问题,解决方法是改变CSS 属性的排列顺序: L-V-H-A
Code:
4. 游标手指cursor cursor: pointer 可以同时在IE FF 中显示游标手指状, hand 仅IE可以
5.UL 的padding 与margin ul 标签在FF 中默认是有padding 值的,而在IE 中只有margin默认有值,所以先定义ul{margin:0;padding:0;}就能解决大部分问题
6. FORM 标签这个标签在IE 中,将会自动margin 一些边距,而在FF 中margin 则是0,因此,如果想显示一致,所以最好在css 中指定margin 和padding,针对上面两个问题,我的css 中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头
疼了.
7. BOX 模型解释不一致问题在FF 和IE 中的BOX 模型解释不一致导致相差2px 解决方法:div{margin:30px!important;margin:28px;} 注意这两个margin 的顺序一定不能写反,
important 这个属性IE 不能识别,但别的浏览器可以识别。所以在IE 下其实解释成这样:div
{maring:30px;margin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:xx
px!important; #box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0}
#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-}
8.属性选择器(这个不能算是兼容,是隐藏css 的一个bug) p[id]{}div[id]{} 这个对于IE6.0 和IE6.0 以下的版本都隐藏,FF 和OPera 作用.属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p 标签中有id 的
都是同样式的.
9.最狠的手段- !important; 如果实在没有办法解决一些细节问题,可以用这个方法.FF 对于”!important” 会自动优先解析, 然而IE 则会忽略. 如下.tabd1{ background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style
for FF*/ background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} 值
得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过
10.IE,FF 的默认值问题或许你一直在抱怨为什么要专门为IE 和FF 写不同的CSS,为什
么IE 这样让人头疼,然后一边写css,一边咒骂那个可恶的M$ IE.其实对于css 的标准支持
方面,IE 并没有我们想象的那么可恶,关键在于IE 和FF 的默认值不一样而已,掌握了这
个技巧,你会发现写出兼容FF 和IE 的css 并不是那么困难,或许对于简单的css,你完全
可以不用”!important”这个东西了。我们都知道,浏览器在显示网页的时候,都会根据
网页的css 样式表来决定如何显示,但是我们在样式表中未必会将所有的元素都进行了具体
的描述,当然也没有必要那么做,所以对于那些没有描述的属性,浏览器将采用内置默认的
方式来进行显示,譬如文字,如果你没有在css 中指定颜色,那么浏览器将采用黑色或者系
统颜色来显示,div 或者其他元素的背景,如果在css 中没有被指定,浏览器则将其设置为
白色或者透明,等等其他未定义的样式均如此。所以有很多东西出现FF 和IE 显示不一样
的根本原因在于它们的默认显示不一样,而这个默认样式该如何显示我知道在w3 中有没有
对应的标准来进行规定,因此对于这点也就别去怪罪IE 了。
11.为什么FF 下文本无法撑开容器的高度标准浏览器中固定高度值的容器是不会象IE6 里
那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢?办法就是去掉height 设置
min-height:200px; 这里为了照顾不认识min-height 的IE6 可以这样定义:
{ height:auto!important; height:200px; min-height:200px; }
12.FireFox 下如何使连续长字段自动换行众所周知IE 中直接使用word-wrap:break-word 就
可以了, FF 中我们使用JS 插入的方法来解决
id="ff">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

/* var strContent=obj.innerHTML; var strTemp="";
while(strContent.length>intLen){ strTemp+=strContent.substr(0,intLen)+" ";
strContent=strContent.substr(intLen,strContent.length); } strTemp+=" "+strContent;
obj.innerHTML=strTemp; } if(document.getElementById && !document.all)
toBreakWord("ff", 37); /* ]]> */

13.为什么IE6 下容器的宽度和FF 解释不同呢
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> content="text/html; charset=gb2312" /> ōnclick="alert(this.offsetWidth)">让FireFox 与IE 兼容
问题的差别在于容器的整体宽度
有没有将边框(border)的宽度算在其内,这里IE6 解释为200PX ,而FF 则解释为220PX,那
究竟是怎么导致的问题呢?大家把容器顶部的xml 去掉就会发现原来问题出在这,顶部的申
明触发了IE 的qurks mode,关于qurks mode、standards mode 的相关知识,请参考:http:
//www.microsoft.com/china/msdn/library/webservices/asp.net/ ASPNETusStan.mspx?mfr=true
IE6,IE7,FF IE7.0 出来了,对CSS 的支持又有新问题。浏览器多了,网页兼容性更差了,
疲于奔命的还是我们,为解决IE7.0 的兼容问题,找来了下面这篇文章: 现在我大部分都
是用!important 来hack,对于ie6 和firefox 测试可以正常显示,但是ie7 对!important 可以正
确解释,会导致页面没按要求显示!下面是三个浏览器的兼容性收集.
第一种,是CSS HACK 的方法height:20px; /*For Firefox*/ *height:25px; /*For IE7 &
IE6*/ _height:20px; /*For IE6*/ 注意顺序。这样也属于CSS HACK,不过没有上
面这样简洁。#example { color: #333; } /* Moz */ * html #example { color: #666; } /*
IE6 */ *+html #example { color: #999; } /* IE7 */

type="text/css" href="ie.css" />
第三种,css filter 的办法,以下为经典从国外网站翻译过来的。. 新建一个css 样式如下:
#item { width: 200px; height: 200px; background: red; }
新建一个div,并使用前面定义的css 的样式:
some text here

body 表现这里加入lang 属性,中文为zh: 现在对div 元素再定义
一个样式: *:lang(en) #item{ background:green !important; } 这样做是
为了用!important 覆盖原来的css 样式,由于:lang 选择器ie7.0 并不支持,所以对这句话不会有
任何作用,于是也达到了ie6.0 下同样的效果,但是很不幸地的是,safari 同样不支持此属性,所
以需要加入以下css 样式: #item:empty { background:
green !important } :empty 选择器为css3 的规范,尽管safari 并不支持此规范,但是还
是会选择此元素,不管是否此元素存在,现在绿色会现在在除ie 各版本以外的浏览器上。
对IE6 和FF 的兼容可以考虑以前的!important 个人比较喜欢用第一种,简洁,兼容性比较
好。
div+css 网站布局设计常见错误大全
div+css 是网站设计标准(或称“WEB 标准”)中常用的术语之一,通常为了说明与HTML
网页设计语言中的表格(table)定位方式的区别,因为XHTML 网站设计标准中,不再使用
表格定位技术,而是采用css+div 的方式实现各种定位。应用应用DIV+CSS 编码时很容易
犯一些错误。本文列举了一些常见的错误:
1. 检查HTML 元素是否有拼写错误、是否忘记结束标记
即使是老手也经常会弄错div 的嵌套关系。可以用dreamweaver 的验证功能检查一下有无错
误。
2. 检查CSS 是否正确
检查一下有无拼写错误、是否忘记结尾的} 等。可以利用CleanCSS 来检查CSS 的拼写错
误。CleanCSS 本是为CSS 减肥的工具,但也能检查出拼写错误。
3. 确定错误发生的位置
如果错误影响了整体布局,则可以逐个删除div 块,直到删除某个div 块后显示恢复正常,
即可确定错误发生的位置。
4. 利用border 属性确定出错元素的布局特性
使用float 属性布局一不小心就会出错。这时为元素添加border 属性确定元素边界,错误原
因即水落石出。
5. float 元素的父元素不能指定clear 属性
MacIE 下如果对float 的元素的父元素使用clear 属性,周围的float 元素布局就会混乱。这
是MacIE 的著名的bug,倘若不知道就会走弯路。
6. float 元素务必指定width 属性
很多浏览器在显示未指定width 的float 元素时会有bug。所以不管float 元素的内容如何,
一定要为其指定width 属性。
另外指定元素时尽量使用em 而不是px 做单位。
7. float 元素不能指定margin 和padding 等属性
IE 在显示指定了margin 和padding 的float 元素时有bug。因此不要对float 元素指定margin
和padding 属性(可以在float 元素内部嵌套一个div 来设置margin 和padding)。也可以使用
hack 方法为IE 指定特别的值。
8. float 元素的宽度之和要小于100%
如果float 元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。因此请保证宽
度之和小于99%。
9. 是否重设了默认的样式?
某些属性如margin、padding 等,不同浏览器会有不同的解释。因此最好在开发前首先将全
体的margin、padding 设置为0、列表样式设置为none 等。
10. 是否忘记了写DTD?
如果无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了
写下面这行DTD。
DIV CSS 完美兼容IE6/IE7/FF 的通用方法
关于CSS 对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没
有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助.
一、CSS HACK
以下两种方法几乎能解决现今所有HACK.
1, !important
随着IE7 对!important 的支持, !important 方法现在只针对IE6 的HACK.(注意写法.记得该声
明位置需要提前.)
以下为引用的内容:

2, IE6/IE77 对FireFox
以下为引用的内容:
*+html 与*html 是IE 特有的标签, firefox 暂不支持.而*+html 又为IE7 特有标签.

注意:
*+html 对IE7 的HACK 必须保证HTML 顶部有如下声明:
"http://www.w3.org/TR/html4/loose.dtd">
二、万能float 闭合
关于clear float 的原理可参见[How To Clear Floats Without Structural Markup]
将以下代码加入Global CSS 中,给需要闭合的div 加上class="clearfix" 即可,屡试不爽.
以下为引用的内容:

三、其他兼容技巧
1, FF 下给div 设置padding 后会导致width 和height 增加, 但IE 不会.(可用!important
解决)
2, 居中问题.
1).垂直居中.将line-height 设置为当前div 相同的高度, 再通过vertical-align: middle.( 注
意内容不要换行.)
2).水平居中. margin: 0 auto;(当然不是万能)
3, 若需给a 标签内内容加上样式, 需要设置display: block;(常见于导航标签)
4, FF 和IE 对BOX 理解的差异导致相差2px 的还有设为float 的div 在ie 下margin 加
倍等问题.
5, ul 标签在FF 下面默认有list-style 和padding . 最好事先声明, 以避免不必要的麻烦.
(常见于导航标签和内容列表)
6, 作为外部wrapper 的div 不要定死高度, 最好还加上overflow: hidden.以达到高度自适
应.
7, 关于手形光标. cursor: pointer. 而hand 只适用于IE.
1 针对firefox ie6 ie7 的css 样式
现在大部分都是用!important 来hack,对于ie6 和firefox 测试可以正常显示,
但是ie7 对!important 可以正确解释,会导致页面没按要求显示!找到一个针
对IE7 不错的hack 方式就是使用“*+html”,现在用IE7 浏览一下,应该没有问题了。
现在写一个CSS 可以这样:
以下为引用的内容:
#1 { color: #333; } /* Moz */
* html #1 { color: #666; } /* IE6 */
*+html #1 { color: #999; } /* IE7 */
那么在firefox 下字体颜色显示为#333,IE6 下字体颜色显示为#666,IE7 下字体颜色显示为
#999。
2 css 布局中的居中问题
主要的样式定义如下:
body {TEXT-ALIGN: center;}
#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; }
说明:
首先在父级元素定义TEXT-ALIGN: center;这个的意思就是在父级元素内的内容居中;对于
IE 这样设定就已经可以了。
但在mozilla 中不能居中。解决办法就是在子元素定义时候设定时再加上“MARGIN-RIGHT:
auto;MARGIN-LEFT: auto; ”
需要说明的是,如果你想用这个方法使整个页面要居中,建议不要套在一个DIV 里,你可
以依次拆出多个div,
只要在每个拆出的div 里定义MARGIN-RIGHT: auto;MARGIN-LEFT: auto; 就可以了。
3 盒模型不同解释
#box{ width:600px; //for ie6.0- w\idth:500px; //for ff+ie6.0}
#box{ width:600px!important //for ff width:600px; //for ff+ie6.0 width /**/:500px; //for ie6.0-}
4 浮动ie 产生的双倍距离
#box{ float:left; width:100px; margin:0 0 0 100px; //这种情况之下IE 会产生200px 的距离
display:inline; //使浮动忽略}
这里细说一下block,inline 两个元素,Block 元素的特点是:总是在新行上开始,高度,宽度,行高,
边距都可以控制(块元素);Inline 元素的特点是:和其他元素在同一行上,...不可控制(内嵌元
素);
#box{ display:block; //可以为内嵌元素模拟为块元素display:inline; //实现同一行排列的的效
果diplay:table;
IE 不认得min-这个定义,但实际上它把正常的width 和height 当作有min 的情况来使。这
样问题就大了,如果只用宽度和高度,
正常的浏览器里这两个值就不会变,如果只用min-width 和min-height 的话,IE 下面根本等
于没有设置宽度和高度。
比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:
#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px;
min-height: 35px;}
6 页面的最小宽度
min-width 是个非常方便的CSS 命令,它可以指定元素最小也不能小于某个宽度,这样就能
保证排版一直正确。但IE 不认得这个,
而它实际上把width 当做最小宽度来使。为了让这一命令在IE 上也能用,可以把一个

放到 标签下,然后为div 指定一个类:
然后CSS 这样设计:
#container{ min-width: 600px; width:expression(document.body.clientWidth < 600? "600px":
"auto" );}
第一个min-width 是正常的;但第2 行的width 使用了Javascript,这只有IE 才认得,这也
会让你的HTML 文档不太正规。它实际上通过Javascript 的判断来实现最小宽度。
7 清除浮动
.hackbox{ display:table; //将对象作为块元素级的表格显示}或者.hackbox{ clear:both;}
或者加入:after(伪对象),设置在对象后发生的内容,通常和content 配合使用,IE 不支持此
伪对象,非Ie 浏览器支持,
所以并不影响到IE/WIN 浏览器。这种的最麻烦的......#box:after{ content: "."; display: block;
height: 0; clear: both; visibility: hidden;}
8 DIV 浮动IE 文本产生3 象素的bug
左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px 的间距.
#box{ float:left; width:800px;}#left{ float:left; width:50%;}#right{ width:50%;}*html
#left{ margin-right:-3px; //这句是关键}
HTML 代码

9 属性选择器(这个不能算是兼容,是隐藏css 的一个bug)
p[id]{}div[id]{}
这个对于IE6.0 和IE6.0 以下的版本都隐藏,FF 和OPera 作用
属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围
比较大,如p[id]中,所有p 标签中有id 的都是同样式的.
10 IE 捉迷藏的问题
当div 应用复杂的时候每个栏中又有一些链接,DIV 等这个时候容易发生捉迷藏的问题。
有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。
解决办法:对#layout 使用line-height 属性或者给#layout 使用固定高和宽。页面结构尽量简
单。
11 高度不适应
高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象
使用
margin 或paddign 时。
例:

p 对象中的内容



CSS:#box {background-color:#eee; }
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }
解决方法:在P 对象上下各加2 个空的div 对象CSS 代码:.1{height:0px;overflow:hidden;}
或者为DIV 加上border 属性。
六、CSS 兼容要点分析IE vs FF
CSS 兼容要点:
DOCTYPE 影响CSS 处理
FF: div 设置margin-left, margin-right 为auto 时已经居中, IE 不行
FF: body 设置text-align 时, div 需要设置margin: auto(主要是margin-left,margin-right) 方
可居中
FF: 设置padding 后, div 会增加height 和width, 但IE 不会, 故需要用!important 多设
一个height 和width
FF: 支持!important, IE 则忽略, 可用!important 为FF 特别设置样式
div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV 一样高
line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行
cursor: pointer 可以同时在IE FF 中显示游标手指状, hand 仅IE 可以
FF: 链接加边框和背景色,需设置display: block, 同时设置float: left 保证不换行。参照
menubar, 给a 和menubar 设置高度是为了避免底边显示错位, 若不设height, 可以在
menubar 中插入一个空格XHTML+CSS 兼容性解决方案小集
使用XHTML+CSS 构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思
路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^
1、在mozilla firefox 和IE 中的BOX 模型解释不一致导致相差2px 解决方法:
div{margin:30px!important;margin:28px;}
注意这两个margin 的顺序一定不能写反,据阿捷的说法!important 这个属性IE 不能识别,
但别的浏览器可以识别。所以在IE 下其实解释成这样:
div{maring:30px;margin:28px}
重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;
2、IE5 和IE6 的BOX 解释不一致IE5 下div{width:300px;margin:0 10px 0 10px;}div 的宽度
会被解释为300px-10px(右填充)-10px(左填充)最终div 的宽度为280px,而在IE6 和其他浏
览器上宽度则是以300px+10px(右填充)+10px(左填充)=320px 来计算的。这时我们可以做如
下修改
div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}
,关于这个/**/是什么我也不太明白,只知道IE5 和firefox 都支持但IE6 不支持,如果有人
理解的话,请告诉我一声,谢了!:)
3、ul 标签在Mozilla 中默认是有padding 值的,而在IE 中只有margin 有值所以先定义
ul{margin:0;padding:0;}
就能解决大部分问题
4、关于脚本,在xhtml1.1 中不支持language 属性,只需要把代码改为
< type="text/java">
就可以了
七、10 个你未必知道的CSS 技巧
1、CSS 字体属性简写规则
一般用CSS 设定字体属性是这样做的:
以下为引用的内容:
font-weight:bold;
font-style:italic;
font-varient:small-caps;
font-size:1em;
line-height:1.5em;
font-family:verdana,sans-serif;
但也可以把它们全部写到一行上去:
font: bold italic small-caps 1em/1.5em verdana,sans-serif;
真不错!只有一点要提醒的:这种简写方法只有在同时指定font-size 和font-family 属性时才
起作用。而且,如果你没有设定font-weight, font-style, 以及font-varient ,他们会使用缺省
值,这点要记上。
2、同时使用两个类
一般只能给一个元素设定一个类(Class),但这并不意味着不能用两个。事实上,你可以这
样:

...


同时给P 元素两个类,中间用空格格开,这样所有text 和side 两个类的属性都会加到P 元
素上来。如果它们两个类中的属性有冲突的话,后设置的起作用,即在CSS 文件中放在后
面的类的属性起作用。
补充:对于一个ID,不能这样写

...

也不能这样写
3、CSS border 的缺省值
通常可以设定边界的颜色,宽度和风格,如:
border: 3px solid #000
这位把边界显示成3 像素宽,黑色,实线。但实际上这里只需要指定风格即可。
如果只指定了风格,其他属性就会使用缺省值。一般地,Border 的宽度缺省是medium,一
般等于3 到4 个像素;缺省的颜色是其中文字的颜色。如果这个值正好合适的话,就不用设
那么多了。
4、CSS 用于文档打印
许多网站上都有一个针对打印的版本,但实际上这并不需要,因为可以用CSS 来设定打印
风格。
也就是说,可以为页面指定两个CSS 文件,一个用于屏幕显示,一个用于打印:
type="text/css" rel="stylesheet" href="printstyle.css" media="print" />
第1 行就是显示,第2 行是打印,注意其中的media 属性。
但应该在打印CSS 中写什么东西呢?你可以按设计普通CSS 的方法来设定它。设计的同时
就可以把这个CSS 设成显示CSS 来检查它的效果。也许你会使用display: none 这个命令来
关掉一些装饰图片,再关掉一些导航按钮。要想了解更多,可以看“打印差异”这一篇。
5、图片替换技巧
一般都建议用标准的HTML 来显示文字,而不要使用图片,这样不但快,也更具可读性。
但如果你想用一些特殊字体时,就只能用图片了。
比如你想整个卖东西的图标,你就用了这个图片:

Buy widgets


这当然可以,但对搜索引擎来说,和正常文字相比,它们对alt 里面的替换文字几乎没有兴
趣这是因为许多设计者在这里放许多关键词来骗搜索引擎。所以方法应该是这样的:

Buy widgets


但这样就没有特殊字体了。要想达到同样效果,可以这样设计CSS:
h1 { background: url(/blog/widget-image.gif) no-repeat; height: image height text-indent:
-2000px }
注意把image height 换成真的图片的高度。这里,图片会当作背景显示出来,而真正的文字
由于设定了-2000 像素这个缩进,它们会出现在屏幕左边2000 点的地方,就看不见了。但
这对于关闭图片的人来说,可能全部看不到了,这点要注意。
6、CSS box 模型的另一种调整技巧
这个Box 模型的调整主要是针对IE6 之前的IE 浏览器的,它们把边界宽度和空白都算在元
素宽度上。比如:
#box { width: 100px; border: 5px; padding: 20px }
这样调用它:
...

这时盒子的全宽应该是150 点,这在除IE6 之前的IE 浏览器之外的所有浏览器上都是正确
的。但在IE5 这样的浏览器上,它的全宽仍是100 点。可以用以前人发明的Box 调整方法
来处理这种差异。
但用CSS 也可以达到同样的目的,让它们显示效果一致。
#box { width: 150px } #box div { border: 5px; padding: 20px }
这样调用:
...

这样,不管什么浏览器,宽度都是150 点了。
7、块元素居中对齐
如果想做个固定宽度的网页并且想让网页水平居中的话,通常是这样:
#content { width: 700px; margin: 0 auto }
你会使用
来围上所有元素。这很简单,但不够好,IE6 之前版本会显示
不出这种效果。改CSS 如下:
body { text-align: center } #content { text-align: left; width: 700px; margin: 0 auto }
这会把网页内容都居中,所以在Content 中又加入了
text-align: left 。
8、用CSS 来处理垂直对齐
垂直对齐用表格可以很方便地实现,设定表格单元vertical-align: middle 就可以了。但对
CSS 来说这没用。如果你想设定一个导航条是2em 高,而想让导航文字垂直居中的话,设
定这个属性是没用的。
CSS 方法是什么呢?对了,把这些文字的行高设为2em:line-height: 2em ,这就可以了。
9、CSS 在容器内定位
CSS 的一个好处是可以把一个元素任意定位,在一个容器内也可以。比如对这个容器:
#container { position: relative }
这样容器内所有的元素都会相对定位,可以这样用:

如果想定位到距左30 点,距上5 点,可以这样:
#navigation { position: absolute; left: 30px; top: 5px }
当然,你还可以这样:
margin: 5px 0 0 30px
注意4 个数字的顺序是:上、右、下、左。当然,有时候定位的方法而不是边距的方法更好
些。
10、直通到屏幕底部的背景色
在垂直方向是进行控制是CSS 所不能的。如果你想让导航栏和内容栏一样直通到页面底部,
用表格是很方便的,但如果只用这样的CSS:
#navigation { background: blue; width: 150px }
较短的导航条是不会直通到底部的,半路内容结束时它就结束了。该怎么办呢?
不幸的是,只能采用欺骗的手段了,给这较短的一栏加上个背景图,宽度和栏宽一样,并让
它的颜色和设定的背景色一样。
body { background: url(/blog/blue-image.gif) 0 0 repeat-y }
此时不能用em 做单位,因为那样的话,一旦读者改变了字体大小,这个花招就会露馅,只
能使用px。
HTML 的SPAN 和DIV 的区别
SPAN 和DIV 的区别在于,DIV(division)是一个块级元素,可以包含段落、标题、表格,
乃至诸如章节、摘要和备注等。而SPAN 是行内元素,SPAN 的前后是不会换行的,它没
有结构的意义,纯粹是应用样式,当其他行内元素都不合适时,可以使用SPAN。
SPAN 标记有一个重要而实用的特性,即它什么事也不会做,它的唯一目的就是围绕
你的HTML 代码中的其它元素,这样你就可以为它们指定样式了。在此例中,标识
符允许你将一个段落分成不同的部分。还有一个标识符具有类似的功能,
DIV 也
被用来在HTML 文件中建立逻辑部分。但与
SPAN 不同,
工作于文本块一级,它
在它所包含的HTML 元素的前面及后面都引入了行分隔。
SPAN 标记有一个重要而实用的特性,即它什么事也不会做,它的唯一目的就是围绕你的
HTML 代码中的其它元素,这样你就可以为它们指定样式了。在此例中,标识符允许你将
一个段落分成不同的部分。还有一个标识符具有类似的功能, DIV 也被用来在HTML
文件中建立逻辑部分。但与SPAN 不同, 工作于文本块一级,它在它所包含的HTML 元素
的前面及后面都引入了行分隔。
div 布局时不能居中、居中失灵的解决
一般情况下,div 不能居中,div 居中失灵是因为页面没有声明引起的:加上PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
即可
使用margin-left:auto;margin-right:auto; 可以让你的div 居中对齐。如
.style{margin-left:auto;margin-right:auto;}
缩写形式为:
.style{margin:0 auto;}
数字0 表示上下边距是0。可以按照需要设置成不同的值。
查看下面的例子:
以下为引用的内容:
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml" lang="zh-cn">


居中div 演示效果



居中div 演示效果



注意,需要加上上面的那句
才能生效,要是不想要这句的话,也可以给body 加一个属性:
body{text-align:center;}
另外,让div 内的内容(包括文字及图片)居中的代码是: text-align:center;
解决Flash 在Div 中无法居中
以下为引用的内容:





#banner{margin:0 auto;} -----用这个动画是距中了
#head{margin:0 auto;} ------用这个整个页面都距中啦~~
FireFox 和IE 浏览器对于DIV+CSS 设计的区别及对策
1、实际像素
IE/Opera:对象的实际宽度= (margin-left) + width + (margin-right)
Firefox/Mozilla:对象的实际宽度= (margin-left) + (border-left-width) + (padding- left) + width +
(padding-right) + (border-right-width) + (margin-right)
所以排列好及列的表格时ie 和ff 显示宽度稍有区别
2、水平居中
问题:div 里的内容,ie 默认为center,而ff 默认left
解决:mairgin:0px auto;
3、高度问题
问题:如果设置了一个DIV 的高度,当DIV 里实际内容大于所设高度,ie 会自动拉伸以适
应DIV 容器大小,ff 会固定DIV 的告诉,超过部分超出DIV 底线以外,出现和下面的内容
重叠的现象
解决:控制恰当的高度,或者不写,让浏览器自动调节高度,或者设置overflow:hidden;
4、clear:both;
问题:如果上面用float 控制了n 列DIV,下面ie 会自动检测自动排列,ff 则可能很不老实,
到处乱动
解决:float 结束后的下一个标签加clear:both;以结束float 的控制
5、最大/小宽度问题
问题:min-width,max-width 只是ff 的命令,如何让ie 实现同样的效果
解决:ie 不认识min-和max-,实际ie 认为min-width、max-width 和width 效果一样,可以
用下面方法解决
#cctext{
min-width: 700px;
max-width: 1000px;
width:expression(document.body.clientWidth<700 ? "700px" : document.body.clientWidth>1000 ?
"1000px" : "auto");
}
6、!important 支持
问题:ff 支持ie6.0 不支持
解决:无。ie 会忽略。
7、游标状态
问题:cursor:hand;仅ie 支持,显示手指状态
解决:使用cursor:pointer;ie 和ff 都支持
8、单位问题
问题:任何距离的数值ie 可以不加单位,ff 必须要求写单位(0 除外)
解决:写全单位如padding:0px;
查看文章
/zz/div+css - Firefox 和IE 浏览器兼容问题- padding-right 在IE6 下导致抖动 由于IE6 的盒模型计算缺陷,padding-right 在特定的情况会下导致抖动。
[出现抖动的代码]
最近在写一个Div+Css 布局的网站首页,以前写的页面都统一width:900px;不存在什么布局呀什么float 的设置。现在没办法呀!要对页面进行切割,分块。幸好,有点css 的基础,不过用起来就比较郁闷了。在ie 和firefox 下,相同的属性值往往会有不同的显示效果。没办法要兼容浏览器只得一个一个bug 去找。但完全兼容浏览器是无法做到的,所以也只能将个大概的效果展示出来,不要偏差太大太明显就行。
首先,需要提出的是float 这个浮动属性,这是div+css 布局的关键所在。float:left;float:right;是常用的浮动属性。为了使div 能在一行排列,不得补用到它们。呵呵!不就是个float 吗?这有什么好提的,要浮动我就float 一下呀。哎!话是这么说,但真正用到时却出问题了。
在ie 下,只要前一个div 有float:left;后面的div 宽度不超过(总body 的宽度)-(前一个div的宽度),后面的div 就自动浮动,并排列在同一行。ie 和firefox 下,这点效果是一样。好,接着往下,下一行也这样布局,就分两栏吧。







这样的布局,在ie 下和火狐下的显示效果就不同了在firefox 下的margin-top:20px;没效果。。。。
在ie 下div3 的margin-top 有效果,而在firefox 下却没效果。为什么?
翻来覆去的想,终究没有想明白。没办法了,后来我有改css.偶然,给div2 加上了float:left
属性,然后margin-top:20px 都有效果了。郁闷吧呵呵不过还是没弄明白为什么会这样,
问题解决了就ok 了!
下一个问题是ul 的问题。在ie 下和firefox 下注意了ul{margin-left:10px;}的效果是不同
的,这样设置的效果才会相同
ul{padding:0;margin-left:10px;}在火狐下默认的padding!=0 所以需要这样来设置下...
呵呵愚昧的个人见解!
div+css 扩展框问题浮动下降IE 与Firefox 兼容性整理2008-08-14 10:57div+css 扩展框问题
浮动下降IE 与Firefox 兼容性整理
图文混排容易导致扩展框问题.
扩展框问题

这样排版容易导致扩展框问题.
尽量定义宽高给定值
* 浮动下降问题[size=+0]
加上{float:left;} 即可```
IE6 的双倍边距BUG
解决办法是加上display:inline
IE6 下为什么图片下方有空隙产生
解决这个BUG 的方法也有很多,可以是改变html 的排版,或者设置img 为display:block
或者设置vertical-align 属性为vertical-align:top | bottom |middle |text-bottom 都可以解决.
IE6 下这两个层中间怎么有间隙
这个IE 的3PX BUG 也是经常出现的,解决的办法是给.right 也同样浮动float:left 或者相对
IE6 定义.left
如何对齐文本与文本输入筐
遇到此种问题,设置文本框的vertical-align:middle 就可以了
为什么FF 下文本无法撑开容器的高度
[size=+0]
标准浏览器中固定高度值的容器是不会象IE6 里那样被撑开的,那我又想固定高度,又想能
被撑开需要怎样设置呢?办法就是去掉height 设置min-height:200px; 这里为了照顾不认识
min-height 的IE6 可以这样定义:
{
height:auto!important;
height:200px;
min-height:200px;
}