CSS 实现波浪效果

思路

绘制两个曲面拼接起来,就形成了波浪形。

使用 radial-gradient 绘制曲面。


scss

代码解读

复制代码

radial-gradient( [size] at [position], /* 形状和位置 */ [color-stop1], /* 颜色断点1 */ [color-stop2] /* 颜色断点2 */ ) /* 举例: */ background: radial-gradient(90% 50% at 20% 100%, #fff 98%, var(--color) 99%)

Size(大小):90% 50%

第一个值:渐变椭圆的宽度,第二个值:渐变椭圆的高度;也可以使用关键字:circle(圆形)或 ellipse(椭圆形)。

改变波浪形状大小: 增大90%缩小50%可以让波浪更宽,反之更窄。

Position(位置):at 20% 100%

at 后面的值定义渐变的中心点。第一个值:水平位置(left, center, right 或百分比),第二个值:垂直位置(top, center, bottom 或百分比)。

移动波浪的位置: 缩小/增大20%会左/右移动波浪的位置。

Color Stops(颜色断点):#fff 98%, var(--color) 99%

每个颜色断点包含:颜色值 + 位置值(百分比),可以有多个颜色断点。

绘制曲面代码


scss

代码解读

复制代码

.wave { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(100% 57% at bottom,#0000 100%, #2196F3 100.5%) no-repeat; background-size: 50% 100%; background-position: 0 100%; background-repeat: no-repeat; }

绘制波浪代码


scss

代码解读

复制代码

.wave { position: absolute; top: 0; left: 0; width: 100%; height: 100%; --color: #2196F3; --w1: radial-gradient(100% 57% at bottom,#0000 100%, var(--color) 100.5%) no-repeat; --w2: radial-gradient(100% 58% at top, var(--color) 100%,#0000 100.5%) no-repeat; background: var(--w1), var(--w2); background-size: 50% 100%, 50% 100%; background-position: 0 100%, 100% 100%; background-repeat: no-repeat; }

具体使用需要自行调节 radial-gradient,background-size,background-position 的值,使形状衔接流畅。调整 background-size 的百分比会改变波浪的覆盖范围,调整 background-position 的值会改变两个渐变图案的重叠程度。

具体实现

登录页背景

代码


html

代码解读

复制代码

<template> <view class="wave-container"> <view class="wave1"></view> <view class="wave2"></view> <view class="wave3"></view> </view> </template>


scss

代码解读

复制代码

<style lang="scss" scoped> .wave-container { position: relative; width: 100%; height: 300px; overflow: hidden; } .wave1 { position: absolute; top: 0; left: 0; width: 100%; height: 100%; --color: #487CF5; --w1: radial-gradient(95% 56.8% at 50% 100%,#0000 100%, var(--color) 100.5%) no-repeat; --w2: radial-gradient(150% 46.8% at 70% 10%, var(--color) 100%,#0000 100.5%) no-repeat; background: var(--w1), var(--w2); background-size: 70% 100%, 30% 100%; background-position: 0 100%, 100% 100%; background-repeat: no-repeat; z-index: 0; } .wave2 { position: absolute; top: 0; left: 0; width: 100%; height: 100%; --color: #819adf; --w1: radial-gradient(95% 53% at 38% 100%,#0000 100%, var(--color) 100.5%) no-repeat; --w2: radial-gradient(160% 56.8% at 80% 10%, var(--color) 100%,#0000 100.5%) no-repeat; background: var(--w1), var(--w2); background-size: 70% 100%, 30% 100%; background-position: 0 100%, 100% 100%; background-repeat: no-repeat; z-index: -1; opacity: 0.1; // 使用透明度实现叠加效果 } .wave3 { position: absolute; top: 0; left: 0; width: 100%; height: 100%; --color: #E8F2FB; --w1: radial-gradient(140% 24% at 50% 80%,#0000 100%, var(--color) 100.5%) no-repeat; --w2: radial-gradient(80% 51% at 30% 10%, var(--color) 100%,#0000 100.5%) no-repeat; background: var(--w1), var(--w2); background-size: 20% 100%, 80% 100%; background-position: 0 100%, 100% 100%; background-repeat: no-repeat; z-index: -2; } </style>

原文:https://juejin.cn/post/7490506373899763766

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值