3

我有一个弹出菜单,在“快速链接”的末尾,我使用第一个 LI 标记上的 :after 伪元素来显示精灵文件中的图标。

的HTML:

<ul class="rs-quick-links-nav">
   <li>
    <a href="#">QUICK LINKS</a>
    <ul>
     <li><a href="#">Enhanced Recipe Search</a></li>
     <li><a href="#">Recipe Collections &amp; Favorites</a></li>
     <li><a href="#">Cooking Tips &amp; Techniques</a></li>
     <li><a href="#">Shopping &amp; Storing</a></li>
     <li><a href="#">Tools &amp; Products</a></li>
     <li><a href="#">New Uses for Old Things</a></li>
     <li><a href="#">Guide to Ingredients</a></li>
    </ul>
  </li>
</ul>

CSS:

.rs-quick-links-nav { position: absolute; top: 0; right: 20px; }
.rs-quick-links-nav > li { float: left; position: relative; white-space: nowrap; height: 19px; padding: 4px 0 4px 0; }
.rs-quick-links-nav > li > a { color: #999999; display: block; font: normal 1.2em Arial, sans-serif; }
.rs-quick-links-nav > li:after { content: ' '; background: transparent url('@static.base@/i/rs-global-sprite.png') -220px 0 no-repeat; height: 19px; position: absolute; top: 0; right: -22px; width: 21px; }
.rs-quick-links-nav > li > a:hover { text-decoration: none; }
.rs-quick-links-nav > li:hover:after { content: ' '; background: transparent url('global-sprite.png') -220px -20px no-repeat; height: 19px; position: absolute; top: 0; right: -22px; width: 21px; }
.rs-quick-links-nav li ul { background-color: #FFFFFF; border: 4px solid #69b8b8; left: -9999px; padding: 2px 8px; position: absolute; top: 24px; visibility: hidden; z-index: 9900; }
.rs-quick-links-nav li:hover ul { left: auto; right: -18px; visibility: visible; }
.rs-quick-links-nav li li { padding: 2px 0; }
.rs-quick-links-nav li li + li { border-top: 1px dotted #333333; }
.rs-quick-links-nav li li a { color: #666666; display: block; font: normal 1.2em/30px Arial, Verdana, sans-serif; height: 30px; padding: 0px 8px; }
.rs-quick-links-nav li li a:hover { background: #f6f6f6; }

应该发生的是,当您将鼠标悬停在 LI 标记上时,我将图标更改为活动颜色。

.rs-quick-links-nav > li:hover:after 似乎适用于 Firefox、Chrome 和 Safari,但不适用于 IE8(IE8 之前我不关心任何东西)。根据 QuirksMode,IE8 应该支持 :hover 和 :after,所以我不确定为什么 .rs-quick-links-nav > li:hover:after 不起作用。有没有人有任何想法如何使这项工作(即使我必须用 Javascript 做一些事情)。

编辑: DOCTYPE 是 HTML5 文档类型。

<!DOCTYPE html>

编辑:这里的 JSFiddle 片段 http://jsfiddle.net/tangst/hA7FH/

4

4 回答 4

2

在您的:after:hover规则中添加content:"";. 这将强制重绘

于 2013-12-12T13:31:20.483 回答
1

你的文档类型是什么样的?

IE8 确实处理伪选择器,但如果您没有严格的文档类型,则 :hover 选择器将仅适用于锚点。

于 2013-01-15T04:01:23.843 回答
1

几个不错的选择:

  • 使用垫片。这使您可以进行改造(由于 css 的级联性质)并修复“旧版浏览器缺乏支持”问题。例如:http ://selectivizr.com/

  • 使用 jQuery 1.8.1+,它为旧浏览器提供了对这些东西的支持。

于 2013-01-24T23:52:50.187 回答
0

最后,我不得不编写一些 Javascript 来控制该元素的悬停事件并以这种方式设置元素的样式。它在 IE8 中不是很完美,但它确实有效。

于 2013-01-24T23:46:15.110 回答