超链接伪类:如何在svg元素上使用超链接伪类?
代码语言:javascript复制a:link 未单击访问时超链接样式 a:link{color:#9ef5f9;}
a:visited 单击访问后超链接样式 a:visited {color:#333;}
a:hover 鼠标悬浮其上的超链接样式 a:hover{color:#ff7300;}
a:active 鼠标单击未释放的超链接样式 a:active {color:#999;}
注意定义的顺序LVHA
这个样式可能会被后声明的其他链接相关的伪类覆盖,这些伪类包括 (:link, :hover,和:active)。要适当地设置链接样式,请将:visited 规则放在:link 规则之后,但在:hover 和:active 规则之前。
参照 LVHA 顺序::link — :visited — :hover — :active。
链接,访问过,悬停,激活(按下的)。
注意先写默认样式
代码语言:javascript复制 <style>
a,a:link {
background-color: white;
border: 1px solid white;
}
a:visited {
background-color: yellow;
border-color: hotpink;
color: hotpink;
}
</style>
<a href="#test-visited-link">链接1</a>
<a href="">空链接2</a>
样式限制
并不是只能给a链接加这几个伪类,可以给所有元素添加。但并不是所有的样式可用,只有少量可用
允许使用的 CSS 属性为color, background-color, border-color, border-bottom-color, border-left-color, border-right-color, border-top-color, column-rule-color, 和outline-color。
- 文本颜色
- 背景色
- 边框色
允许使用的 SVG 属性为fill 和 stroke。
在svg上使用超连接伪类
代码语言:javascript复制 <h2>使用svg</h2>
<svg width="200" height="200">
<defs>
<style type="text/css">
#rect1 {
stroke: black;
fill: red;
}
#rect1:hover {
stroke: black;
fill: rgb(101, 31, 192);
}
#rect1:active {
stroke: black;
fill: rgb(109, 84, 98);
}
</style>
</defs>
<rect x="10" height="50" y="10" width="50" id="rect1" />
</svg
alpha样式将受限
允许使用的样式的 αlpha 分量(透明度)将被忽略。设置在:visited中的样式将使用元素的非:visited 访问状态的 αlpha 分量, 如果该分量为0,这个样式将被完全忽略。
background-color与color颜色的alpha分量均是受限的。
最佳实践
在使用超链接伪类时,按照LVHA的顺序依次定义伪类样式,注意能够使用的样式属性,三个颜色,以及alpha的受限。