【发布时间】:2018-07-20 12:44:51
【问题描述】:
在阅读了这篇概述如何为使用实例中的 svg 元素分配颜色的文章后,我想看看我是否可以使用该模式来应用到其他属性,如动画等。基本上是尝试为同一图标的不同实例设置动画不同的方式。
我创建用于测试的笔 https://codepen.io/asleepy/pen/PQWJVj
<svg xmlns="http://www.w3.org/2000/svg" class="defs-only">
<symbol viewBox="0 0 15 15" id="icon-radio">
<circle id="circle-outer" cx="7.5" cy="7.5" r="6.5"
fill="var(--outer-fill-color)"
stroke="var(--outer-stroke-color)" />
<circle id="circle-inner" cx="7.5" cy="7.5" r="4.5"
fill="var(--inner-fill-color)"
stroke="var(--inner-stroke-color)" />
</symbol>
</svg>
<svg viewBox="0 0 15 15" class="icon-radio one">
<use xlink:href="#icon-radio" />
</svg>
<svg viewBox="0 0 15 15" class="icon-radio two">
<use xlink:href="#icon-radio" />
</svg>
<style>
[class^='icon-'] {
width: 3rem;
transition-duration: 0.195s;
transition-timing-function: cubic-bezier(0.4, 0.0, 1, 1);
transition-property: var(--inner-fill-color);
will-change: var(--inner-fill-color);
&:hover {
--inner-fill-color: rgba(255, 255, 255, 0);
}
}
#circle-outer {
stroke-width: 2;
}
.one {
--outer-fill-color: rgba(255, 255, 255, 0);
--outer-stroke-color: rgba(210, 120, 150, 0.8);
--inner-fill-color: rgba(123, 12, 34, 1);
--inner-stroke-color: rgba(255, 255, 255, 0);
}
.two {
--outer-fill-color: rgba(255, 255, 255, 0);
--outer-stroke-color: rgba(23, 47, 26, 1);
--inner-fill-color: rgba(4, 23, 69, 1);
--inner-stroke-color: rgba(255, 255, 255, 0);
}
</style>
虽然动画不起作用。它只是跳转到结束状态,好像转换无效。
有谁知道如何做到这一点?
【问题讨论】: