纯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日

相关文章

  • CSS元素定位之通过元素的标签或者元素的id、class属性定位详解

    下面是关于“CSS元素定位之通过元素的标签或者元素的id、class属性定位详解”的完整攻略。 概述 在使用 CSS 样式表对网页进行布局和样式设计时,我们需要通过元素的标签、元素的 id 属性或 class 属性来定位元素,从而对它们进行样式设计。而元素的定位方式主要包括以下三种: 标签选择器(tag selector) ID 选择器(id selecto…

    css 2023年6月9日
    00
  • CSS 网页表单实现鼠标悬停交互效果

    下面我将为您详细讲解“CSS 网页表单实现鼠标悬停交互效果”的完整攻略。 什么是鼠标悬停交互效果 在网页设计中,鼠标悬停交互效果是一种用户界面设计技术,它使用户在鼠标悬停在页面元素上时产生视觉反馈,从而增强了用户体验和导航性。鼠标悬停交互效果可以应用在各种网页元素上,其中最常见的是应用在网页表单中。 如何实现鼠标悬停交互效果 在实现鼠标悬停交互效果的过程中,…

    css 2023年6月10日
    00
  • JavaScript中无法通过div.style.left获取值的解决方法

    当我们想要获取页面元素的某个样式属性值时,通常可以使用元素对象的style属性来获取。例如,我们可以使用div.style.left获取div元素的左侧偏移量。但是,在JavaScript中,我们有时会遇到无法通过这种方式获取元素属性值的情况。这种情况通常发生在我们想要获取CSS样式表中定义的样式属性值时,例如异步加载的CSS文件渲染完成后,我们想要获取其中…

    css 2023年6月10日
    00
  • CSS解决浏览器的等宽空格问题

    CSS解决浏览器的等宽空格问题主要是为了解决单词间距不统一的问题,因为不同的字母和符号所占的宽度不同,在有些情况下,使用空格或者tab都无法让文字之间的距离完全一致。这里提供一些解决方案。 方案一:使用CSS属性 word-spacing CSS属性word-spacing可以控制文字之间的间隔。我们可以将值设为-1px,这样文字之间的间距就会缩小一个像素,…

    css 2023年6月9日
    00
  • 滤镜使用之图片透明的css写法

    关于滤镜使用之图片透明的css写法,可以按照以下步骤进行操作: 1. 首先,选择一张需要处理的图片 例如,我们选定一张名为“test.jpg”的图片作为示例。 2. 将图片转换为透明图片 为了实现将图片变为透明图片,我们需要使用图片编辑软件,例如Photoshop的抠图工具来将需要透明的部分抠掉,导出成png格式的图片。导出后的图片即具有透明背景的效果,这样…

    css 2023年6月11日
    00
  • 详解打造 Vue.js 可复用组件

    详解打造 Vue.js 可复用组件 一、组件化思想 在 Vue.js 中,组件就是一个可完全自包含的模块化单元。可以将组件拆分成更小的组件,以共享和复用。使用组件开发可以提升开发效率和代码可维护性,同时提高代码的重用性。 二、组件的基本结构 一个典型的 Vue 组件通常分为三大块: template:组件的 HTML 模版 script:组件的逻辑代码,可以…

    css 2023年6月11日
    00
  • Vue中对比scoped css和css module的区别

    请看下面的攻略: Vue中对比scoped css和css module的区别 scoped css Vue的scoped css是一种将css限制在组件内部使用的方法。在Vue组件中,可以给style标签添加scoped属性,它会自动将该样式限制在组件内部使用。 <template> <div class="container&…

    css 2023年6月9日
    00
  • web开发中怎么样使css书写规范?

    在 Web 开发中,CSS 是一种用于控制网页样式的语言。为了使 CSS 代码更加规范、易读、易维护,需要遵循一些 CSS 书写规范。以下是关于“Web 开发中如何使 CSS 书写规范”的完整攻略。 步骤一:选择 CSS 风格指南 首先,需要选择一份 CSS 风格指南,以确保 CSS 代码的一致性和可读性。以下是一些常用的 CSS 风格指南: Google …

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