如何完美实再div+css在不同浏览器兼容问题

作者&投稿:茌响 (若有异议请与网页底部的电邮联系)
如何解决div+css的浏览器兼容问题~

这得具体问题具体分析了,关于IE各版本浏览器的hack问题大都可以通过这个页面提到的方法解决:http://hi.baidu.com/apoih/blog/item/a301b4030f0236e409fa930c.html;
可以借助IE8自带的开发人员工具(按F12可以调出来),IE6也可以下载IE develpoer toolbar(下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=95e06cbe-4940-4218-b75d-b8856fced535)来查看哪里出了问题,进而去针对这部分写出相应的css兼容样式代码便可。

现在基本都只应付IE7,IE6和FF(火狐)的兼容问题,具体做法是在做页面的时候,就打开三个浏览器来调试,不要等做完再来调,那样会累死。当发现不兼容情况导致页面异常的时候,针对不同浏览器在css中做出调整,例如可以用这种方法来区分:
{width:300px;
*width:200px;
*_width:100px}
表示在FF中宽度为300px,IE7中为200,IE6中为100。要同时区分三个浏览器的时候,css样式的书写顺序为:FF
>
IE7
>
IE6。
注:带“_”的css样式只有IE6能识别,带*号的只有IE能识别,样式后加“!important”只有FF和IE7能识别

1.代码要规范
2.避免完全DIV+CSS,很多标签既然存在,就有利用的价值,例如table的布局性,是DIV无法比拟的
3.遇到不兼容的时候,首先使用css hack来校正
4.hack无法实现的时候,就要靠javascript来区分浏览器,加载不同的css样式了

以上最重要的,是第二条,CSS+DIV只是一种优化代码的技术,而不是和表面名称一样,单纯的使用DIV,纯DIV会造成后期维护困难,代码错误难以查出(全是DIV配对,天知道哪里丢了一个),而且纯DIV最重要的一点,就是你目前所说的问题,浏览器兼容问题

一下引用自百度百科:

尽管DIV+CSS具有一定的优势,不过现阶段CSS+DIV网站建设存在的问题也比较明显,主要表现在:
第一,对于CSS的高度依赖使得网页设计变得比较复杂。相对于HTML4.0中的表格布局(table),CSS+DIV尽管不是高不可及,但至少要比表格定位复杂的多,即使对于网站设计高手也很容易出现问题,更不要说初学者了,这在一定程度上影响了XHTML网站设计语言的普及应用。

第二,CSS文件异常将影响整个网站的正常浏览。CSS网站制作的设计元素通常放在几个l外部文件中,这一个或几个文件有可能相当复杂,甚至比较庞大,如果CSS文件调用出现异常,那么整个网站将变得惨不忍睹。

第三,对于CSS网站设计的浏览器兼容性问题比较突出。基于HTML4.0的网页设计在IE4.0之后的版本中几乎不存在浏览器兼容性问题,但CSS+DIV设计的网站在IE浏览器里面正常显示的页面,到火狐浏览器(FireFox )中却可能面目全非(这也是为什么建议网络营销人员使用火狐浏览器的原因所在 )。CSS+DIV还有待于各个浏览器厂商的进一步支持。

第四,CSS+DIV对搜索引擎优化与否取决于网页设计的专业水平而不是CSS+DIV本身。CSS+DIV网页设计并不能保证网页对搜索引擎的优化,甚至不能保证一定比HTML网站有更简洁的代码设计,何况搜索引擎对于网页的收录和排序显然不是以是否采用表格和CSS定位来衡量,这就是为什么很多传统表格布局制作的网站在搜索结果中的排序靠前,而很多使用CSS及web标准制作的网页排名依然靠后的原因。因为对于搜索引擎而言,网站结构、内容、相关网站链接等因素始终是网站优化最重要的指标。

完美兼容的话 你可以用css hack技术 就是针对浏览器调整 使它之外的浏览器读不到这个样式
区别IE6与FF: background:orange;*background:blue;
区别IE6与IE7: background:green !important;background:blue;   
区别IE7与FF: background:orange; *background:green;   
区别FF,IE7,IE6: background:orange;*background:green !important;*background:blue;   
IE7,IE8兼容: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />    
1. CSS中几种浏览器对不同关键字的支持,可进行浏览器兼容性重复定义 !important 可被FireFox和IE7识别 * 可被IE6、IE7识别 _ 可被IE6识别 *+ 可被IE7识别   
2. IE专用的条件注释 <!--其他浏览器 --> <link rel="stylesheet" type="text/css" href="css.css" /> <!--[if IE 7]> <!-- 适合于IE7 --> <link rel="stylesheet" type="text/css" href="ie7.css" /> <![endif]--> <!--[if lte IE 6]> <!-- 适合于IE6及一下 --> <link rel="stylesheet" type="text/css" href="ie.css" /> <![endif]-->   
3. 几个浏览器对实际像素的解释 IE/Opera:对象的实际宽度 = (margin-left) + width + (margin-right) Firefox/Mozilla:对象的实际宽度= (margin-left) + (border-left-width) + (padding- left) + width + (padding-right) + (border-right-width) + (margin-right)   
4. 鼠标手势问题:FireFox的cursor属性不支持hand,但是支持pointer,IE两个都支持;所以为了兼容都用pointer   
5. FireFox中设置HTML标签的Style属性时,所有位置、宽高和尺寸值必须后跟px,IE也支持此写法,因此统一加px单位。如 Obj.Style.Height = imgObj.Style.Height + ‘px';   
6. FireFox无法解析简写的padding属性设置,如padding 5px 4px 3px 1px;必须改为 padding-top:5px; padding-right:4px; padding-bottom:3px; padding-left:1px;   
7. 消除ul、ol等列表的缩进时,样式应写成:list-style:none;margin:0px;padding:0px;其中margin属性对IE有效,padding属性对FireFox有效   
8. CSS控制透明:IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60); FireFox:opacity:0.6;   
9. CSS控制圆角:IE:不支持圆角; FireFox: -moz-border-radius:4px;或 -moz-border-radius-topleft:4px; -moz-border-radius-topright:4px; -moz-border-radius-bottomleft:4px; -moz-border-radius- bottomright:4px;   
10. CSS双线凹凸边框:IE:border:2px outset; FireFox: -moz-border-top-colors: #d4d0c8 white; -moz-border-left-colors: #d4d0c8 white; -moz-border-right-colors:#404040 #808080; -moz-border-bottom-colors:#404040 #808080;   
11. IE支持CSS方法cursor:url()自定义光标样式文件和滚动条颜色风格;FireFox对以上两者均不支持   
12. IE有Select控件永远处于最上层的bug,且所有CSS对Select控件都不起作用   
13. IE支持Form中的Label标签,包括图片和文字内容;FireFox不支持包含图片的Label,点击图片不能让标记 label for 的Radio或CheckBox产生效果   14. FireFox中的TextArea不支持onScroll事件   
15. FireFox不支持display的inline和block   
16. FireFox对Div设置margin-left, margin-right为auto时已经居中, IE中不行   
17. FireFox对Body设置text-align时, Div需要设置margin: auto(主要是margin-left margin-right) 方可居中   
18. 对超链接的CSS样式设置最好遵从这样的顺序:L-V-H-A。即 <style type="text/css"> <!-- a:link {} a:visited {} a:hover {} a:active {} --> </style> 这样可以避免一些访问过后的超链接就不具备hover和active样式了   
19. IE中设置长段落自动换行在CSS中设置word-wrap:break-word;FireFox中使用JS插入 的方法来实现,具体代码如下: <script type="text/javascript"> /* <![CDATA[ */ function toBreakWord(el, intLen){ var obj=document.getElementById(el); 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("div_id", 37); /* ]]> */ </script>   
20. 在子容器加了浮动属性后,该容器将不能自动撑开 解决方法:在标签结束后下一个标签中加上一个清除浮动的CSS clear:both;   
21. 浮动后IE6解释外边距为实际边距的双倍 解决办法:加上display:inline   
22. IE6下图片下方会有空隙 解决办法:为img加上display:block或设置vertical-align 属性为vertical-align:top | bottom |middle |text-bottom   
23. IE6下两个层中间有空隙 解决办法:设置右侧div也同样浮动float:left或者相对IE6定义 margin-right:-3px;   
24. LI中内容超过长度后以省略号的显示方法 <style type="text/css"> <!-- li { width:200px; white-space:nowrap; text-overflow:ellipsis; -o-text-overflow:ellipsis; overflow: hidden; } --> </style> (只适用与IE)  
25. 将元素的高度和行高设为相同值,即可垂直居中文本 <style type="text/css"> <!-- div { height:30px; line-height:30px; } --> </style>   
26. 对齐文本与文本输入框,须在CSS中增加vertical-align:middle;属性设置 <style type="text/css"> <!-- … … vertical-align:middle; } --> </style>   
27. 支持WEB标准的浏览器设置了固定高度值就不会像IE6那样被撑开,但是又想设置固定高度又想能够被撑开呢?解决办法是去掉height属性而设置 min-height,为了兼容不支持min-height的IE6可以这样定义: { height:auto!important; height:200px; min-height:200px; }   
28. web标准中IE无法设置滚动条颜色 解决办法:在CSS中对body的设置改为对html的 <style type="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>   
29. IE6由于默认行高问题无法定义1px左右高度的容器, 解决办法:在CSS中对容器设置如:overflow:hidden | zoom:0.08 | line-height:1px   
30. 给Flash设置透明属性可使层显示在Flash之上 <param name="wmode" value="transparent" /> <!-- 解决IE上的问题 //> <embed wmode="transparent" …… > <!-- 解决FireFox上的问题 //>   
31. FireFox设置Padding属性后会相应的增加Width和Height属性值,IE不会 解决办法:用!important方法多定义一套Height和Width   
32. FireFox对div与div之间的空格是忽略的,但IE是处理的;因此尽量在两个相连的div之间不要有空格和回车,否则可能会造成不同浏览器之间格式不正确,比如著名的3px偏差;而且原因很难查明   
33. 形如如下格式 <div id="parent"> <div id="content"> </div> </div> 当Content内容多时,即使parent设置了高度100%或auto,在不同浏览器下还是不能完好的自动伸展;解决办法在层的最下方产生一个高度为 1的空格,代码如下 <div id="parent"> <div id="content"> </div> <div style="font: 0px/0px sans-serif;clear: both;display: block"> </div> </div>   
34. IE和FireFox对字体small的尺寸解释不同,FireFox为13px,IE中为16px   
35. IE和FireFox对空格的尺寸解释不同,FireFox为4px,IE中为8px

http://hi.baidu.com/cool254/blog/item/8294c1435bd2770a73f05dd0.html
http://hi.baidu.com/cool254/blog/item/f91d97014be85ddd277fb515.html
http://hi.baidu.com/cool254/blog/item/97c541da28a6d9d0b6fd481e.html

-----------个人博客收藏自己用的,不是广告,不是想要的答案勿拍-----------------

严格按照css规范来写,不要产生垃圾代码,不要重复定义。了解不同标签在不同浏览器定义时的样式规范。还有很多需要多多观察和思考!!

针对不同的浏览器写不同的css,然后通过js实现不同浏览器加载不同的css,就能完美的解决浏览器兼容问题。


DIV+CSS和TABLE相比有什么好处?
对于新手或入门者来说,往往会有这几方面的疑问:■DIV+CSS是什么意思?实质是什么?■DIV+CSS的优势何在?■新手学习div+css,该如何入门?■使用什么软件来布局页面和编辑css呢?■能不能提供几个实例具体讲解一下怎么来实现?等等诸如此类的问题,是新手们最常问的。回答这些问题,也是仁者见仁,...

如何设置div的背景色?我的这段css没有作用?
<#div id=”imfloat”><\/#div> 相应的css为#IamFloat{float:left;margin:5px;\/*IE下理解为10px*\/display:inline;\/*IE下再理解为5px*\/}3、关于...CSS完美兼容IE6\/IE7\/FF的通用方法2008年07月02日 星期三 13:29关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有...

php+div高手请进~
下面是IE的条件注释,个人觉得用条件注释调用相应兼容是比较完美的多浏览器兼容的解决办法。把需要兼容的地方单独放到一个文件里面,当浏览器版本符合的时候就...尝试一下吧,再也不要乱嵌套了,虽然在Div+CSS的方式下你几乎可以想怎么嵌套就怎么嵌套,但是按照上面的规律你将轻松很多,从而事半功倍! 参考资料: http...

DIV+CSS有什么好处?
DIV+CSS的优势何在?1、符合W3C标准。微软等公司均为W3C支持者。这一点是最重要的,因为这保证您的网站不会因为将来网络应用的升级而被淘汰。2、支持浏览器的向后兼容,也就是无论未来的浏览器大战,胜利的是IE7或者是火狐,您的网站都能很好的兼容。3、搜索引擎更加友好。相对与传统的table, 采用...

DIV+CSS网站,在IE7没问题,在IE6布局全乱了,想知道,CSS的元素中哪些在...
DIV+CSS网站,在IE7没问题,在IE6布局全乱了,想知道,CSS的元素中哪些在IE6,7标准不一样,有何解决...想不出来了,以后想到再加吧。上面的诸多问题如果你掌握了其中奥妙,90%的不兼容问题不需要另起css

通过JS弹出的浮动DIV层,居中于窗口中。
把style里面的left和top拿到js里面写 在CSS里面用expression是只有IE支持的 这就是不兼容的东西 <div id="divCenter" align="center" style="position: absolute; z-index: 3; display: none; background-color: #fff;" > <span style="background-color:Gray; width:390px; height:220px; ...

先完成,后完美
先完成,后完美。我想这句话是得到很多人的认可的。特别是在演讲训练营里面,也是我特别要告诫大家的。为什么先完成后完美呢?因为很多人,以完美为借口,说自己要么不做,做就做最好。结果你发现他选择的是不做,而不是做好。大家想一想,你连做都不做,你能做好吗?又谈何完美呢?这让我想起...

“为别人喝彩”的例子和名言
4、有了一些小成绩就不求上进,这完全不符合我的性格。攀登上一个阶梯,这固然很好,只要还有力气,那就意味着必须再继续前进一步。——安徒生《即兴诗人》生命的舞台很大,每个人既是表演者,也是台下的观众,谁都希望在曲终谢幕的时候得到别人的赞美和喝彩,因为我们都是在寻找和期待着他人和社会的...

谁有斗破苍穹第六百五十三章以后的章节!发到我邮箱764749195qq@.com...
653章已经是目前最新的更新了,后面还没写呢。

请给我一些简单的英文情话?
13、但愿会在梦中再见到我心爱的女孩! Wish to meet my angle again lovely girl in my dream! ...无论你身在何处,无论你为何忙碌,我都会在此守候。 Passionate love is a quenchless thirst. 热烈

秀峰区17147329019: 如何控制div+css适应不同的浏览器 -
訾映敏迪: 让div+css兼容所有浏览器:1.DOCTYPE 影响 CSS 处理2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中4.FF: 设置 ...

秀峰区17147329019: 用dw设计网页时,我用的是css+div.每个电脑的分辨率都不一样,怎么让网页在不同的浏览器上正确显示呢? -
訾映敏迪: 第一种办法:body的width设置为100%,然后body下的总的div的width设置为固定宽度,比如:<body style="width: 100%"> <div class="nav" style="width: 1080px"></div> <div class="content" style="width: 1080px"></div> <div class=...

秀峰区17147329019: DIV+CSS里怎么兼容各种浏览器? -
訾映敏迪: 兼容各种浏览器目前是无法实现的,更多技巧 http://hi.baidu.com/delpan7/blog/item/debaba0363335b047bec2c09.html 兼容技巧 1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)2, 居中问题.1).垂...

秀峰区17147329019: 我想请教一下,怎么让div+CSS布局的网页让所有浏览器兼容啊 -
訾映敏迪: CSS代码要严谨、完善,养成良好的习惯.以下是我在实践工作中总结的经验:1、网页前面加上W3C标准声明:<!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">2、你可以用!important;声明一下CSS的重要等级,如:width:5px!important;width:8px;3、只在IE6、FF3下测试就行了,其他浏览器不用管,就这两个内核不同

秀峰区17147329019: 怎样解决div+css在不同浏览器中的显示情况 -
訾映敏迪: 关于CSS对各个浏览器兼容已经是老生常谈的问题了, 网络上的教程遍地都是.以下内容没有太多新颖, 纯属个人总结, 希望能对初学者有一定的帮助.一、CSS HACK以下两种方法几乎能解决现今所有HACK.1, !important随着IE7对!important...

秀峰区17147329019: css+div 在不同分辨率下固定在页面的同一个位置 如何实现? -
訾映敏迪: 如果你的页面都是包在一个div下的话,那给这个div定义一个样式就可以了.div {width:你页面的宽度; margin:0 auto; ...} 注意几点:1、页面必须有DTD文档类型申明;2、外围div要设宽度;3、再加上margin:0 auto就可以了.

秀峰区17147329019: 怎样解决div+css在不同浏览器中的显示情况
訾映敏迪:通过CSS Hack 区分 FX/IE7/IE6/IE5.5/IE5#example{color:red ;} * html #example{color:blue;} *+html #example{color:green;} 这是在 FireFox 或者 Opera 下面的效果 这是在 IE 6 下面的效果 这是在 IE 7 下面的效果 以下为简单区分FF/IE6/IE7示例 这行文字在FF下应为红色,在IE6下应为蓝色,在IE7下应为绿色.

秀峰区17147329019: 如何让网页在不同的显示器下网页的显示都是全屏 用的是DIV+CSS希望牛人指导下... -
訾映敏迪: 不仅有不同显示器,可以设置div的width设置100% ,最好是所有的width设置都以百分数设置,不然会变形 ,还要考虑不同浏览器,那就难了,每个方面都要想到

秀峰区17147329019: 我用css+div做的网站在不同浏览器上显示效果不一样,不兼容,怎么办啊,求高手指点一二啊 -
訾映敏迪: 有多种办法的,其实最后考虑hack,我们首先需要加深对div+css的理解,然后通过更改属性设置方法+firebug解决兼容问题,这是调试工作(可以参考css中文手册).实在解决不了的问题可以考虑hack.ie问题网上有很多解决办法的,其他类型的主流浏览器是基本支持万维网标准的,可以微调,希望对你有用!^_^

秀峰区17147329019: 哪位大神知道网页设计中,为了让各浏览器有同样的兼容效果,css怎么初始化? -
訾映敏迪: 没有初始化这个概念,浏览器都有自己的渲染引擎,所有的页面显示出来之前都由浏览器进行渲染排版,如果想做页面兼容,我想你说的是div+css兼容吧(保证一个页面在不同浏览器表现都一样),实话告诉你,重要的是div+css的书写,写div+css时尽量不用不怎么通用的css属性,也就是尽量用各个浏览器都通用的属性,好多时候而css并不是万能的,还要搭配js或jQuery一块使用才能达到完美的效果,这就需要做大量项目才能融会贯通,不是一天两天就能彻底掌握的....

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网