网页布局的一些兼容性问题汇总
转自〔zhenrjk博客〕
一,如何解决IE7和IE8的BUG
微软在IE8提供三种解析页面的形式
IE8 Standard Modes :默认的最标准的形式,严格按照W3C相关规定
IE7 Standards Modes :IE7如今用的解析网页的形式,开起机关是在<head>中参加 <meta -equiv="X-UA-Compatible" content="IE=7">
Quirks Modes :IE5用的解析网页的形式,开起机关是删除HTML顶部的DOCTYPE声明
注意:不同形式间的网页在IE8中可以互相 frame ,因此因不会形式下的DOM和CSS渲染不一样,所以会引发很多问题,务必注意假如你的页面对IE7兼容没有问题,又不想大量修改
现有代码,同时又能在 IE8中正常使用,微软声称,开发商仅需要在目前兼容IE7的网站上添加一行代码即可解决问题,此代码如下:
<meta -equiv="x-ua-compatible" content="ie=7" />
IE8 最新css hack:
"/9" 例:"margin:0px auto/9;".这里的"/9"可以区别所有IE和FireFox.
"*" IE6、IE7可以识别.IE8、FireFox不能.
"_" IE6可以识别"_",IE7、IE8、FireFox不能.
二,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属性,只需要把代码改为
<script type="text/javascript">
就可以了
三,兼容IE5.0、IE5.5、IE6.0、IE7.0、FF1.5、FF2.0的css hack
本CSS Hack代码范例,可以直观显示各个版本阅读器hack的使用。兼容IE5.0、IE5.5、IE6.0、IE7.0、FF1.5、FF2.0。
IE7.0简体中文正式版发布了,对于我等常和网页打交道的人来说网页兼容性问题也随之而来了。IE7.0有一个显著的改变就是支 持!important了,是件好事情,但是也给广阔的在IE6时代使用!important来区分处理IE和FF的网页制作者带来了不少问 题,Noker也遇到了这个问题,所以翻阅网上资料,写了下面这个可以兼容现今大多数主流阅读器,覆盖绝大多数用户的Hack代码!
兼容阅读器版本:IE5.0,IE5.5,IE6.0,IE7.0,Firefox1.5,FireFox2.0
CSS代码:〔请注意Hack代码的顺序〕
#test{
width:300px;
height:100px;
background:#DDD!important;/*FF*/
background:#FF0;/*IE5.0*/
网页float是什么意思}
#test/*IE5.5+*/{
*+background:#C0F!important;/*IE7.0*/
*background:#F00;/*IE6.0*/
*background /*IE5.5*/:#F90;
}
四,CSS兼容方案 最新的一些技巧
让你的款式完美兼容各大阅读器,这个方案主要是用来解决Safari的,Opear是在测试的时候顺带试了一下,结果发现竟然也行,所以顺便也解决了。
.e {/*FF OP*/
background-color: #FF0000
}
html* .e{/*Sa IE7 OP*/
background-color:#FF00FF
}
*+html .e{
background-color:#000000;/*OP*/
*background-color:#0000FF;/*IE7*/
}
* html .e{/*IE6*/
background-color:#00FFFF
}
经FF2、OP9.21、OP9.10、Sa3.0.3(pc)、IE7、IE6测试通过,假如你在其他的阅读器版本上测试过,欢送给我留言,把结果告诉我。
需要注意的是:IE7对款式的解释跟DTD是有关,在没有DTD的时候,IE7是能读取IE6的
hack的。
五,必须掌握的关于IE6、IE7和FF最简单的CSS hack技巧
FF阅读器
.test{
height:20px;
background-color:orange;
}
IE7阅读器
*+html .test{/*IE7*/
height:20px;
background-color:blue;
}
IE6阅读器
*html .test{/*IE6*/
height:20px;
background-color:black;
}
通过上面的CSS代码可以看出FF还是最听话的阅读器。
在IE6和IE7假如要使用HACK必需要在前面加上夫级标签html。
这里就很好记忆了,IE6加*html,而IE7加*+html,暗示加了一个版本。
通过对class、id所做的CSS HACK好处在于不用顾及前后顺序,而且便于管理和其别人员承受,
还可以通过这种HACK实现类似JS阅读器版本的控制。
上面内容看完可以点击下面的效果在不同阅读器来看看效果,
其中橙代表FF,蓝代表IE7,黑代表IE6。
六,CSS hacks:阅读器特定选择器介绍
IE6以下
*html{}
IE 7 以下
*:first-child+html {} * html {}
只对IE 7
*:first-child+html {}
只对IE 7 和现代阅读器
html>body {}
只对现代阅读器(非IE 7)
html>/**/body {}
最新的Opera 9以下版本
html:first-child {}
Safari
html[xmlns*=〞"] body:last-child {}
要使用这些选择器,请在款式前写下这些代码。例如:
#content-box {
width: 300px;
height: 150px;
}
* html #content-box {
width: 250px;
}
/* 重写上面的代码并且把宽度改为250PX
在IE6以下版本中适用。 */
七,CSS Hack技术速查对照
*:lang(zh) select {font:12px !important;} /*FF,OP可见*/
select:empty {font:12px !important;} /*safari可见*/
这里select是选择符,根据情况更换。第二句是MAC上safari阅读器独有的。
仅IE7识别
*+html {…}
当面临需要只针对IE7做款式的时候就可以采用这个HACK。
IE6及IE6以下识别
* html {…}
这个地方要特别注意很多地主都写了是IE6的HACK其实IE5.x同样可以识别这个HACK。其它阅读器不识别。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论