收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 2591|回复: 5

[讨论] 兼容IE7,IE6,Firefox 和 Opera 的写法~

[复制链接]
发表于 2006-10-20 12:52:51 | 显示全部楼层 |阅读模式
…………标题居然有字数限制,郁闷~

进入正题,昨天IE7正式版出来了,我也在这里发了牢骚了,发完牢骚后就得开始修页面,网上搜了一下,最终还是在Blueidea找到篇不错的hack IE7的方法,方法简单实用,但是使用这种方法还是有个问题:ie6, firefox 和 Opera 都会认得*:lang(en) #item这样的写法,而ie6本身和ff, opera之间的标准又差那么远,怎样解决呢?其实利用优先级和原先的hack方法就可以解决问题啦~

看一下这个例子:


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <HEAD>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <TITLE> New Document </TITLE>
  6. <META NAME="Generator" CONTENT="EditPlus">
  7. <META NAME="Author" CONTENT="">
  8. <META NAME="Keywords" CONTENT="">
  9. <META NAME="Description" CONTENT="">
  10. <style type="text/css">
  11. <!--
  12. *:lang(zh) .vpsh { height: 400px; background: #de0000; color: #7fc31c;}
  13. .vpsh { background: #000000; background /**/: #ff7e00;}
  14. -->
  15. </style>
  16. </HEAD>

  17. <BODY lang="zh">

  18. <div class="vpsh">
  19. 12345678910
  20. </div>

  21. </BODY>
  22. </HTML>
复制代码

 提示:您可以先修改部分代码再运行



在ie6里显示的是background: #000000,在ie7里显示的是:background /**/: #ff7e00,至于ff和opera显示的则是background: #de0000

出现这个效果就是优先级在做怪,ie的优先级很奇怪,不管你写多少个background,显示的永远是最后一个,至于ie6跟ie7为什么显示不同的背景是因为ie6就不认background /**/这样的样式,而ie7读得到,而ff和opera则读取*:lang(zh) .vpsh这里面的样式,效果是出来了,但是原理我还不太明白,在这里就想问一下各位高手:

1.ie既然是优先级问题,为什么ie6读不出color: #7fc31c呢?它应该是支持lang选择器的啊!

2.ff和opera是否只认得第一个属性呢?就是跟ie相反,写多少个重复属性,只认第一个?还是别的呢?

请指教~

PS: 优先级在不同浏览器里真TMD混乱~

[[i] 本帖最后由 小斌 于 2006-10-20 12:54 编辑 ]
 楼主| 发表于 2006-10-20 13:51:23 | 显示全部楼层
为什么没人来啊???
回复 支持 反对

使用道具 举报

发表于 2006-10-20 14:09:24 | 显示全部楼层
1。IE是否支持*:lang(zh) .vpsh 语法,我想应该是不支持的,就正如IE不支持#xx[id]和.xx[class]一样。
background /**/写法中间多了个空格,IE6自然不支持,background/**/中无空格IE6则能识别,
另外,background/**/语法本是用来hackIE5的语法,不知你怎么又搞出个空格来hack IE6 ???——真是被搞得越来越复杂了!

2。*:lang(zh) .vpsh 是一个继承样式,所以它比.vpsh 样式优先,那么浏览器自然就优先解释前者。

[[i] 本帖最后由 zbm2001z 于 2006-10-20 14:24 编辑 ]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-20 14:12:04 | 显示全部楼层
原帖由 [i]zbm2001z 于 2006-10-20 14:09 发表
1。IE是否支持*:lang(zh) .vpsh 语法,我想应该是不支持的,就正如IE不支持#xx和.xx一样。
background /**/写法中间多了个空格,IE6自然不支持,background/**/中无空格IE6则能识别,
另外,background/**/语 ...



呵呵!获益良多啊~

background /**/是专门用来hack ie6的,不知道有没有别的方法呢?请指教~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-10-20 23:36:01 | 显示全部楼层
………………
没人回答我的问题~
回复 支持 反对

使用道具 举报

发表于 2006-10-20 23:46:42 | 显示全部楼层
为了防万一火大砸掉电脑,不用任何hack。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备12001430号 )  

GMT+8, 2020-12-2 05:38 , Processed in 0.137347 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表