`
- 浏览:
47703 次
- 性别:
- 来自:
上海
-
关于CSS浏览器兼容问题整理(IE6.0、IE7.0 与 FireFox)
-
最全的CSS浏览器兼容问题整理(IE6.0、IE7.0与FireFox)
-
CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE影响CSS处理,作为W3C的标准,一定要加DOCTYPE声名.
- CSS技巧
-
1.div的垂直居中问题
-
vertical-align:middle;将行距增加到和整个DIV一样高line-height:200px;然后插入文字,就垂直居中了。缺点是要控制内容不要换行
-
2.margin加倍的问题
-
设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。解决方案是在这个div里面加上display:inline;
- 例如:
-
<#divid=”imfloat”>
- 相应的css为
-
#imfloat{
-
float:left;
-
margin:5px;
-
display:inline;}
-
3.浮动ie产生的双倍距离
-
#box{float:left;width:100px;margin:000100px;//这种情况之下IE会产生200px的距离display:inline;//使浮动忽略}
-
这里细说一下block与inline两个元素:block元素的特点是,总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是,和其他元素在同一行上,不可控制(内嵌元素);
-
#box{display:block;//可以为内嵌元素模拟为块元素display:inline;//实现同一行排列的效果diplay:table;
-
4IE与宽度和高度的问题
- 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>放到<body>标签下,然后为div指定一个类,然后CSS这样设计:
-
#container{min-width:600px;width:expression(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;//这句是关键}
-
<divid="box">
-
<divid="left"></div>
-
<divid="right"></div>
- </div>
-
7.IE捉迷藏的问题
- 当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。
-
有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。解决办法:对#layout使用line-height属性或者给#layout使用固定高和宽。页面结构尽量简单。
-
8.float的div闭合;清除浮动;自适应高度;
-
①例如:<#divid=”floatA”><#divid=”floatB”><#divid=”NOTfloatC”>这里的NOTfloatC并不希望继续平移,而是希望往下排。(其中floatA、floatB的属性已经设置为float:left;)
-
这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。在<#divclass=”floatB”><#divclass=”NOTfloatC”>之间加上<#divclass=”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:5pxauto;}
-
③对于排版,我们用得最多的css描述可能就是float:left.有的时候我们需要在n栏的floatdiv后面做一个统一的背景,譬如:
- <divid=”page”>
-
<divid=”left”></div>
-
<divid=”center”></div>
-
<divid=”right”></div>
- </div>
-
比如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着leftcenterright的向下拉长,而page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成float,所以我们应该这样解决
- <divid=”page”>
-
<divid=”bg”style=”float:left;width:100%”>
-
<divid=”left”></div>
-
<divid=”center”></div>
-
<divid=”right”></div>
- </div>
- </div>
-
再嵌入一个floatleft而宽度是100%的DIV解决之
- ④万能float闭合(非常重要!)
-
关于clearfloat的原理可参见[HowToClearFloatsWithoutStructuralMarkup],将以下代码加入GlobalCSS中,给需要闭合的div加上class="clearfix"即可,屡试不爽.
-
-
.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}
-
.clearfix{display:inline-block;}
-
-
.clearfix{display:block;}
-
-
-
或者这样设置:.hackbox{display:table;//将对象作为块元素级的表格显示}
- 9.高度不适应
- 高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用margin或paddign时。
- 例:
-
#box{background-color:#eee;}
-
#boxp{margin-top:20px;margin-bottom:20px;text-align:center;}
-
<divid="box">
- <p>p对象中的内容</p>
- </div>
-
解决方法:在P对象上下各加2个空的div对象CSS代码:.1{height:0px;overflow:hidden;}或者为DIV加上border属性。
-
10.IE6下为什么图片下有空隙产生
-
解决这个BUG的方法也有很多,可以是改变html的排版,或者设置img为display:block或者设置vertical-align属性为vertical-align:top|bottom|middle|text-bottom都可以解决.
-
11.如何对齐文本与文本输入框
-
加上vertical-align:middle;
-
<styletype="text/css">
- <!--
- input{
-
width:200px;
-
height:30px;
-
border:1pxsolidred;
-
vertical-align:middle;
- }
- -->
- </style>
-
12.web标准中定义id与class有什么区别吗
-
一.web标准中是不容许重复ID的,比如divid="aa"不容许重复2次,而class定义的是类,理论上可以无限重复,这样需要多次引用的定义便可以使用他.
- 二.属性的优先级问题
- ID的优先级要高于class,看上面的例子
- 三.方便JS等客户端脚本,如果在页面中要对某个对象进行脚本操作,那么可以给他定义一个ID,否则只能利用遍历页面元素加上指定特定属性来找到它,这是相对浪费时间资源,远远不如一个ID来得简单.
-
13.LI中内容超过长度后以省略号显示的方法
- 此方法适用与IE与OP浏览器
-
<styletype="text/css">
- <!--
- li{
-
width:200px;
-
white-space:nowrap;
-
text-overflow:ellipsis;
-
-o-text-overflow:ellipsis;
-
overflow:hidden;
- }
- -->
- </style>
-
14.为什么web标准中IE无法设置滚动条颜色了
- 解决办法是将body换成html
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
-
<styletype="text/css">
- <!--
- html{
-
scrollbar-face-color:#f6f6f6;
-
scrollbar-highlight-color:#fff;
-
scrollbar-shadow-color:#eeeeee;
-
scrollbar-3dlight-color:#eeeeee;
-
scrollbar-arrow-color:#000;
-
scrollbar-track-color:#fff;
-
scrollbar-darkshadow-color:#fff;
- }
- -->
- </style>
-
15.为什么无法定义1px左右高度的容器
-
IE6下这个问题是因为默认的行高造成的,解决的方法也有很多,例如:overflow:hidden|zoom:0.08|line-height:1px
-
16.怎么样才能让层显示在FLASH之上呢
- 解决的办法是给FLASH设置透明
-
<paramname="wmode"value="transparent"/>
-
17.怎样使一个层垂直居中于浏览器中
- 这里我们使用百分比绝对定位,与外补丁负值的方法,负值的大小为其自身宽度高度除以二
-
<styletype="text/css">
- <!--
- div{
-
position:absolute;
-
top:50%;
-
lef:50%;
-
margin:-100px00-100px;
-
width:200px;
-
height:200px;
-
border:1pxsolidred;
- }
- -->
- </style>
- 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:
-
<styletype="text/css">
- <!--
- a:link{}
- a:visited{}
- a:hover{}
- a:active{}
- -->
- </style>
-
4.游标手指cursor
-
cursor:pointer可以同时在IEFF中显示游标手指状,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:xxpx!important;
-
#box{width:600px;//forie6.0-w/idth:500px;//forff+ie6.0}
-
#box{width:600px!important//forffwidth:600px;//forff+ie6.0width:500px;//forie6.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-repeat0px0px!important;
-
background:url(/res/images/up/tab1.gif)no-repeat1px0px;}
-
值得注意的是,一定要将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插入10;的方法来解决
-
<styletype="text/css">
- <!--
- div{
-
width:300px;
- word-wrap:break-word;
-
border:1pxsolidred;
- }
- -->
- </style>
-
<divid="ff">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
-
<scrīpttype="text/javascrīpt">
-
- functiontoBreakWord(el,intLen){
- varōbj=document.getElementById(el);
- varstrContent=obj.innerHTML;
-
varstrTemp="";
- 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);
-
- </scrīpt>
-
13.为什么IE6下容器的宽度和FF解释不同呢
-
<?xmlversion="1.0"encoding="gb2312"?>
-
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312"/>
-
<styletype="text/css">
- <!--
- div{
-
cursor:pointer;
-
width:200px;
-
height:200px;
-
border:10pxsolidred
- }
- -->
- </style>
-
<divōnclick="alert(this.offsetWidth)">让FireFox与IE兼容</div>
-
问题的差别在于容器的整体宽度有没有将边框(border)的宽度算在其内,这里IE6解释为200PX,而FF则解释为220PX,那究竟是怎么导致的问题呢?大家把容器顶部的xml去掉就会发现原来问题出在这,顶部的申明触发了IE的qurksmode,关于qurksmode、standardsmode的相关知识,请参考:http://www.microsoft.com/china/msdn/library/webservices/asp.net/
- ASPNETusStan.mspx?mfr=true
-
IE6,IE7,FF
-
IE7.0出来了,对CSS的支持又有新问题。浏览器多了,网Bpx;
-
_height:20px;
- 注意顺序。
- 这样也属于CSSHACK,不过没有上面这样简洁。
-
#example{color:#333;}
-
*html#example{color:#666;}
-
*+html#example{color:#999;}
- 第二种,是使用IE专用的条件注释
- <!--其他浏览器-->
-
<linkrel="stylesheet"type="text/css"href="css.css"/>
-
<!--[ifIE7]>
-
<!--适合于IE7-->
-
<linkrel="stylesheet"type="text/css"href="ie7.css"/>
- <![endif]-->
-
<!--[iflteIE6]>
-
<!--适合于IE6及一下-->
-
<linkrel="stylesheet"type="text/css"href="ie.css"/>
- <![endif]-->
- 第三种,cssfilter的办法,以下为经典从国外网站翻译过来的。.
- 新建一个css样式如下:
-
#item{
-
width:200px;
-
height:200px;
-
background:red;
- }
- 新建一个div,并使用前面定义的css的样式:
-
<divid="item">sometexthere</div>
- 在body表现这里加入lang属性,中文为zh:
-
<bodylang="en">
- 现在对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个人比较喜欢用第一种,简洁,兼容性比较好。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在网页设计中,CSS(层叠样式表)的兼容性问题常常困扰着开发者,尤其是在处理IE6.0、IE7.0与Firefox等不同浏览器之间的差异。以下是一些解决这些浏览器间CSS兼容问题的方法: 1. **DOCTYPE声明**:DOCTYPE声明会...
### 最全的CSS浏览器兼容问题整理(IE6.0、IE7.0 与 Firefox) 在Web开发过程中,确保网站能够在不同的浏览器上正确显示是非常重要的一步。尤其在早期的Web开发时代,面对像IE6、IE7这样的浏览器,以及当时主流的...
标题和描述均指向了一个核心议题——CSS在不同浏览器(尤其是IE6.0、IE7.0与Firefox)之间的兼容性问题。这个问题对于Web开发者来说至关重要,因为不同的浏览器可能对CSS的解析和渲染方式存在差异,导致网页在不同...
CSS技巧汇总---div+CSS浏览器兼容问题整理(IE6.0、IE7.0 ,ie8 , FireFox...).pdf
在早期的浏览器如IE 6.0和7.0以及Firefox 2.0中,由于JavaScript和CSS的实现存在差异,使得跨浏览器的兼容性成为开发者的一大挑战。这些老版本浏览器可能不支持某些现代浏览器中的特性,例如CSS3、HTML5的新元素或...
IE7.0简体中文正式版发布了,对于我等常和网页打交道的人来说... 兼容浏览器版本:IE5.0,IE5.5,IE6.0,IE7.0,Firefox1.5,FireFox2.0 CSS代码:(请注重Hack代码的顺序) 复制代码代码如下: #test{ width:300px
然而,不同浏览器对CSS的解析和渲染存在差异,尤其是老版本的IE(Internet Explorer),如IE6.0和IE7.0,以及Firefox等。这些差异往往导致兼容性问题,给开发者带来挑战。以下是一些常见的CSS浏览器兼容性问题及其...
描述进一步强调了这个万年历的跨浏览器兼容性,确保在IE6.0、IE7.0以上版本以及Firefox这些主流浏览器上都能正常运行。这在当时是一个重要的考虑因素,因为IE6.0尽管存在很多已知问题,但在某些企业环境中仍被广泛...
由于不同浏览器(如IE6.0、IE7.0、Firefox2、Opera9等)对CSS的解析存在差异,这可能导致同一网页在不同浏览器下呈现的效果各异,从而影响用户体验。为了解决这一问题,广泛采用的一种策略是CSS Hack,即通过特定的...
{*rule !important}这个css规则当今在网页制作的时候的普及已经非常流行了,以前我对它的理解就停留在‘浏览器是否识别阶段’ 而没有真正...(1)区别ie与firefox的hack为:border:2px solid #f00;*border:1px solid #f00;
站点采用Div Css布局,支持IE6.0、IE7.0、Firefox、Opera、Safari 等多种浏览器。 本产品安装包内容包括: 1、新闻、产品、帮助、反馈、辅助、招聘、流量、生成 2、中文、英文两种语言包 3、随包附赠皮肤...
代码应保持简洁且符合 W3C 标准,以确保在多种主流浏览器(如 IE6.0、IE7.0、Firefox、Maxthon、Opera 等)中实现兼容性。不同浏览器可能对 HTML 和 CSS 解析存在差异,因此在开发和测试过程中需确保所有浏览器下的...
1. **浏览器兼容性问题**:不同浏览器对CSS的支持程度各不相同,导致在Firefox、Chrome、Safari、Edge和Internet Explorer(尤其是IE6、IE7和IE8)之间存在兼容性问题。最全的CSS浏览器兼容问题.doc文档中详细列出了...
利用此文件可以在IE浏览器中直接...并且兼容性很好,此方法支持IE6.0/IE7.0/IE8.0/谷歌浏览器(Chrome)/火狐浏览器(Firefox)/Safari/Opera,其他的本人尚未测试,如果你测试通过了,请在下面留言下,好资源大家共享!
(IE6.0/IE7.0/firefox1.5/firefox2.0/opera9/Safari2.0,Safari缺乏测试)。它可以帮助程序开发者实现各种类型的RIA应用-在提供更加强大框架的同时更加易用。压缩的核心代码仅仅50k,包括了javascript类型检查,强制...
在前端开发过程中,为不同浏览器编写兼容的CSS样式是必不可少的一部分,尤其是对于IE6、IE7、IE8等旧版本浏览器,由于它们遵循的CSS标准与现代浏览器存在较大差异,常常需要使用CSS-HACK来解决兼容性问题。...
* 浏览器:IE6.0、IE7.0、IE8.0、FireFox3.0、FireFox3.5、遨游 2.0、腾讯 TT4.7、360 浏览器 V3.0、世纪之窗 V3.0、谷歌 Chrome V4.0 等。 四、测试工具推荐 * IEtester:是一款简单易用的测试工具,能够测试 IE ...
面对Mozilla Firefox的挑战,微软在2006年推出了IE7.0,这是首次独立于操作系统的浏览器应用。2009年的IE8.0,微软声称它是当时增长最快且最受欢迎的浏览器,强调了其在市场中的地位。 最后,IE9.0在2011年发布,...