我正在尝试为 div 块创建径向渐变闪光动画效果,但我不确定我的方法是否是最好的方法。
我还没有找到任何其他解决方案来实现我想要实现的目标。我发现的例子只是看起来像叠加的闪光效果。
我发现的大多数示例如下所示:http: //jsfiddle.net/nqQc7/512/。
以下是我到目前为止所得到的:
#shine-div {
height: 30vh;
width: 60vw;
margin-right: auto;
margin-left: auto;
border-radius: 10px;
/*background: radial-gradient(ellipse farthest-corner at right top, #FFFFFF 0%, #ffb3ff 8%, #ff33ff 25%, #800080 62.5%, #b300b3 100%);*/
display: flex;
justify-content: center;
align-items: center;
color: white;
font-weight: bold;
animation: colorChange 5s infinite;
}
@keyframes colorChange {
0% {
background: radial-gradient(ellipse farthest-corner at left top, #FFFFFF 0%, #ffb3ff 8%, #ff33ff 25%, #800080 62.5%, #b300b3 100%)
}
50% {
background: radial-gradient(ellipse farthest-corner at top, #FFFFFF 0%, #ffb3ff 8%, #ff33ff 25%, #800080 62.5%, #b300b3 100%)
}
100% {
background: radial-gradient(ellipse farthest-corner at right top, #FFFFFF 0%, #ffb3ff 8%, #ff33ff 25%, #800080 62.5%, #b300b3 100%)
}
/*0% { transform: translateY(-20vh) translateX(-7vw) ; opacity: 0; }*/
/*10% { transform: translateY(-20vh) translateX(-7vw) ; opacity: 1; }*/
/*40% { transform: translateY(-20vh) translateX(17vw) ; opacity: 1; }*/
/*50% { transform: translateY(-20vh) translateX(17vw) ; opacity: 0; }*/
/*60% { transform: translateY(-20vh) translateX(17vw) ; opacity: 1; }*/
/*90% { transform: translateY(-20vh) translateX(-7vw) ; opacity: 1; }*/
/*100% { transform: translateY(-20vh) translateX(-7vw) ; opacity: 0; }*/
}
<div id="shine-div">
Shine
</div>
是否有可能以及如何使顶部的白色光泽从左向右平滑移动?
您可以以不同的方式制作渐变并为其位置设置动画。诀窍是将渐变的大小加倍并使值
stop-color成为其实际值的一半以保持相同的视觉渐变,然后从左到右对其进行动画处理。由于远角计算,它看起来与您在动画中定义的渐变不完全相同
要使用渐变更接近您的示例,您还可以为大小设置动画:
您还可以在给定伪元素的情况下执行相同的动画并
transform获得更好的性能:SVG 解决方案
所有滤镜、渐变、蒙版、剪辑都来自 SVG 的 CSS。因此,有必要添加一个带有 SVG 渐变的解决方案。
原则上,我将重复 css 解决方案中的所有内容,相同的颜色
stop-color,相同的百分比stop offset水平移动渐变
动画是通过改变
fx径向渐变参数的值来实现的,该参数负责渐变中心的水平坐标。开始动画 - 点击矩形
属性
keyTimes提供不均匀的运动,值的数量必须等于属性中的值的数量在这里values阅读更多。垂直渐变动画
在这种情况下,动画
fy对角线动画
两个参数同时动画
fx,fy悬停动画
动画开始条件:
begin="rect1.mouseover"