我尝试转换一个嵌入式SVG对象的填充和路径,但似乎不起作用(Code Pen here):
SVG:
<a class="simple-link svg-link" href="">
Some Text
<svg version="1.1" id="next-page-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 25 25" enable-background="new 0 0 25 25" xml:space="preserve" preserveAspectRatio="xMinYMin meet">
<circle class="the-background" cx="12.5" cy="12.5" r="12.5"/>
<g>
<path class="the-icon" d="M16.088,11.421l-3.404,3.362l-3.418-3.362v-1.204l3.418,3.444l3.404-3.444V11.421z"/>
</g>
</svg>
</a>
大嘴巴
a
{
width:200px;
height:200px;
overflow: hidden;
@include transition(color, 1s);
@include transition(background, 1s);
svg
{
width:200px;
height:200px;
.the-background
{
@include transition(fill, 1s);
fill: grey;
}
.the-icon
{
@include transition(fill, 2.5s);
}
}
&:hover
{
color: red;
background: black;
.the-background
{
fill: black;
}
.the-icon
{
fill: red;
}
}
}
为什么悬停时填充没有动画效果?
4条答案
按热度按时间e7arh2l61#
我解决这个问题的方法是把
fill="currentColor"
放在我想要转换的svg path元素上,然后我把color
和transition
属性添加到周围的anchor标签中,并在anchor标签上执行CSS转换,而不是在svg path本身上。超文本:
SCSS:
mwkjh3gx2#
转换不起作用的原因是它位于链接内。
要解决此问题,请将链接放在SVG中,而不是like this SO post suggests中
或
使SVG成为链接的同级并使用同级选择器
qnakjoqk3#
我刚刚发现,为了在锚元素中转换svg填充,它只能使用rgba颜色代码。我还没有研究为什么会这样,但它在我的项目中起作用-这里有一个例子:http://rawesome.leveragenewagemedia.com/(悬停社交媒体图标)。
下面是我使用的SASS:
acruukt94#
我不得不反驳这个答案,因为至少在这个时间点上,svg转换和动画在锚标记中不起作用的说法是不正确的。
工作示例: