我需要在悬停时用文本围绕的锚链接加下划线。
我正在寻找类似于下面的结果,但没有定位来自ID或类的任何链接,因为它对所有链接都是相同的。
如何使用css(或javascript,如果没有)为文本包围的链接添加下划线 有可能吗?
a{
text-decoration: none;
}
a#withText:hover{
text-decoration: underline;
}

<span> <a href="#"> Alone link </a> <span>
<br/>
<span> Text around <a id="withText" href="#"> Text surrounded link </a> Text around </span>
&#13;
答案 0 :(得分:1)
如果a
始终在span
范围内,您可以像这样定位:
span a:hover {
text-decoration: underline;
}
这会定位a
内的所有span
。
答案 1 :(得分:1)
您可以使用span > a:hover
这将定位a
的直接子女所有span
。
a{
text-decoration: none;
}
span > a:hover{
text-decoration: underline;
}
&#13;
<a href="#"> Alone link </a>
<br/>
<span> Text around <a id="withText" href="#"> Text surrounded link </a> Text around </span>
&#13;
答案 2 :(得分:1)
据我所知,没有办法处理纯文本节点&#34;在css选择器中。我去JS,你可以很容易地检查链接的文本是否等于它的父元素的所有文本。
这是一个使用jquery的小提琴,但你也可以用普通的javascript来完成。
$("a").each(function(){
if($(this).text().trim() == $(this).parent().text().trim()){
//This link is the only content of parent item, so...
$(this).addClass('no-underline');
}
});
&#13;
a{text-decoration:none}
a:hover{text-decoration:underline}
a.no-underline:hover{text-decoration:none}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>text arround <a href="#here">the link</a></p>
<p>text arround <a href="#here">the link</a> on both side</p>
<p><a href="#here">the link</a> with text after it</p>
<p> <a href="#here">a link alone (whitespaces arround)</a> </p>
&#13;