边框上跑动的光影
这个组件的灵感是来源于 Raycast 网站,刚开始看到很好奇,这个跑动的光影是怎么实现的,难道是 svg 做成的动画?
这时你会禁不住打开开发者工具,找到对应的元素,绝对会超出你的想象。
代码实现
- JSX
- CSS
import React from 'react';
export default function (props) {
return (
<div className='outer'>
<div className='gradient'></div>
<div className='content'>
{props.children}
</div>
</div>
)
}
.outer {
position: relative;
overflow: hidden;
border-radius: 0.4rem;
padding: 4px;
width: 100%;
background: linear-gradient(100.41deg, #6366f1 .52%, #43a756 100.52%);
transform: translateZ(0);
&.shadow {
box-shadow: 0 5px 18px rgb(122 121 121 / 42%);
}
.content {
position: relative;
z-index: 1;
min-height: 50px;
border-radius: 0.3rem;
background: #fff;
display: flex;
align-items: center;
padding: 20px;
}
@keyframes running_shadow {
0% {
transform: translateY(-25%) translateX(40%) rotate(0deg);
}
30% {
transform: translateY(0) translateX(0) rotate(90deg) scaleX(.7);
}
50% {
transform: translateY(-25%) translateX(-40%) rotate(180deg);
}
70% {
transform: translateY(0) translateX(0) rotate(270deg) scaleX(.7);
}
100% {
transform: translateY(-25%) translateX(40%) rotate(1turn);
}
}
.gradient {
position: absolute;
height: 100%;
border-radius: 0.4rem;
filter: blur(8px);
inset: 0;
transform-origin: center;
will-change: transform;
background: conic-gradient(transparent 50deg,rgba(255, 255, 255, 0.6) 80deg, transparent 100deg);
animation: running_shadow -.64s linear 4s infinite;
}
}
本站内容遵守 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
如果内容对你有用,请作者喝杯咖啡 ☕:
如果内容对你有用,请作者喝杯咖啡 ☕: