我在HTML中有这个SVG元素:
<g id="Group-8" transform="translate(108.800000, 0.293172)" fill="#FF056A" opacity="0.1">
在这里您可以看到一个名为opacity
的属性,其值为0.1
现在我想将其值增加到0.3、0.6、0.9,然后再次增加到0.6、0.3、0.1。它应该一直这样做。
我已经使用了Javascript setTimeout
方法,但是不知道如何使它做我想做的事情:(
setTimeout(function() {
$("#Group-8-Copy-2").attr('opacity', '0.3');
}, 1000);
答案 0 :(得分:1)
在代码段下方签出:
$( document ).ready(function() {
setInterval(function(){
opacity = $('#tilak').css("opacity");
opacity = Number(opacity) + 0.3;
if (opacity > 1) {
opacity = 0;
}
$('#tilak').css("opacity", opacity);
console.log(opacity);
}, 1000);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body id="tilak" style="opacity: 0">
kdjkd
</body>
答案 1 :(得分:1)
你在这里
var value = [0.1, 0.3, 0.6, 0.9];
var add = true;
var i = 0;
setInterval(function() {
$("#Group-8-Copy-2").attr('opacity', [value[i]]);
i = add ? i + 1 : i -1;
add = i == value.length -1 ? false : (i == 0 ? true : add );
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<g id="Group-8-Copy-2" fill="#FF056A" opacity="0.1">
<circle cx="10" cy="10" r="5" />
</g>
</svg>
答案 2 :(得分:1)
您也可以使用CSS animations在不使用JS的情况下实现脉动。使用CSS动画通常比使用JS动画具有优势,您可以通过更改animation-duration
并调整其他内容来更精确地调整事物的时间,而不用调整计时器的超时时间,等等。之所以表现更好,是因为浏览器可以完成所有工作,而不是由浏览器解释您的代码并与DOM交互以使其正常工作。
.stepped-pulse {
animation-duration: 4s;
animation-name: stepped-pulse;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-timing-function: steps(4, end);
}
@keyframes stepped-pulse {
0% {
opacity: .01;
}
100% {
opacity: .09;
}
}
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<g id="Group-8-Copy-2" class="stepped-pulse" fill="#FF056A">
<circle cx="10" cy="10" r="5" />
</g>
</svg>
如果您想要更平滑的动画(就像您在另一个答案的注释中所示),则可以更改animation-timing-function
(在这种情况下,我将其删除,并且默认为ease
):
.pulse {
animation-duration: 4s;
animation-name: pulse;
animation-iteration-count: infinite;
animation-direction: alternate;
}
@keyframes pulse {
0% {
opacity: .01;
}
100% {
opacity: .09;
}
}
<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<g id="Group-8-Copy-2" class="pulse" fill="#FF056A">
<circle cx="10" cy="10" r="5" />
</g>
</svg>