当前位置: 首页 > news >正文

CSS 实现波浪效果

参考文章:巧妙使用 CSS 渐变来实现波浪动画_css实现波浪动效-CSDN博客

思路

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

使用 radial-gradient 绘制曲面。

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%

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

绘制曲面代码

.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;
}

绘制波浪代码

.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 的值会改变两个渐变图案的重叠程度。

具体实现

登录页背景

代码

<template>
  <view class="wave-container">  
    <view class="wave1"></view>
    <view class="wave2"></view>
    <view class="wave3"></view>
  </view>
</template>
<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>

相关文章:

  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_modules
  • 前端Npm面试题及参考答案
  • 深度剖析数据分析职业成长阶梯
  • Ubuntu20.04下各类常用软件及库安装汇总
  • 解锁浏览器内置API,助力跨标签/跨页面数据通信
  • 详解:事务注解 @Transactional
  • 【后端开发面试题】每日 3 题(四)
  • 【Python LeetCode 专题】面试经典 150 题
  • 卷积运算是如何进行的?
  • 详细对比所有开源许可及其不同版本
  • 人工智能之数学基础:线性代数中的特殊矩阵
  • 技术问题汇总:前端怎么往后端传一个日期?
  • 【网络安全】从NA到P1,我是如何扩大思路的?
  • CSS层叠上下文解析与应用
  • 计算机毕业设计SpringBoot+Vue.js实验室管理系统(源码+文档+PPT+讲解)
  • 学习笔记07——生产者-消费者模型4种实现方式
  • LLM 大语言模型定义以及关键技术术语认知
  • MySQL表字段数量上限解析
  • 平衡二叉树
  • web前端基础修炼手册
  • 石家庄百度推广家庄网站建设/郑州学校网站建设
  • 外贸站群/青岛网站建设推广公司
  • 长宁广州网站建设/网站制作和推广
  • 贵阳网站制作软件/windows优化大师是什么软件
  • 电商网站建设网/搜索引擎优化的根本目的
  • 请教个人主页网站怎么做啊/手机网站制作软件