我试图在悬停时将文本和.svg渐变为另一种颜色。
a{
color: #ff0000;
display: inline-block;
margin: 0 0 0 1em;
text-decoration: none;
text-transform: lowercase;
transition: color 1s linear;
}
a:hover{
color: #000;
}
svg{
vertical-align: middle;
width: 2em;
}
path{
transition: fill 1s linear;
fill: #ff0000;
}
a:hover path{
fill: #000;
}
<a href="http://example.com" class="tweet-this">
<i class="icon icon-twitter">
<svg width="32" height="32" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>twitter</title><path d="M24.679 10.658c-.651.281-1.35.471-2.083.556.749-.437 1.324-1.13 1.595-1.955-.701.405-1.477.699-2.303.858-.662-.687-1.604-1.116-2.647-1.116-2.003 0-3.627 1.582-3.627 3.535 0 .277.032.546.094.805-3.014-.147-5.687-1.554-7.476-3.693-.312.522-.491 1.129-.491 1.777 0 1.226.64 2.308 1.614 2.942-.594-.018-1.154-.177-1.643-.442v.045c0 1.712 1.25 3.141 2.909 3.466-.304.081-.625.124-.956.124-.234 0-.461-.022-.682-.063.462 1.404 1.801 2.426 3.388 2.455-1.241.948-2.805 1.513-4.505 1.513-.292 0-.581-.017-.865-.049 1.605 1.003 3.512 1.588 5.56 1.588 6.671 0 10.32-5.385 10.32-10.056l-.01-.457c.709-.498 1.323-1.121 1.81-1.829" fill="#fff"></path></svg>
</i>
Tweet this
</a>
.svg上的转换在Safari中不会触发,但在Chrome和Firefox中可以。
这个答案说明你需要一个起始和结束颜色,我有。
我怎样才能使转换工作在Safari ?
我看到了rrott.com上一篇题为"Safari中SVG的CSS过渡动画的Bug"的文章。
多汁:
我发现所有访问过的链接的过渡都停止工作了这可能就是我无法重现这个问题的原因在一台机器上运行,而在另一台机器上运行失败。
和
遗憾的是,在CSS中更改:visited pseudo以及使用xmlns:xlinkSVG内部不能使转换再次工作,并且没有黑客。
文章还列出了一些可能的解决方案:
我看到了几个解决方案,但不幸的是,没有一个是足够好:
在链接中添加一些随机数据(例如/#timestamp)
不要在链接中使用动画和内联SVG
使用位置和z-index将链接置于SVG图像之上,以便图像是"clickjacked"。它工作,但需要额外的js代码来处理图像的悬停事件不松散悬停动画,例如添加Jquery
在Safari中动态移动SVG。
如果你的Safari用户数量很少,就保持原样。
我现在选5号。