纯CSS实现波浪移动效果的示例

让我来为你详细讲解如何使用纯CSS实现波浪移动效果。

步骤一:HTML结构

首先,我们需要创建HTML结构。本例中,我们需要一个容器元素和两个波浪元素。代码示例如下:

<div class="wave-container">
  <div class="wave"></div>
  <div class="wave"></div>
</div>

步骤二:CSS样式

接下来,我们需要为这些元素添加CSS样式。我们将使用伪元素和transform属性来创建波浪效果。代码示例如下:

.wave-container {
    position: relative;
    width: 100%;
    height: 150px;
    background-color: #fff;
}

.wave {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50%;
    background-color: #4c95bd;
}

.wave::before, .wave::after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 200%;
    height: 100%;
    border-radius: 50%;
    background-color: inherit;
    transform: translateX(-50%);
}

.wave::before {
    left: -100%;
    animation: wave 4s ease-in-out infinite;
}

.wave::after {
    left: 0;
    animation: wave 4s ease-in-out 2s infinite;
}

@keyframes wave {
    0% {
        transform: translateX(0) scale(1);
    }
    50% {
        transform: translateX(-25%) scale(0.8);
    }
    100% {
        transform: translateX(-50%) scale(1);
    }
}

在上面的代码中,我们使用了伪元素(::before和::after)和transform属性来创建波浪效果。其中,伪元素的宽度为200%,高度为100%,利用了圆的边界特性来模拟波浪的形状。transform属性用于移动和缩放波浪的位置和大小。

同时,我们也为波浪元素添加了动画效果,让它们在水平方向上来回移动。动画使用了关键帧@keyframes,并在前50%的时间缩小波浪大小,后50%的时间恢复原大小。这样做的目的是为了让波浪看起来更加自然。

示例说明

下面是两个使用纯CSS实现波浪移动效果的示例说明,希望对你有所帮助。

示例一:将波浪效果应用于卡片背景

在这个示例中,我们将波浪效果应用于卡片的背景,代码如下:

<div class="card">
  <div class="wave-container">
    <div class="wave"></div>
    <div class="wave"></div>
  </div>
  <div class="content">
    <h2>卡片标题</h2>
    <p>这是一段卡片内容。这是一段卡片内容。这是一段卡片内容。</p>
  </div>
</div>
.card {
    position: relative;
    width: 300px;
    height: 200px;
    margin: 20px;
    overflow: hidden;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.content {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    padding: 20px;
    text-align: center;
    color: #fff;
}

.wave-container {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50%;
}

.wave {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50%;
    background-color: #4c95bd;
}

.wave::before, .wave::after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 200%;
    height: 100%;
    border-radius: 50%;
    background-color: inherit;
    transform: translateX(-50%);
}

.wave::before {
    left: -100%;
    animation: wave 4s ease-in-out infinite;
}

.wave::after {
    left: 0;
    animation: wave 4s ease-in-out 2s infinite;
}

@keyframes wave {
    0% {
        transform: translateX(0) scale(1);
    }
    50% {
        transform: translateX(-25%) scale(0.8);
    }
    100% {
        transform: translateX(-50%) scale(1);
    }
}

示例二:将波浪效果应用于顶部导航栏

在这个示例中,我们将波浪效果应用于顶部导航栏,让它看起来更加生动有趣,代码如下:

<nav class="navbar">
  <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">产品</a></li>
    <li><a href="#">服务</a></li>
    <li><a href="#">关于</a></li>
  </ul>
  <div class="wave-container">
    <div class="wave"></div>
    <div class="wave"></div>
  </div>
</nav>
.navbar {
    position: relative;
    height: 60px;
    background-color: #4c95bd;
}

ul {
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin: 0;
    padding: 0;
    list-style: none;
}

li {
    margin: 0 20px;
}

a {
    color: #fff;
    text-decoration: none;
}

.wave-container {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50%;
}

.wave {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 50%;
    background-color: #fff;
}

.wave::before, .wave::after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 200%;
    height: 100%;
    border-radius: 50%;
    background-color: inherit;
    transform: translateX(-50%);
}

.wave::before {
    left: -100%;
    animation: wave 4s ease-in-out infinite;
}

.wave::after {
    left: 0;
    animation: wave 4s ease-in-out 2s infinite;
}

@keyframes wave {
    0% {
        transform: translateX(0) scale(1);
    }
    50% {
        transform: translateX(-25%) scale(0.8);
    }
    100% {
        transform: translateX(-50%) scale(1);
    }
}

在以上示例中,我们通过为波浪的颜色和背景颜色设置不同的值,实现了更丰富多彩的效果。同时,我们也调整了波浪的高度和位置,让它更适应不同的应用场景。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:纯CSS实现波浪移动效果的示例 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • element table 数据量大页面卡顿的解决

    当页面数据量大时,常常会出现卡顿的情况。对于使用element UI的表格组件的网站,为了解决这个问题,可以考虑以下几个方面的优化。 1. 分页加载数据 当数据量较大时,可以考虑使用分页来加载数据。通过设置分页属性,可以减少一次性加载大量数据所造成的卡顿。同时,也可以避免占用过多的服务器资源。 在使用element的表格组件时,可以通过设置paginatio…

    css 2023年6月10日
    00
  • 网页设计经验之杜绝设计中的视觉噪音(图文)

    网页设计中,视觉噪音是指过度复杂、过度花哨或过于杂乱的设计元素所带来的视觉干扰,使得用户难以关注主要内容并影响用户体验。因此,杜绝视觉噪音是一项关键的网页设计经验。以下是完整攻略。 1. 确定设计主题 在网页设计之前,要先确定设计主题,确保主题与网站的目的、用户类型和品牌理念相符。一个清晰简洁的主题可以帮助你将视觉元素保持在一个有限的范围内,以避免视觉噪音。…

    css 2023年6月10日
    00
  • javascript设置页面背景色及背景图片的方法

    首先我们来学习如何使用JavaScript设置页面的背景色。 设置背景色 步骤1: 定义HTML文件,我们需要先定义一个HTML文件,例如这里的index.html文件。 <!DOCTYPE html> <html> <head> <title>JavaScript设置页面背景色</title> &…

    css 2023年6月9日
    00
  • 详解CSS故障艺术

    详解CSS故障艺术攻略 简介 《详解CSS故障艺术》一书讲述了许多关于CSS的奇奇怪怪的现象,通过本书的学习,你可以更好地了解CSS,并且可以进行更加灵活且高效的编码。 攻略 熟悉CSS属性 首先,我们需要掌握一些CSS属性。CSS属性是CSS的基础,熟练掌握这些属性可以让你更好地应对各种CSS故障。 例如,display属性可以用来控制元素的显示方式。po…

    css 2023年6月10日
    00
  • js判断移动端横竖屏视口检测实现的几种方法

    下面是关于 “js判断移动端横竖屏视口检测实现的几种方法” 的完整攻略: 方法一:通过window.orientation属性判断屏幕方向 我们可以通过 window.orientation 属性获取设备的方向,然后判断设备是否处于横屏或竖屏状态,以此来实现移动端横竖屏视口检测。 举个例子,我们可以这样编写代码: function checkOrientat…

    css 2023年6月9日
    00
  • less简单入门(CSS 预处理语言)

    Less简单入门攻略 什么是Less Less是CSS预处理语言,具备一些CSS不具备的特性,如:变量定义,函数定义,嵌套规则,混合等。使用Less可以快速地编写CSS,同时可以提升CSS代码的可维护性和可读性。 安装Less 使用Less前需要先进行安装。Less的安装可以通过npm进行全局安装。 npm install -g less 安装完毕后,在命令…

    css 2023年6月9日
    00
  • JS函数实现动态添加CSS样式表文件

    下面是JS函数实现动态添加CSS样式表文件的完整攻略。 一、基本原理 在 HTML 中,我们可以使用 link 标签引入 CSS 样式表,例如: <link rel="stylesheet" type="text/css" href="style.css"> 但是如果我们想要动态地添加 …

    css 2023年6月10日
    00
  • 如何使用css绘制钻石的方法

    下面是关于如何使用CSS绘制钻石的完整攻略。 步骤一:设置基本样式 首先,需要设置基本的样式来确定钻石的形状和尺寸。可以使用width和height属性来定义钻石的大小,使用border属性来定义钻石的边框,并使其透明。 .diamond { width: 0; height: 0; border: 20px solid transparent; } 步骤二…

    css 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部