我正在尝试使用以下内容创建导航栏:
HTML:
<svg height="40" width="40">
<a href="#">
<circle cx="20" cy="20" r="20"></circle>
</a>
</svg>
<svg height="40" width="40">
<a href="#">
<circle cx="20" cy="20" r="20"></circle>
</a>
</svg>
<svg height="40" width="40">
<a href="#">
<circle cx="20" cy="20" r="20"></circle>
</a>
</svg>
的CSS:
a {
color: #8899a6;
}
a:focus,
a:hover {
color: #1da1f2;
}
circle {
fill: currentcolor;
}
当您将鼠标悬停在该链接上并点击它之后链接变为蓝色。当我在Chrome中运行它时,这工作得很好。但是,它不适用于Firefox。有没有办法在Firefox中使用它?
答案 0 :(得分:1)
您有什么理由需要专门使用SVG吗?因为只使用HTML和CSS就可以获得相同的结果。
a,
a:link,
a:visited,
a:hover,
a:active {
background-color: #8899a6;
display: inline-block;
width: 40px;
height: 40px;
border-radius: 50%;
}
a:focus,
a:hover {
background-color: #1da1f2;
}
<a href="#"></a>
<a href="#"></a>
<a href="#"></a>
答案 1 :(得分:1)
尚未能够创建css
解决方案,但您应该可以使用javascript
.querySelectorAll()
,.forEach()
,click
事件
var a = document.querySelectorAll("svg a");
[].forEach.call(a, function(el, index) {
el.onclick = function(e) {
[].forEach.call(a, function(elem) {
elem.style.color = "#8899a6"
})
this.style.color = "#1da1f2";
}
})
jsfiddle https://jsfiddle.net/9xe4tu7p/1/
答案 2 :(得分:1)
当您在a
中放置svg
元素时,会使用SVGAElement
原型而不是HTMLAnchorElement
创建它。 Firefox并没有在SVGAElement上实现focus
方法,而Chrome也是如此。
如果可以,您可以简单地切换a
和svg
元素的顺序,如果它在svg
之外创建,那么您的a
元素将是可聚焦的。
<a href="#" tabindex="1">
<svg height="40" width="40">
<circle cx="20" cy="20" r="20"></circle>
</svg>
</a>
<svg height="40" width="40">
<a href="#">
<circle cx="20" cy="20" r="20"></circle>
</a>
</svg>
<svg height="40" width="40">
<a href="#">
<circle cx="20" cy="20" r="20"></circle>
</a>
</svg>