我有以下标记:
<a href="#" title="Feedback" id="feedbacktogglenav">
Feedback
<i class="icon-comment"></i>
</a>
悬停时,我希望文本带有下划线,而不是字体真棒图标。我知道您可以在图标上执行“text-decoration:none”(有效),但是当您将鼠标悬停在文本部分时,它仍会为图标添加下划线。有任何想法吗?
我有以下标记:
<a href="#" title="Feedback" id="feedbacktogglenav">
Feedback
<i class="icon-comment"></i>
</a>
悬停时,我希望文本带有下划线,而不是字体真棒图标。我知道您可以在图标上执行“text-decoration:none”(有效),但是当您将鼠标悬停在文本部分时,它仍会为图标添加下划线。有任何想法吗?
我发现了一种不需要额外跨度标签的方法,它适用于我尝试过的所有浏览器(FF/Chrome/Safari/Opera)...除了IE8(我还没有在 IE 9 中测试过)或 10 个)。
只需将图标声明为 display:inline-block,悬停时不再有下划线。
示例:http: //jsfiddle.net/J432G/
HTML:
<a href="#" title="Feedback" id="feedbacktogglenav">
Feedback<i class="icon-comment"></i>
</a>
CSS:
a{
text-decoration: none;
}
a:hover{
text-decoration: underline;
}
i:after{
content: '{icon}';
display: inline-block;
padding-left: 1em;
}
...但是当您将鼠标悬停在文本部分时,它仍会为图标添加下划线。有任何想法吗?
要使其正常工作,您需要在单独的元素中包含链接文本(span
理想情况下是 a ):
<a href="#">
<span>Feedback</span>
<i class="icon-comment"></i>
</a>
现在您可以text-decoration
从链接中完全删除 并将其分配给span
(悬停时):
a {
text-decoration:none;
}
a:hover span {
text-decoration:underline;
}
可靠地做到这一点的唯一方法是将 text-decoration:none 分配给第一个父元素,即初始 a 标记。
如果您无法添加 span 元素(假设您只有 CSS 访问权限),它应该适用float:left or right
于您的图标元素。
有人刚刚回复但删除了他们的回复。解决方案是:
#utilitynav a i {text-decoration:none;}
谢谢神秘人!
只需在 HTML 中添加一个 span 标签,就可以了。
HTML:
<a href="#" title="Feedback" id="feedbacktogglenav">
<span class="linkHover">Feedback</span>
<i class="icon-comment"></i>
</a>
CSS
a {
text-decoration:none;
}
.linkHover:hover{
text-decoration: underline;
}
#utilitynav .icon-comment {
font-size: 12px;
margin-left: 3px;
position: absolute;
top: 2px;
}
#utilitynav .icon-comment:hover {
text-decoration:none;
}
#utilitynav #feedbacktogglenav {
margin-right: 12px;
}
我在您的跨度中添加了一个类,因为它不会影响未来的跨度标签
如果你有不能使用:before
or的情况:after
(例如,具体图标是由内容设置的,而不是由全局样式设置的),并且你也不想进入并放置<span>
链接文本无处不在...另一种选择是将填充放在链接上,并将图标绝对定位在填充上。
HTML
<a href="#">Feedback <i class="icon-comment fas fa-link"></i></a>
CSS
a {
position: relative;
text-decoration:none;
padding-left: 20px;
}
a:hover {
text-decoration:underline;
}
a i {
position: absolute;
left: 0;
}
JSFiddle:http: //jsfiddle.net/w6bL5m8k/1/
我敢肯定,在各种特殊情况下,这可能都行不通……但是对于简单的情况,应该没问题。