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

本文将指导你如何使用 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,J*aScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和J*aScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用J*a。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
2
查看详情
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++工程化项目结构规范


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