当前位置:首页 > CSS

css制作波纹

2026-02-12 22:53:49CSS

使用 CSS 动画制作波纹效果

通过 CSS 动画和 transform 属性可以实现简单的波纹扩散效果。以下是一个基础实现方法:

<div class="ripple-container">
  <div class="ripple"></div>
</div>
.ripple-container {
  position: relative;
  width: 200px;
  height: 200px;
  overflow: hidden;
}

.ripple {
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(0, 150, 255, 0.5);
  border-radius: 50%;
  transform: scale(0);
  animation: ripple-animation 1.5s ease-out;
}

@keyframes ripple-animation {
  to {
    transform: scale(2);
    opacity: 0;
  }
}

通过伪元素优化实现

利用伪元素可以减少 DOM 元素数量:

.ripple-button {
  position: relative;
  overflow: hidden;
}

.ripple-button::after {
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: radial-gradient(circle, rgba(255,255,255,0.8) 10%, transparent 10.1%);
  background-size: 10000% 10000%;
  opacity: 0;
  transition: transform 0.5s, opacity 1s;
}

.ripple-button:active::after {
  background-size: 0 0;
  opacity: 0.4;
  transition: 0s;
  transform: scale(10);
}

JavaScript 交互增强

结合 JavaScript 实现点击触发的动态波纹:

document.querySelector('.ripple-button').addEventListener('click', function(e) {
  const ripple = document.createElement('span');
  ripple.classList.add('ripple-effect');

  const rect = this.getBoundingClientRect();
  const size = Math.max(rect.width, rect.height);

  ripple.style.width = ripple.style.height = `${size}px`;
  ripple.style.left = `${e.clientX - rect.left - size/2}px`;
  ripple.style.top = `${e.clientY - rect.top - size/2}px`;

  this.appendChild(ripple);

  setTimeout(() => ripple.remove(), 600);
});

配套 CSS:

.ripple-button {
  position: relative;
  overflow: hidden;
}

.ripple-effect {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.7);
  transform: scale(0);
  animation: ripple 0.6s linear;
}

@keyframes ripple {
  to {
    transform: scale(4);
    opacity: 0;
  }
}

使用 CSS 变量控制参数

通过 CSS 变量实现可配置的波纹效果:

css制作波纹

:root {
  --ripple-color: rgba(255, 255, 255, 0.6);
  --ripple-duration: 0.6s;
  --ripple-scale: 4;
}

.ripple {
  /* ...其他样式... */
  background: var(--ripple-color);
  animation: ripple var(--ripple-duration) linear;
}

@keyframes ripple {
  to {
    transform: scale(var(--ripple-scale));
    opacity: 0;
  }
}

这些方法提供了从简单到复杂的多种实现方案,可根据具体需求选择适合的方式。现代浏览器都支持这些 CSS 特性,但如需兼容旧版浏览器可能需要添加前缀或降级方案。

标签: 波纹css
分享给朋友:

相关文章

空间css制作

空间css制作

空间 CSS 制作方法 使用 margin 和 padding 控制间距 通过调整 margin(外边距)和 padding(内边距)属性,可以控制元素之间的空间。例如: .element {…

css制作圆

css制作圆

使用CSS制作圆形元素 通过CSS的border-radius属性可以轻松将元素变为圆形。以下是具体实现方法: 基本圆形实现 .circle { width: 100px; height:…

css制作钢琴块

css制作钢琴块

使用CSS制作钢琴块 钢琴块可以通过HTML和CSS的配合实现,主要利用flexbox布局和伪元素来模拟钢琴的黑白键排列。 HTML结构 <div class="piano"> &l…

css制作滑动切换

css制作滑动切换

使用CSS实现滑动切换效果 方法一:使用CSS Transition和Transform 通过transition和transform属性实现平滑的滑动动画效果。 .slider-container…

css继承制作教程

css继承制作教程

CSS继承的基本概念 CSS继承是指某些CSS属性可以从父元素传递到子元素的特性。并非所有属性都支持继承,但常见的文本相关属性(如font-family、color)默认具有继承性。通过合理利用继承,…

css如何制作响应网页

css如何制作响应网页

响应式网页设计基础 使用CSS制作响应式网页的核心是通过媒体查询(Media Queries)和弹性布局(Flexbox/Grid)实现。媒体查询允许根据设备特性(如屏幕宽度)应用不同的样式规则。…