4

我正在尝试选择所有链接,除了那些内部和 mailto 链接和锚链接 (#) 所以我想组合选择器,以便它们排除 X、Y 和 Z。但是我不知道如何加入它们。

a:not([href*="myurl"]) { }

这个 CSS 会找到所有不包含“myurl”的链接,但是它会找到 mailto: 和锚 (#) 链接,我想从选择器中排除它。

我必须使用 not 选择器来查找我网站之外的所有 URL,因为据我所知,如果不使用 not 就无法说出“我自己以外的所有网站”。有没有办法让它像

a:not([href*="myurl OR # OR mailto"]) { }

完整的代码也使用 :hover 和 :after 如果重要的话:

a:not([href*="myurl"]):hover:after { }

这需要完全在 CSS 而不是 jquery/javascript 中完成。而且我无法向网址添加类。

有可能吗?(跨浏览器没那么重要。Chrome + Firefox 就足够了)

我目前的解决方法是使用其他链接来定位,not([href*="http:// "]) { }但这并不可取,因为这意味着再次覆盖更改,这并不总是有效,因为一个可能是color: red另一个color: blue,我不能让它们回到原来的颜色(除其他原因外)

4

1 回答 1

13

您可以简单地通过添加更多选择器来排除它们:not()

a:not([href*="myurl"]):not([href*="#"]):not([href*="mailto"]) { }

对于:hover:after状态,只需像这样附加它:

a:not([href*="myurl"]):not([href*="#"]):not([href*="mailto"]):hover:after { }

另外,由于这是 CSS3,我建议您使用双冒号来表示:after::after只是为了清楚地表明您在一系列伪类之后链接了一个伪元素,但这不是绝对必需的,无论您使用哪个使用不会对浏览器产生影响:

a:not([href*="myurl"]):not([href*="#"]):not([href*="mailto"]):hover::after { }
于 2013-05-28T07:26:03.430 回答