Skip to content

Houdini

如下是一个带渐变边框的卡片,想要让渐变边框旋转起来。

目前是静态的,css 是

css
.card {
    background: linear-gradient(8deg, #5ddcff, #3c67e3 43%, #4e00c2);
    position: relative;
    width: 200px;
    height: 500px;
    border-radius: 20px;
    margin-top: 20px;
    animation: spin 3s linear infinite;
}
.card::before {
    content: '';
    position: absolute;
    inset: 0px;
    background: inherit;
    border-radius: inherit;
    z-index: -1;
    filter: blur(20px);
}
.card::after {
    content: '';
    position: absolute;
    inset: 8px;
    background: #191c29;
    border-radius: inherit;
}

接下来写一个动画,试图让渐变色旋转。

css
@keyframes spin {
    to {
        background: linear-gradient(360deg, #5ddcff, #3c67e3 43%, 4e00c2);
    }
}

再把动画加到 .card 上。

css
.card {
    /* ... */
    animation: spin 3s linear infinite;
}

会发现背景没有变化,是因为 background: linear-gradient 生成的是一张背景图,图片的内容是不能用动画控制的。

使用 Houdini API

Houdini API 用于定义一个 css 属性。

css
@property --direc {
    syntax: '<angle>';
    initial-value: 0deg;
    inherits: false;
}

属性名 --direc,语法是角度,初始值 0deg,不继承。

然后把这个属性用到元素上。

css
.card {
    --direc: 0deg;      
    background: linear-gradient(8deg, #5ddcff, #3c67e3 43%, #4e00c2); 
    background: linear-gradient(var(--direc), #5ddcff, #3c67e3 43%, #4e00c2); 
    position: relative;
    width: 200px;
    height: 500px;
    border-radius: 20px;
    margin-top: 20px;
}

@keyframes spin {
    to {
        background: linear-gradient(360deg, #5ddcff, #3c67e3 43%, #4e00c2); 
        --direc: 360deg; 

    }
}

完事。

评论区
评论区空空如也
发送评论
名字
0 / 20
邮箱
0 / 100
评论内容
0 / 140
由于是非实名评论,所以不提供删除功能。如果你需要删除你发送的评论,或者是其他人的评论对你造成了困扰,请 发邮件给我 。同时评论区会使用 AI + 人工的方式进行审核,以达到合规要求。

© thebestxt.cc
辽ICP备16009524号-8
本站所有文章版权所有,转载请注明出处