改善IE6中a与a:hover的背景支持

作者:gulu77 来源:gulu77博客 时间:2009-11-27 18:50:00 

在IE6中背景属性加 aa:hover 两者的伪类结合,在正常逻辑下为何不起作用?测试这问题存在IE6及以下浏览器,这问题我经常遇到在之前一直采用其它方法取而代之,现在找到了另一种解决。

以导航为例,下面的代码完全符合CSS的逻辑,理论上应该是“a:hove背景图片”结合“a.nav_1的背景定位” 而得出预想的结果,但IE6却异常地只显示背景图片而没有对上背景坐标

Demopseudo_classes_background_demo1.html (请使用IE6与IE6以上浏览器作对比)。)


*{margin:0;padding:0;}
.header{ position:relative; width:745px; height:225px; background:url(bg.jpg) no-repeat;}
/*导航*/
#nav p{ position:absolute; left:0; bottom:0; width:100%;}
#nav a{float:left;height:44px;overflow:hidden;line-height:200px;font-size:0;}
#nav a:hover{background:url(bg.jpg) no-repeat 0 0;}
/*导航经过状态: IE6及以下浏览器不兼容,其它浏览器正常*/
#nav a.nav_1{width:80px;background-position:0 -213px;}
#nav a.nav_2{width:86px;background-position:-80px -213px;}
#nav a.nav_3{width:227px;background-position:-166px -213px;}
#nav a.nav_4{width:92px;background-position:-393px -213px;}
#nav a.nav_5{width:98px;background-position:-485px -213px;}
#nav a.nav_6{width:162px;background-position:-583px -213px;}

之前我使用的解决方案是,再经过状态添加对应的选择符。这方法感觉代码显得比较臃肿,而对于代码洁癖的我是比较难接受的 。



/*导航经过状态: 之前的解决方案*/
#nav a.nav_1:hover,
#nav a.nav_1{width:90px;background-position:0 -211px;}
#nav a.nav_2:hover,
#nav a.nav_2{width:86px;background-position:-80px -213px;}
#nav a.nav_3:hover,
#nav a.nav_3{width:227px;background-position:-166px -213px;}
#nav a.nav_4:hover,
#nav a.nav_4{width:92px;background-position:-393px -213px;}
#nav a.nav_5:hover,
#nav a.nav_5{width:98px;background-position:-485px -213px;}
#nav a.nav_6:hover,
#nav a.nav_6{width:162px;background-position:-583px -213px;}

理论上”a.nav_1″选择符比”a:hover”要高,但我尝试添加!important时测试发现IE6却显示正常 。



而测试其它浏览器也无副作用,这次似乎与haslayout无关了,但其产生原因与结果也却让人百思不得其解

/*导航经过状态: 现在的解决方案*/
#nav a.nav_1{width:80px;background-position:0 -211px!important;}
#nav a.nav_2{width:86px;background-position:-80px -213px!important;}
#nav a.nav_3{width:227px;background-position:-166px -213px!important;}
#nav a.nav_4{width:92px;background-position:-393px -213px!important;}
#nav a.nav_5{width:98px;background-position:-485px -213px!important;}
#nav a.nav_6{width:162px;background-position:-514px -213px!important;}

ytzong 提供的解决方法很不错赞~, 看来不使用背景缩写还是有它的好处。IE6在背景相加的逻辑上的确是有问题,同样测试过border属性则不存在这问题。



*{margin:0;padding:0;}
.header{ position:relative; width:745px; height:225px; background:url(bg.jpg) no-repeat;}
/*导航*/
#nav p{ position:absolute; left:0; top:180px; width:100%;}
#nav p a{float:left;height:44px;overflow:hidden;line-height:200px;font-size:0;}
#nav p a:hover{background-image:url(bg.jpg); background-repeat:no-repeat;}
/*导航经过状态: IE6及以下浏览器不兼容,其它浏览器正常*/
#nav p a.nav_1{width:80px;background-position:0 -213px;}
#nav p a.nav_2{width:86px;background-position:-80px -213px;}
#nav p a.nav_3{width:227px;background-position:-166px -213px;}
#nav p a.nav_4{width:92px;background-position:-393px -213px;}
#nav p a.nav_5{width:98px;background-position:-485px -213px;}
#nav p a.nav_6{width:162px;background-position:-583px -213px;}

不知道还没有更好的方法呢~

标签:IE6,a,hover,背景
0
投稿

猜你喜欢

  • javascript this 关键字小提示

    2009-02-03 13:22:00
  • 学习ASP.NET八天入门:第六天

    2007-08-07 13:48:00
  • 5个css布局的常见问题及解决方法

    2009-11-19 13:21:00
  • Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔)

    2012-12-04 20:04:29
  • SQL Server 2000数据库FOR XML查询概述

    2008-12-09 14:49:00
  • Sql Server 数据库超时问题的解决方法

    2009-01-13 14:11:00
  • 求任意自然数内的素数

    2009-10-15 12:21:00
  • Oracle 下的开发日积月累

    2009-02-28 11:08:00
  • 网站改版常见问题答疑

    2008-08-22 18:31:00
  • 用Css来制作一个漂亮的多选列表框

    2008-05-29 12:45:00
  • asp如何最准确地统计在线用户数?

    2010-07-11 21:12:00
  • 使用MyISAM表和InnoDB的一些记录

    2009-12-20 18:21:00
  • 区分有单选框的选项和普通的选项

    2008-04-17 13:44:00
  • sql server 中删除默认约束的通用sql脚本

    2009-02-01 17:23:00
  • 如何用CSS实现图像替换链接文本显示并保证链接可点击

    2011-03-03 12:37:00
  • phar绕过phar与HALT实现文件上传功能

    2023-05-25 06:47:36
  • [新手必看]15个asp编程常见问题解答

    2007-08-22 13:07:00
  • SQL Server 总结复习(一)

    2012-10-07 11:04:02
  • 如何编写一个创建FTP站点的函数?

    2009-11-07 18:51:00
  • SQL Server 1069错误(由于登录失败而无法启动服务)解决方法

    2008-09-12 17:35:00
  • asp之家 网络编程 m.aspxhome.com