Cufon - 悬停效果和活动菜单项的问题

Posted

技术标签:

【中文标题】Cufon - 悬停效果和活动菜单项的问题【英文标题】:Cufon - problem with hover effects and active menu items 【发布时间】:2011-07-01 07:10:41 【问题描述】:

我创建了一个使用 cufon 字体的菜单。

我决定在菜单项上应用以下样式:

正常:灰色文本 悬停:黑色文本 活动:红色文本

问题是悬停在(红色)活动菜单项上,结果将其变回灰色(并使其看起来像任何其他“正常”菜单项)。我不明白为什么,你能帮我解决它吗?

这是当前的 cufon 配置:

Cufon.replace('ul#mainmenu li > a', 
    color: '#868686',
    fontFamily: 'pfbeau',
    fontSize: '15px',
    textShadow: '0 2px 0.1em #fff',
    hover: 
        color: '#3e3e3e'
    
);
Cufon.replace('ul#mainmenu li.active > a', 
    color: '#af1217',
    fontFamily: 'pfbeau',
    fontSize: '15px',
    textShadow: '0 2px 0.1em #fff',
    hover: false
);

【问题讨论】:

【参考方案1】:

尝试将红色活动颜色设置为 !important。

color: '#af1217 !important'

【讨论】:

为什么不尝试使用“普通”css,使用ul#mainmenu li.activecolor::#af1217 !important。我在某处读到 Cufon 在某些情况下不接受 !important【参考方案2】:

当您尝试执行基本文本输出之外的任何操作时,我也遇到了 cufon 出现问题。它也可能变慢,需要资源。

我强烈建议尝试改用@font-face,它可以正常工作,听 css 和所有 js 免费/更快。

http://www.fontsquirrel.com/fontface/generator

【讨论】:

我选择使用 cufon 是因为它支持特殊的样式效果(阴影、渐变色等)。我不知道@font-face 是否支持这种效果。 嗨@ktsixit查看上面的my answer,我破解了!【参考方案3】:

破解它的伴侣!

Cufon('ul#mainmenu li.active a', 
hover:  color: '#3e3e3e',
    color: '#af1217',
    fontFamily: 'BlackBeard',
    fontSize: '15px',
    textShadow: '0 2px 0.1em #fff',
);

Cufon('ul#mainmenu li a', 
    hover:  color: '#3e3e3e',
    color: '#868686',
    fontFamily: 'BlackBeard',
    fontSize: '15px',
    textShadow: '0 2px 0.1em #fff',
);

Cufon.replace('ul#mainmenu li', 
    color: '#868686',
    fontFamily: 'BlackBeard',
    fontSize: '15px',
    textShadow: '0 2px 0.1em #fff',
);

Cufon.replace('ul#mainmenu li.active a', 
    color: '#af1217',
    fontFamily: 'BlackBeard',
    fontSize: '15px',
    textShadow: '0 2px 0.1em #fff',
);    

看看吧! - http://jsfiddle.net/3Yf4G/2/

用你的字体替换'BlackBeard'...

【讨论】:

花了我一段时间,但我讨厌被打败。广而告之,看来这是一个普遍的问题。【参考方案4】:

其实你需要做的是:

Cufon.replace('#THE-NAME-OF-YOUR-DIV',  hover: true );

然后只需从 style.css 或您的模板 css 中设置悬停效果。此外,您可以突出显示代表当前页面的菜单项:

CSS:

#THE-NAME-OF-YOUR-MENU-DIV ul li a:hover,
#THE-NAME-OF-YOUR-MENU-DIV ul li.current-menu-item > a,
#THE-NAME-OF-YOUR-MENU-DIV ul li.current-menu-parent > a,
#THE-NAME-OF-YOUR-MENU-DIV ul li.current-menu-ancestor > a,
#THE-NAME-OF-YOUR-MENU-DIV ul li:hover > a 
  color: #73c8ff;

Cufon 代码:

Cufon.replace('#THE-NAME-OF-YOUR-MENU-DIV',  hover: true );

Cufon('#THE-NAME-OF-YOUR-MENU-DIV ul li.current-menu-item > a', 
    color: '#73C8FF',
);

Cufon('#THE-NAME-OF-YOUR-MENU-DIV ul li.current-menu-parent > a', 
    color: '#73C8FF',
);

Cufon('#THE-NAME-OF-YOUR-MENU-DIV ul li.current-menu-ancestor > a', 
    color: '#73C8FF',
);

Cufon('#THE-NAME-OF-YOUR-MENU-DIV ul li:hover > a', 
    color: '#73C8FF',
);

这实际上对我有用多次。我已经能够用 cufon 解决大多数问题。一个让我感到不安的问题是,我发现您是否需要斜体或粗斜体字体,有时 .js 文件或某些东西会导致 Cufon 将所有内容都变为斜体。所以基本上有时启用斜体选项会导致所有内容都是斜体。否则,没有问题,而后者很少发生,但持续存在。总的来说,我是 Cufon 字体的忠实粉丝。

【讨论】:

【参考方案5】:

Cufon 不喜欢对一个元素应用多种样式。因此,使用 :not 选择器仅将第一个 cufon 替换应用于那些不是 .active 类的子级的锚标记...

Cufon.replace('ul#mainmenu li:not(.active) > a',  
    color: '#868686', 
    fontFamily: 'pfbeau', 
    fontSize: '15px', 
    textShadow: '0 2px 0.1em #fff', 
    hover:  
        color: '#3e3e3e' 
     
); 
Cufon.replace('ul#mainmenu li.active > a',  
    color: '#af1217', 
    fontFamily: 'pfbeau', 
    fontSize: '15px', 
    textShadow: '0 2px 0.1em #fff', 
    hover: false 
); 

【讨论】:

以上是关于Cufon - 悬停效果和活动菜单项的问题的主要内容,如果未能解决你的问题,请参考以下文章

css 另一个更改菜单项的背景颜色,填充和悬停颜色的示例。

如何在悬停时增加 gwt menuitem

在 laravel 中动态设置菜单项的活动类

仅通过滚动更改引用每个菜单项的背景图像

在引导下拉菜单中悬停时显示活动的父菜单项

菜单项悬停动画所有其他项目不是第一个?