找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2445|回复: 0

[教程] 改善IE6中a与a:hover的背景支持

[复制链接]
发表于 2012-1-2 10:53:57 | 显示全部楼层 |阅读模式 来自 中国–江苏–南京
在IE6中背景属性加 aa:hover 两者的伪类结合,在正常逻辑下为何不起作用?测试这问题存在IE6及以下浏览器,这问题我经常遇到在之前一直采用其它方法取而代之,现在找到了另一种解决。
以导航为例,下面的代码完全符合CSS的逻辑,理论上应该是“a:hove背景图片”结合“a.nav_1的背景定位” 而得出预想的结果,但IE6却异常地只显示背景图片而没有对上背景坐标 Demo(请使用IE6与IE6以上浏览器作对比)。
  1. *{margin:0;padding:0;}
  2. .header{ position:relative; width:745px; height:225px; background:url(bg.jpg) no-repeat;}
  3. /*导航*/
  4. #nav p{ position:absolute; left:0; bottom:0; width:100%;}
  5. #nav a{float:left;height:44px;overflow:hidden;line-height:200px;font-size:0;}
  6. #nav a:hover{background:url(bg.jpg) no-repeat 0 0;}
  7. /*导航经过状态: IE6及以下浏览器不兼容,其它浏览器正常*/
  8. #nav a.nav_1{width:80px;background-position:0 -213px;}
  9. #nav a.nav_2{width:86px;background-position:-80px -213px;}
  10. #nav a.nav_3{width:227px;background-position:-166px -213px;}
  11. #nav a.nav_4{width:92px;background-position:-393px -213px;}
  12. #nav a.nav_5{width:98px;background-position:-485px -213px;}
  13. #nav a.nav_6{width:162px;background-position:-583px -213px;}
复制代码
之前我使用的解决方案是,再经过状态添加对应的选择符。这方法感觉代码显得比较臃肿,而对于代码洁癖的我是比较难接受的 Demo
  1. /*导航经过状态: 之前的解决方案*/
  2. #nav a.nav_1:hover,
  3. #nav a.nav_1{width:90px;background-position:0 -211px;}
  4. #nav a.nav_2:hover,
  5. #nav a.nav_2{width:86px;background-position:-80px -213px;}
  6. #nav a.nav_3:hover,
  7. #nav a.nav_3{width:227px;background-position:-166px -213px;}
  8. #nav a.nav_4:hover,
  9. #nav a.nav_4{width:92px;background-position:-393px -213px;}
  10. #nav a.nav_5:hover,
  11. #nav a.nav_5{width:98px;background-position:-485px -213px;}
  12. #nav a.nav_6:hover,
  13. #nav a.nav_6{width:162px;background-position:-583px -213px;}
复制代码
理论上”a.nav_1″选择符比”a:hover”要高,但我尝试添加!important时测试发现IE6却显示正常 Demo
而测试其它浏览器也无副作用,这次似乎与haslayout无关了,但其产生原因与结果也却让人百思不得其解
  1. /*导航经过状态: 现在的解决方案*/
  2. #nav a.nav_1{width:80px;background-position:0 -211px!important;}
  3. #nav a.nav_2{width:86px;background-position:-80px -213px!important;}
  4. #nav a.nav_3{width:227px;background-position:-166px -213px!important;}
  5. #nav a.nav_4{width:92px;background-position:-393px -213px!important;}
  6. #nav a.nav_5{width:98px;background-position:-485px -213px!important;}
  7. #nav a.nav_6{width:162px;background-position:-514px -213px!important;}
复制代码
ytzong 提供的解决方法很不错赞~, 看来不使用背景缩写还是有它的好处。IE6在背景相加的逻辑上的确是有问题,同样测试过border属性则不存在这问题Demo
  1. *{margin:0;padding:0;}
  2. .header{ position:relative; width:745px; height:225px; background:url(bg.jpg) no-repeat;}
  3. /*导航*/
  4. #nav p{ position:absolute; left:0; top:180px; width:100%;}
  5. #nav p a{float:left;height:44px;overflow:hidden;line-height:200px;font-size:0;}
  6. #nav p a:hover{background-image:url(bg.jpg); background-repeat:no-repeat;}
  7. /*导航经过状态: IE6及以下浏览器不兼容,其它浏览器正常*/
  8. #nav p a.nav_1{width:80px;background-position:0 -213px;}
  9. #nav p a.nav_2{width:86px;background-position:-80px -213px;}
  10. #nav p a.nav_3{width:227px;background-position:-166px -213px;}
  11. #nav p a.nav_4{width:92px;background-position:-393px -213px;}
  12. #nav p a.nav_5{width:98px;background-position:-485px -213px;}
  13. #nav p a.nav_6{width:162px;background-position:-583px -213px;}
复制代码
不知道还没有更好的方法呢~

评分

参与人数 1金币 +1 收起 理由
光明使者 + 1 赞一个!

查看全部评分

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

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

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2024-12-23 12:56 , Processed in 0.053148 second(s), 13 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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