使用 CSS、HTML 和 JavaScript 创建聚光灯效果

使用 css、html 和 javascript 创建聚光灯效果

本文将指导你如何使用 CSS、HTML 和 JavaScript 创建一个跟随鼠标移动的聚光灯效果。我们将解决页面加载时聚光灯初始位置不在中心的问题,并探讨如何在不同屏幕尺寸下优化聚光灯效果,使其在移动设备上也能正常显示。通过本文的学习,你将掌握使用径向渐变和事件监听器实现动态视觉效果的关键技术。

实现聚光灯效果

首先,我们需要创建一个 HTML 元素作为聚光灯的容器,并应用相应的 CSS 样式。

HTML:

CSS:

立即学习“Java免费学习笔记(深入)”;

.spotlight {  position: fixed;  width: 100%;  height: 100%;  pointer-events: none;  background-image: radial-gradient(circle, transparent 160px, rgba(0, 0, 0, 0) 200px);}

这段 CSS 代码将 .spotlight 元素定位为固定位置,使其覆盖整个屏幕。pointer-events: none; 属性确保聚光灯效果不会阻止鼠标事件传递到下方的元素。background-image 属性使用径向渐变创建聚光灯效果,中心区域透明,周围逐渐变为黑色。

JavaScript 实现鼠标跟随

接下来,使用 JavaScript 监听鼠标移动事件,并动态更新聚光灯的背景图像。

window.addEventListener("DOMContentLoaded", () => {  const spotlight = document.querySelector('.spotlight');  let spotlightSize = 'transparent 160px, rgba(0, 0, 0, 0.85) 200px)';  window.addEventListener('mousemove', e => updateSpotlight(e));  function updateSpotlight(e) {    spotlight.style.backgroundImage = `radial-gradient(circle at ${e.pageX / window.innerWidth * 100}% ${e.pageY / window.innerHeight * 100}%, ${spotlightSize}`;  }});

这段代码在页面加载完成后,获取 .spotlight 元素,并添加一个 mousemove 事件监听器。当鼠标移动时,updateSpotlight 函数会被调用,该函数根据鼠标的坐标动态更新 background-image 属性,从而实现聚光灯跟随鼠标移动的效果。

使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件

如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 – 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更

使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 2 查看详情 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件

解决初始位置问题

默认情况下,页面加载时聚光灯可能不在屏幕中心。为了解决这个问题,可以在 DOMContentLoaded 事件中,手动设置聚光灯的初始位置。

window.addEventListener("DOMContentLoaded", () => {  const spotlight = document.querySelector('.spotlight');  let spotlightSize = 'transparent 160px, rgba(0, 0, 0, 0.85) 200px)';  spotlight.style.backgroundImage = `radial-gradient(circle at ${window.innerWidth/2}px ${window.innerHeight/2}px, ${spotlightSize}`;  window.addEventListener('mousemove', e => updateSpotlight(e));  function updateSpotlight(e) {    spotlight.style.backgroundImage = `radial-gradient(circle at ${e.pageX / window.innerWidth * 100}% ${e.pageY / window.innerHeight * 100}%, ${spotlightSize}`;  }});

在 DOMContentLoaded 事件监听器中,我们添加了一行代码:spotlight.style.backgroundImage = radial-gradient(circle at ${window.innerWidth/2}px ${window.innerHeight/2}px, ${spotlightSize}`;`。这行代码在页面加载时,将聚光灯的中心位置设置为屏幕的中心。

适配移动设备

在移动设备上,鼠标移动事件可能不适用。为了在移动设备上也能正常显示聚光灯效果,可以使用 matchMedia 方法检测屏幕宽度,并根据屏幕宽度决定是否启用鼠标跟随效果。

window.addEventListener("DOMContentLoaded", ()=>{  const spotlight = document.querySelector('.spotlight');  let spotlightSize = 'transparent 160px, rgba(0, 0, 0, 0.85) 200px)';  //attach mousemove event listener if media query matches.   if (matchMedia('only screen and (min-width: 800px)').matches) {    window.addEventListener('mousemove', updateSpotlight);    function updateSpotlight(e) {      spotlight.style.backgroundImage = `radial-gradient(circle at ${e.pageX / window.innerWidth * 100}% ${e.pageY / window.innerHeight * 100}%, ${spotlightSize}`;    }  } else {    spotlight.style.backgroundImage = `radial-gradient(circle at ${window.innerWidth/2}px ${window.innerHeight/2}px, ${spotlightSize}`;  }});

这段代码使用 matchMedia(‘only screen and (min-width: 800px)’).matches 检测屏幕宽度是否大于 800px。如果屏幕宽度大于 800px,则启用鼠标跟随效果;否则,将聚光灯固定在屏幕中心。

此外,为了在屏幕尺寸变化时也能正确显示聚光灯效果,可以监听 resize 事件,并根据新的屏幕尺寸重新定位聚光灯。

CSS (配合移动端适配):

.spotlight {  position: absolute;  width: 100%;  height: 100%;  pointer-events: none;  background-image: radial-gradient(circle at 50% 50%, transparent 160px, rgba(0, 0, 0, 0.85) 200px);}@media only screen and (min-width: 800px) {  .spotlight {    position: fixed;    background-image: radial-gradient(circle at 50% 50%, transparent 160px, rgba(0, 0, 0, 0) 200px);  }}

总结

通过本文的学习,你已经掌握了使用 CSS、HTML 和 JavaScript 创建聚光灯效果的关键技术,包括使用径向渐变创建聚光灯效果、使用事件监听器实现鼠标跟随效果、解决初始位置问题以及适配移动设备。希望这些知识能帮助你创建更加炫酷的网页视觉效果。

以上就是使用 CSS、HTML 和 JavaScript 创建聚光灯效果的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/924991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月29日 09:42:07
下一篇 2025年11月29日 09:42:42

相关推荐

  • MyBatis 中 XML 映射文件无法调用的问题排查与解决

    本文旨在帮助开发者解决在使用 Spring Boot 和 MyBatis 框架时,XML 映射文件中定义的 SQL 语句无法被正确调用的问题。文章将通过分析常见原因、提供解决方案以及代码示例,帮助读者快速定位并解决类似问题,确保 MyBatis 能够正确加载和执行 XML 映射文件中的 SQL 语句…

    2025年12月5日
    500
  • win10关闭自动更新 四种禁止更新方法分享

    windows 10系统内置了自动更新机制,虽然有助于保持系统安全与稳定,但对不少用户来说,频繁的更新提示、计划外的重启甚至强制重启严重影响了使用体验。尤其是在进行重要工作或沉浸式游戏时,突如其来的系统更新极易打断操作流程。那么,如何有效关闭win10的自动更新呢?本文将介绍四种实用、安全且可逆的方…

    2025年12月5日 电脑教程
    600
  • Java中死锁如何避免 分析死锁产生的四个必要条件

    预防死锁最有效的方法是破坏死锁产生的四个必要条件中的一个或多个。死锁的四个必要条件分别是互斥、占有且等待、不可剥夺和循环等待;其中,互斥通常无法破坏,但可以减少使用;占有且等待可通过一次性申请所有资源来打破;不可剥夺可通过允许资源被剥夺打破;循环等待可通过按序申请资源解决。此外,reentrantl…

    2025年12月5日 java
    300
  • 误删回收站文件怎么恢复 试试这几种恢复方法

    在清理电脑回收站以腾出磁盘空间时,有时会不小心将重要文件一并清空。那么,一旦回收站被清空,这些文件是否就彻底无法找回了呢?其实不然,只要这些文件尚未被新数据覆盖,仍有机会完整恢复。本文将介绍几种实用且高效的恢复方式,助你尝试找回误删的文件。 一、借助“文件历史记录”功能进行恢复 Windows系统内…

    2025年12月5日 电脑教程
    000
  • js如何实现剪贴板历史 js剪贴板历史管理的4种技术方案

    要实现js剪贴板历史,核心在于拦截复制事件、存储复制内容并展示历史记录。1. 使用document.addeventlistener(‘copy’)监听复制事件,并通过e.clipboarddata.getdata获取内容;2. 用localstorage或indexeddb…

    2025年12月5日 web前端
    100
  • 如何利用JavaScript实现前端日志记录与用户行为分析?

    前端日志与用户行为分析可通过封装Logger模块实现,支持分级记录并上报;结合事件监听自动采集点击、路由变化等行为数据。 前端日志记录与用户行为分析能帮助开发者了解用户操作路径、发现潜在问题并优化产品体验。通过JavaScript,我们可以轻量高效地实现这些功能,无需依赖复杂工具也能获取关键数据。 …

    2025年12月5日
    000
  • win11怎么创建和挂载ISO镜像文件_Win11创建与挂载ISO虚拟光驱的方法

    Windows 11支持直接挂载ISO镜像作为虚拟光驱。1、右键ISO文件选择“挂载”即可在“此电脑”中显示为DVD驱动器;2、通过管理员权限的PowerShell使用Mount-DiskImage命令可实现命令行挂载;3、创建ISO文件可借助PowerShell或第三方工具如Oscdimg,将文件…

    2025年12月5日
    000
  • win10运行快捷键没反应如何办?win10运行快捷键没反应解决方法

    一、准备工作 要处理Win10系统中运行快捷键失效的问题,首先需要准备好相关条件。其中,一台可用的电脑是基础要求。 除此之外,还需要保持耐心,因为排查和解决问题往往需要一定时间。 同时,掌握一些网络搜索技巧也很重要,很多时候答案就隐藏在网络资源中等待我们去挖掘。 二、问题处理步骤 关于Win10运行…

    2025年12月5日
    000
  • 如何解决前端JS文件过大导致加载缓慢的问题,使用linkorb/jsmin-php助你轻松实现JS代码压缩优化

    可以通过一下地址学习composer:学习地址 在快节奏的互联网世界里,网站的加载速度是用户体验的生命线。用户往往没有耐心等待一个缓慢的页面,而搜索引擎也更青睐加载迅速的网站。作为一名开发者,我深知这一点,但最近在优化我的php项目时,却遇到了一个让人头疼的问题:前端的javascript文件随着功…

    开发工具 2025年12月5日
    000
  • Java中Executors类的用途 掌握线程池工厂的创建方法

    如何使用executors创建线程池?1.使用newfixedthreadpool(int nthreads)创建固定大小的线程池;2.使用newcachedthreadpool()创建可缓存线程池;3.使用newsinglethreadexecutor()创建单线程线程池;4.使用newsched…

    2025年12月5日 java
    000
  • win8如何清理winsxs文件夹_win8安全清理Winsxs文件夹方法

    WinSxS文件夹占用过大可通过四种安全方法清理:一、使用磁盘清理工具,勾选“Windows更新清理”删除过期更新;二、通过DISM命令执行/analyzecomponentstore分析和/startcomponentcleanup清理;三、启用存储感知并配置自动删除临时文件;四、使用Dism++…

    2025年12月5日
    000
  • 快兔网盘网页版怎么切换显示模式_快兔网盘网页版显示模式切换方法

    1、登录快兔网盘网页版进入主界面,在右上角点击显示模式图标可切换列表或缩略图模式;2、通过用户头像进入设置菜单,选择“文件显示”中的默认模式并保存,实现每次登录自动应用偏好视图。 如果您在使用快兔网盘网页版时,发现文件列表的显示效果不符合您的浏览习惯,可能是当前的显示模式不够直观。以下是切换显示模式…

    2025年12月5日
    000
  • Java中jstat的用法 详解性能统计

    要使用jstat监控jvm,首先通过jps获取进程id,然后执行jstat命令并指定监控类型、采样间隔和次数。1)常用选项包括-gcutil查看垃圾回收利用率统计;2)-gc查看更详细的垃圾回收信息;3)-class监控类加载与卸载情况。例如:jstat -gcutil 1234 1000可每秒输出…

    2025年12月5日 java
    100
  • 电脑无法显示WiFi网络怎么办 教你6招快速解决

    在使用电脑时,可能会遇到这样的情况:路由器工作正常,手机等设备可以顺利连接wifi,但电脑却无法搜索到任何无线网络。这个问题可能由多种原因造成,比如系统设置错误、驱动异常或硬件问题。本文将从多个角度分析可能的原因,并提供实用的解决方法。 一、确认WiFi功能是否已启用 首先应检查电脑的无线功能是否被…

    2025年12月5日 电脑教程
    000
  • win8打开程序提示0xc000007b怎么办_win8程序0xc000007b错误解决方法

    首先重新安装Visual C++ Redistributable运行库,包括x86和x64版本;其次修复DirectX组件,更新至最新运行时;然后运行SFC扫描修复系统文件;最后手动注册vcruntime140.dll等关键DLL文件,每步完成后重启电脑测试程序。 如果您在Windows 8系统中尝…

    2025年12月5日
    000
  • windows更新后硬盘加载不出来了怎么办 一文教你快速找回

    一、通过磁盘管理重新分配驱动器盘符 系统更新后,硬盘可能因丢失盘符而在“此电脑”中无法显示。虽然分区数据通常仍在,但系统无法直接访问。此时可通过Windows内置的磁盘管理工具为其重新指定盘符。 右键点击“开始”按钮(或按下 Win + X 组合键),选择“磁盘管理”。 在打开的磁盘管理界面中,查找…

    2025年12月5日 电脑教程
    100
  • Java中MANIFEST.MF的作用 详解清单文件

    manifest.mf是java中jar文件的元数据配置文件,位于meta-inf目录下,用于定义版本、主类、依赖路径等关键信息。1. 它允许指定入口类,使jar可直接运行;2. 通过class-path管理依赖,减少类加载冲突;3. 可配置安全权限,如设置沙箱运行;4. 常见属性包括manifes…

    2025年12月5日 java
    000
  • win10怎么关闭用户账户控制UAC_关闭用户账户控制UAC的操作方法

    关闭Windows 10用户帐户控制(UAC)的方法有三种:一是通过控制面板将UAC滑块调至“从不通知”;二是使用msconfig工具快速启动UAC设置并调整;三是通过注册表编辑器将EnableLUA值改为0,彻底禁用UAC并重启生效。 如果您在运行某些程序或进行系统更改时频繁弹出权限确认提示,这可…

    2025年12月5日
    000
  • PHP中读取并输出文件内容:结合白名单校验的实践指南

    本教程详细介绍了如何在php中安全高效地读取文件内容并将其输出到客户端。通过一个白名单校验的实际案例,我们将演示如何利用`file_get_contents()`函数读取文件,并结合`__dir__`魔术常量处理文件路径,确保代码的健壮性和可移植性,同时提供最佳实践建议。 在PHP Web应用开发中…

    2025年12月5日
    000
  • 电脑开机黑屏只有鼠标能动怎么办 5种详细解决方法

    在日常使用电脑时,相信很多小伙伴都碰到过这样的情况:电脑顺利启动了,但屏幕却一片漆黑,仅剩一个孤零零的鼠标指针在晃动,桌面图标和任务栏全都不见踪影。别慌!接下来我会用通俗易懂的方法,带你一步步排查并解决这个问题,让电脑迅速恢复正常运行。 一、重启Windows资源管理器 当系统出现黑屏但鼠标仍可移动…

    2025年12月5日 电脑教程
    000

发表回复

登录后才能评论
关注微信