0

当使用多个列表和悬停状态时,“父”Cufon 样式将替换子样式。在以下示例中,当您悬停二级链接时,它将被不同的权重替换。

是否可以设置一个选项以使嵌套样式保持不变,或者这是 Cufon 中的错误/限制?

    <ul>
    <li><a href="#">Top Level</a></li>
    <li><a href="#">Top Level</a></li>
    <li><a href="#">Top Level</a><ul>
        <li><a href="#">Second Level</a></li>
        <li><a href="#">Second Level</a></li>
        <li><a href="#">Second Level</a></li>
    </ul>
    <li><a href="#">Top Level</a></li>
    <li><a href="#">Top Level</a></li>
</ul>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://github.com/sorccu/cufon/raw/master/js/cufon.js"></script>
<script type="text/javascript" src="http://github.com/sorccu/cufon/raw/master/fonts/Vegur.font.js"></script>


<script type="text/javascript">
    Cufon.replace('ul li a',{hover: true, fontWeight: 200});
    Cufon.replace('ul li ul a',{hover: true, fontWeight: 700}); 
</script>
4

1 回答 1

6

解决方案第一:使用不会在元素集重叠的地方创建匹配的选择器。

//selects only 1st level links
Cufon.replace('ul:has(ul) > li   a', { hover: true, fontWeight: 200});
//selects only 2nd level links
Cufon.replace('ul:not(:has(ul)) a', { hover: true, fontWeight: 700});




解释为什么您的选择器 + Cufon 会产生问题

问题似乎源于您的选择器。

ul li a --> selects all 8 occurrences of <a>
ul li ul a --> selects only the 3 second-level occurrences of <a>

这意味着您实际上已经fontWeight为二级标签指定了两次<a>。遗憾的是,Cufon 似乎并不只应用具有最高CSS 特异性的表达式,因此该行为将取决于 Cufon 如何在内部存储多个匹配项,例如这个。

经过几次测试后,Cufon 似乎以与您调用replace()语句相反的顺序应用样式。例如

如果你这样做

Cufon.replace('ul li a',{hover: true, fontWeight: 200});
Cufon.replace('ul li ul a',{hover: true, fontWeight: 700});

所有链接都将显示为蓝色,二级链接的 fontWeight 为 700 直到悬停,然后它们设置为 fontWeight 200。

如果您切换顺序

Cufon.replace('ul li ul a',{hover: true, fontWeight: 700});
Cufon.replace('ul li a',{hover: true, fontWeight: 200});

最初所有链接的 fontWeight 为 200,第二级链接在悬停时将设置为 700。

您注意到行为会根据您的调用顺序发生变化。



不确定

我不认识Cufon,我也不太明白你想做什么。特别是我不确定您是否打算像您一样使用传递给 Cufon 的选项,或者您是否真的打算在悬停时设置 fontWeight。

之间有区别

Cufon.replace('ul li a', { hover: true, fontWeight: 200 } );

Cufon.replace('ul li a', {
    hover: { fontWeight: 200 }
});

第一个设置fontWeight为 200,如果元素悬停,也将 fontWeight 设置为 200,这只有fontWeight在同时更改时才会被注意到。

后者仅在悬停时将元素的样式更改为fontWeight200,并在元素不再悬停时移除权重。

我不确定你打算使用哪一个。

于 2009-12-01T12:27:33.350 回答