首页 > 其他分享 >写一个网页点击的特效

写一个网页点击的特效

时间:2024-12-08 09:55:00浏览次数:8  
标签:特效 container clickEffect effect 点击 网页 click

<!DOCTYPE html>
<html>
<head>
<title>点击特效</title>
<style>
body {
  background-color: #f0f0f0;
}

.container {
  width: 500px;
  height: 300px;
  margin: 50px auto;
  background-color: #fff;
  position: relative; /* 为了让特效在容器内绝对定位 */
  overflow: hidden; /* 防止特效超出容器 */
}

.click-effect {
  position: absolute;
  border-radius: 50%;
  transform: scale(0); /* 初始状态缩放为0 */
  opacity: 0; /* 初始状态透明 */
  pointer-events: none; /* 防止特效干扰点击 */
  animation: clickAnimation 0.5s forwards; /* 应用动画 */
}

@keyframes clickAnimation {
  0% {
    transform: scale(0);
    opacity: 0.8;
  }
  50% {
    opacity: 0.5;
  }
  100% {
    transform: scale(2);
    opacity: 0;
  }
}

</style>
</head>
<body>

<div class="container" onclick="createClickEffect(event)">
  点击这里
</div>

<script>
function createClickEffect(event) {
  const container = document.querySelector('.container');
  const clickEffect = document.createElement('div');
  clickEffect.classList.add('click-effect');

  // 获取点击位置相对于容器的坐标
  const x = event.clientX - container.offsetLeft;
  const y = event.clientY - container.offsetTop;

  clickEffect.style.left = x + 'px';
  clickEffect.style.top = y + 'px';


  // 随机颜色
  const randomColor = '#' + Math.floor(Math.random()*16777215).toString(16);
  clickEffect.style.backgroundColor = randomColor;



  container.appendChild(clickEffect);

  // 动画结束后移除元素,避免性能问题
  clickEffect.addEventListener('animationend', () => {
    clickEffect.remove();
  });
}
</script>

</body>
</html>

代码解释:

  1. HTML 结构:

    • container div 作为点击区域的容器。
    • 点击特效 click-effect div 将动态添加到容器中。
  2. CSS 样式:

    • container: 设置容器样式。 position: relative 允许子元素在其内部进行绝对定位。 overflow: hidden 防止特效超出容器边界。
    • click-effect: 设置特效样式,初始状态缩放为 0 且透明。pointer-events: none 防止特效干扰点击事件。
    • @keyframes clickAnimation: 定义动画效果,从缩放为 0 到缩放为 2,同时透明度逐渐降低。
  3. JavaScript 逻辑:

    • createClickEffect(event) 函数:
      • 获取点击事件 event
      • 创建 click-effect 元素。
      • 使用 event.clientXevent.clientY 获取点击位置,并使用 container.offsetLeftcontainer.offsetTop 计算点击位置相对于容器的坐标。
      • 设置 click-effect 的位置。
      • 随机颜色: 生成随机十六进制颜色值,并应用到特效。
      • click-effect 添加到容器中。
      • 监听 animationend 事件,在动画结束后移除 click-effect 元素,避免性能问题。

关键改进:

  • 随机颜色: 每次点击都会产生不同的颜色,使特效更生动。
  • 动画结束后移除元素: 避免大量特效元素堆积,提高性能。
  • 点击位置更精确: 使用 offsetLeftoffsetTop 确保特效出现在点击的精确位置,即使容器有滚动或边距。
  • 注释更清晰: 添加了更详细的注释,方便理解代码。

这个改进版本提供了更丰富的视觉效果和更好的性能。您可以根据自己的需求调整动画持续时间、缩放比例、颜色等参数。

标签:特效,container,clickEffect,effect,点击,网页,click
From: https://www.cnblogs.com/ai888/p/18593088

相关文章

  • 65. Web前端网页案例——【海贼王动漫主题网页(10页)】 大学生期末大作业 html+css
    目录 一、网页概述二、网页文件三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐♬♬♬欢迎光临我的CSDN!这里是Web前端网页案例大集汇,有各行各业的前端网页案例,每天会持续更新!如果你对Web前端网......
  • 鸿蒙Next开发实战教程:实现抖音长按快速评论特效
    开篇点题,今天玩点花的。不知道大家有没有发现,抖音上的评论键长按会弹出一排表情框用于快速评论,不过现在鸿蒙原生版的抖音还没有这个功能,今天幽蓝君就小试牛刀,在鸿蒙上做一下这个功能,也是应一位友友的私信要求。不过幽蓝君学艺不精,水平有限,只能模仿个三分像,仅供大家参考。话不多......
  • QTTabBar | 实现“此电脑”在命令栏直接点击 以及点击 新标签页加号(+)的时候默认导航到
     1、如何实现点击上面命令栏目“此电脑”,并且在当前视图打开。  按照下面设置关键命令是:shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}代表导航到【此电脑】  2、点击新标签页加号(+)的时候默认导航到“此电脑”视图,并且是当前视图(当前窗口不是新窗口)  ......
  • 133. 大学生HTML5期末大作业 ―【迪士尼影视网页】 Web前端网页制作 html5+css3+js
    目录一、更多推荐二、网页简介三、网页文件四、网页效果五、代码展示1.html2.CSS3.JS六、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强七、更多推荐一、更多推荐欢迎来到我的CSDN主页!Web前端网页制作、大学生期末大作业、课程设计、毕业设计、......
  • 探索CSS中的背景图片属性,让你的网页更加美观
    导语:在网页设计中,背景图片的运用能够丰富页面视觉效果,提升用户体验。本文将详细介绍CSS中背景图片的相关属性,帮助大家更好地掌握这一技能。一、背景图片基本属性1、background-image该属性用于设置元素的背景图片。语法如下:background-image:url('图片路径');2、backg......
  • UNIAPP小程序内Canvas下雪特效,解决蓝色雪花问题
      在小程序的开发中,如何为用户带来与众不同的体验一直是开发者关注的焦点。尤其是在冬季,给小程序加入一个浪漫的下雪特效,不仅能增强用户的互动体验,还能提升整体的应用氛围。今天,我们将介绍如何利用UNIAPP和Canvas技术,在小程序中实现一个炫酷的下雪特效。效果图......
  • 大学生网页设计制作作业实例代码 (全网最全,建议收藏) HTML+CSS+JS (1)
    文章目录......
  • vxe-table 实现指定列默认是隐藏,点击重置自动还原状态
    vxe-table实现控制指定列默认隐藏,重置自定义列后还能自动还原,有个需求需要将某一列默认是隐藏的,但是可以通过自定义列设置显示,当点击自定义的重置按钮时,还能回复到默认的状态,实现也是非常简单的。通过visible参数设置默认为不显示就可以了。官网:https://vxetable.cn/通过vi......
  • 网页打印与标准纸张换算时,cm和px是如何换算的?
    网页打印的cm和px换算并非直接的等价关系,它涉及到DPI(DotsPerInch,每英寸点数)的概念。简单来说,DPI决定了在物理尺寸(例如cm)中,可以容纳多少个像素点。核心公式:物理尺寸(cm)=像素(px)/DPI*2.54解释:DPI:打印机或屏幕的分辨率,表示每英寸有多少个点。常见的......
  • canvas根据鼠标点击平滑移动案例
    1.圆形绘制在画布中心绘制一个圆形,并初始化圆形的坐标和半径。2.鼠标点击事件为Canvas添加鼠标点击事件,记录点击的目标坐标。3.移动逻辑使用Math.atan2计算从圆心到点击位置的角度。通过三角函数(Math.cos和Math.sin)逐帧更新圆的坐标,使其沿直线平滑移动。4.动画......