CSS 利用filter以及渐变背景实现极光
随着css不断的迭代发展,它能做的东西也越来越多了,甚至能够实现我们从未见过的动画效果,并且能够实现更小的内存消耗。
知识点梳理
示例
<script lang='ts' setup>
</script>
<template>
<div class="custom-wrapper h-500px relative bg-white">
<div class="absolute w-full h-full inset-0 overflow-hidden">
<div class="aurora h-500px opacity-50 -inset-10px" />
</div>
</div>
</template>
<style lang='scss' scoped>
@keyframes auroraAnimation {
from {
background-position: 50% 50%, 50% 50%;
}
to {
background-position: 350% 50%, 350% 50%;
}
}
.aurora {
// 顺时针倾斜100deg,同时利用重复线性渐变将图像重复排列
--stripes: repeating-linear-gradient(
100deg,
#fff 0%,
#fff 7%,
transparent 10%,
transparent 12%,
#fff 16%
);
// 顺时针倾斜100deg,同时利用重复线性渐变将图像重复排列
--stripesDark: repeating-linear-gradient(
100deg,
#000 0%,
#000 7%,
transparent 10%,
transparent 12%,
#000 16%
);
// 顺时针倾斜100deg,同时利用重复线性渐变将图像重复排列
--rainbow: repeating-linear-gradient(
100deg,
#60a5fa 10%,
#e879f9 15%,
#60a5fa 20%,
#5eead4 25%,
#60a5fa 30%
);
// 多个重复线性渐变组合形成不同比例宽度的条状背景
background-image: var(--stripes), var(--rainbow);
background-size: 300% 200%;
background-position: 50% 50%, 50% 50%;
// 高斯模糊背景并且反转图像颜色
filter: blur(10px) invert(1);
// 图层蒙版使用径向渐变,径向渐变采用ellipsis椭圆形状,并设置中心点在由上方
mask-image: radial-gradient(ellipse at 100% 0%, black 40%, transparent 70%);
// 取消鼠标事件
pointer-events: none;
// 伪类:: 和 : 作用一直却别在于兼容性,gulp构建后一般会转为::
&::after {
content: '';
position: absolute;
inset: 0;
background-image: var(--stripes), var(--rainbow);
background-size: 200% 100%;
animation: auroraAnimation 60s linear infinite;
// 背景图相对视图口的位置设置为固定定位
background-attachment: fixed;
// 背景颜色混合模式
mix-blend-mode: difference;
}
}
</style>
感悟
不管任何一门技术或者一个专业领域的知识想要学习,并全面掌握并非易事,虚心求教才是最好的学习状态。,从业七八年听到的最多的就是前端很简单,我个人从未觉得前端简单,我觉得前端是一个涵盖多个方向,多知识领域的行业,不必任何一个技术行业容易,能轻而易举说出这些话的,要么是外行,要么就真的是一知半解,肤浅、愚钝至极。