首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cufon嵌套悬停问题

Cufon嵌套悬停问题
EN

Stack Overflow用户
提问于 2009-12-01 18:22:08
回答 1查看 6.5K关注 0票数 0

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

有没有我可以设置的选项,使嵌套样式保持不变,或者这是Cufon中的bug/限制?

代码语言:javascript
复制
    <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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-01 20:27:33

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

代码语言:javascript
复制
//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会产生问题

这个问题似乎源于你们这些选择者。

代码语言:javascript
复制
ul li a --> selects all 8 occurrences of <a>
ul li ul a --> selects only the 3 second-level occurrences of <a>

这意味着您实际上已经为第二级<a>-tags指定了两次fontWeight。不幸的是,Cufon似乎并不只应用具有最高CSS specificity的表达式,因此行为将取决于Cufon内部如何存储多个像这样的匹配。

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

如果你这样做了

代码语言:javascript
复制
Cufon.replace('ul li a',{hover: true, fontWeight: 200});
Cufon.replace('ul li ul a',{hover: true, fontWeight: 700});

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

如果你调换顺序

代码语言:javascript
复制
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。

这是有区别的

代码语言:javascript
复制
Cufon.replace('ul li a', { hover: true, fontWeight: 200 } );

代码语言:javascript
复制
Cufon.replace('ul li a', {
    hover: { fontWeight: 200 }
});

第一个命令将fontWeight设置为200,如果元素悬停,还会将fontWeight设置为200,只有当fontWeight同时更改时才会注意到这一点。

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1825279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档