新闻中心

使用 CSS、HTML 和 J*aScript 创建聚光灯效果

2025-10-08
浏览次数:
返回列表

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

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

实现聚光灯效果

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

HTML:

<div class="spotlight"></div>

CSS:

.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 属性使用径向渐变创建聚光灯效果,中心区域透明,周围逐渐变为黑色。

J*aScript 实现鼠标跟随

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

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 属性,从而实现聚光灯跟随鼠标移动的效果。

解决初始位置问题

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

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

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

使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件 2 查看详情 使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
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 和 J*aScript 创建聚光灯效果的关键技术,包括使用径向渐变创建聚光灯效果、使用事件监听器实现鼠标跟随效果、解决初始位置问题以及适配移动设备。希望这些知识能帮助你创建更加炫酷的网页视觉效果。

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


# 创建一个  # 流量对seo有帮助吗  # 知名seo优化渠道  # 顺昌营销推广招聘信息  # 德州空调网站推广  # 党的建设网站建设方案  # 桦甸网站seo推广  # 网站优化免费测试  # 电商网站建设原创  # 广东专注视频营销推广招聘  # 消息push seo  # 使其  # 单选框  # css  # 加载  # 这段  # 也能  # 表单  # 英文  # 应用程序  # 鼠标  # 移动端适配  # win  # html  # java  # javascript 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 漫蛙官网正版漫画入口 漫蛙2官方网页登录地址  PyTorch模型训练效果不佳?深入剖析常见错误与调试技巧  PHP中获取MongoDB服务器运行时间(Uptime)的专业指南  QQ邮箱官网登录入口 QQ邮箱网页版邮箱快速登录  58动漫网在线官方网 58动漫网正版动漫入口网址  单射、满射与双射的关系 一文理清所有逻辑  b站怎么删除评论_b站评论管理与删除操作  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  Log4j Console Appender性能瓶颈与高并发优化策略  J*aScript生成器_j*ascript异步迭代  快手赚钱渠道_快手收益来源  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  利用Bokeh CustomJS动态控制DataTable列可见性  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  Win11怎么用U盘重装系统 Win11制作启动盘并重装系统完整教程【详解】  UC浏览器网页版登录入口官网 电脑版网址入口  使用Python高效删除Word宏并转换DOCM为DOCX格式  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  漫蛙2漫画入口 漫蛙正版网页漫画直达网址  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  支付宝如何设置安全保护_支付宝安全设置的全面教程  FullCalendar 自定义按钮样式定制指南  Win11怎么合并任务栏图标 Win11开启任务栏合并减少图标占空间【方法】  HTML长属性值处理:表单action路径优化与代码规范应对  Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】  京东单号查询入口_京东快递订单追踪入口  如何有效阻止外部脚本意外修改内联样式的高度属性  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  韩剧圈正版入口页面_韩剧圈官网登录链接  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  期待已久:小米17 Ultra、小米首款NAS本月登场  多闪网页版在线观看免费入口_多闪官网访问入口  文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】  深入理解J*a编译器的兼容性选项:从-source到--release  汽水音乐在线解析 汽水音乐在线解析入口  qq邮箱发邮件给国外发不出去_QQ邮箱国际邮件发送失败原因与解决  J*aScript中管理异步API调用:确保操作顺序与数据一致性  海棠电脑版入口_通过电脑访问海棠官网阅读  在FastAPI中利用lifespan与依赖注入高效管理Redis连接池  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程  vivo手机参数配置怎么增强信号_vivo手机参数配置信号增强方法  Win10磁盘清理工具在哪 Win10打开并使用磁盘清理【教程】  LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比  Python实现多节点属性重叠度分析教程  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  C++ explicit关键字防止隐式转换_C++构造函数安全规范  C++指针和引用有什么区别_C++内存管理核心概念深度解析  c++项目目录结构应该如何组织_c++工程化项目结构规范 

搜索