给网站添加春节灯笼效果:引入即用,附源码!

news/2025/1/12 23:45:14/文章来源:https://www.cnblogs.com/zhangapple/p/18520514

记得之前在别的网站上看到这个喜庆的春节灯笼效果,觉得非常吸引人。虽然网上有一些现成的API可以直接实现,比如这个春节灯笼API,但使用后我发现两个问题:一是手机端访问时灯笼没有自适应,二是灯笼上的“春节快乐”四个字不能自定义。

为了解决这些问题,我找到了这篇文章,并“借鉴”了其中的源代码,稍加修改后转换成JavaScript方式引入使用。下面有完整的JS代码。

原文可查看效果:张苹果博客灯笼效果

一,引入使用

距离春节还有不到90天,赶紧试试吧!将以下JS在您的页面直接引入即可。

   <!-- 将以下js放入您的页面即可。text为灯笼文字,默认:新年快乐 --><script src="https://www.vae.zhangweicheng.xyz/web/denglong.js?text=好好学习"> </script>

二,完整JS代码

 // 张苹果博客:https://zhangpingguo.com/// 创建并添加元素
function createDengContainer() {const container = document.createElement('div');container.className = 'deng-container';// 从当前脚本的 URL 获取参数const scriptSrc = document.currentScript.src;const urlParams = new URLSearchParams(scriptSrc.split('?')[1]); // 获取 '?'const customText = urlParams.get('text'); // 获取参数名为'text'的值// 将获取的文本分割为字符数组,如果没有提供文本,则使用默认的“新年快乐”const texts = customText ? customText.split('') : ['新', '年', '快', '乐'];texts.forEach((text, index) => {const box = document.createElement('div');box.className = `deng-box deng-box${index + 1}`;const deng = document.createElement('div');deng.className = 'deng';const xian = document.createElement('div');xian.className = 'xian';const dengA = document.createElement('div');dengA.className = 'deng-a';const dengB = document.createElement('div');dengB.className = 'deng-b';const dengT = document.createElement('div');dengT.className = 'deng-t';dengT.textContent = text;dengB.appendChild(dengT);dengA.appendChild(dengB);deng.appendChild(xian);deng.appendChild(dengA);const shuiA = document.createElement('div');shuiA.className = 'shui shui-a';const shuiC = document.createElement('div');shuiC.className = 'shui-c';const shuiB = document.createElement('div');shuiB.className = 'shui-b';shuiA.appendChild(shuiC);shuiA.appendChild(shuiB);deng.appendChild(shuiA);box.appendChild(deng);container.appendChild(box);});document.body.appendChild(container);
}// 添加CSS样式
function addStyles() {const style = document.createElement('style');style.type = 'text/css';style.textContent = `.deng-container {position: relative;top: 10px;opacity: 0.9;z-index: 9999;pointer-events: none;}.deng-box {position: fixed;right: 10px;}.deng-box1 { position: fixed; top: 15px; left: 20px; }.deng-box2 { position: fixed; top: 12px; left: 130px; }.deng-box3 { position: fixed; top: 10px; right: 110px; }.deng {position: relative;width: 120px;height: 90px;background: rgba(216, 0, 15, .8);border-radius: 50% 50%;animation: swing 3s infinite ease-in-out;box-shadow: -5px 5px 50px 4px #fa6c00;}.deng-a { width: 100px; height: 90px; background: rgba(216, 0, 15, .1); border-radius: 50%;  border: 2px solid #dc8f03; margin-left: 7px; display: flex; justify-content: center; }.deng-b { width: 65px; height: 83px; background: rgba(216, 0, 15, .1); border-radius: 60%; border: 2px solid #dc8f03; }.xian { position: absolute; top: -20px; left: 60px; width: 2px; height: 20px; background: #dc8f03; }.shui-a { position: relative; width: 5px; height: 20px; margin: -5px 0 0 59px; animation: swing 4s infinite ease-in-out; transform-origin: 50% -45px; background: orange; border-radius: 0 0 5px 5px; }.shui-b { position: absolute; top: 14px; left: -2px; width: 10px; height: 10px; background: #dc8f03; border-radius: 50%; }.shui-c { position: absolute; top: 18px; left: -2px; width: 10px; height: 35px; background: orange; border-radius: 0 0 0 5px; }.deng:before, .deng:after { content: " "; display: block; position: absolute; border-radius: 5px; border: solid 1px #dc8f03; background: linear-gradient(to right, #dc8f03, orange, #dc8f03, orange, #dc8f03); }.deng:before { top: -7px; left: 29px; height: 12px; width: 60px; z-index: 999; }.deng:after { bottom: -7px; left: 10px; height: 12px; width: 60px; margin-left: 20px; }.deng-t { font-family: '华文行楷', Arial, Lucida Grande, Tahoma, sans-serif; font-size: 3.2rem; color: #dc8f03; font-weight: 700; line-height: 85px; text-align: center; }@media (max-width: 768px) { .deng-t { font-size: 2.5rem; }  .deng-box { transform: scale(0.5); top: -15px; }  .deng-box1 { left: -22%; }  .deng-box2 { left: 0px; }  .deng-box3 { right: 50px; }  .deng-box4 { right: -10px; }  }@keyframes swing { 0% { transform: rotate(-10deg); }  50% { transform: rotate(10deg); }  100% { transform: rotate(-10deg); }  }`;document.head.appendChild(style);
}// 引入时调用
function init() {addStyles();createDengContainer();
}// 调用初始化函数
init();

三,页面使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>春节灯笼</title>
</head>
<body><!-- 引入js即可,text为灯笼文字,默认:新年快乐 --><script src="./denglong.js?text=等着下班"> </script></body></html>

四,效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825289.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.10.31 文件管理方案

2024.10.31 文件管理方案文件管理方案 (注意: 红色文字为应用程序软件的名称)金山文档请在使用微信扫码登录的金山文档中新建或导入需要长时间大量编辑、长期记录或者分享给他人和他人一起查看/编辑的文档或表格。WPS文档表格打开文件密码和7-ZIP解压缩密码可以使用第37号超级…

离岗检测视频分析网关AI智能分析在岗离岗检测算法的原理与应用

在岗离岗检测算法是一项利用计算机视觉和深度学习技术的应用,它通过解析监控视频流来辨认和追踪人员,进而确定他们是否处于特定的工作区域内。算法网关视频分析网关在众多领域中都有着重要的应用价值,特别是在那些需要确认员工在岗状态的场景中,例如在工厂、仓库、银行、医…

项目实战:Qt+OpenCV仿射变换工具v1.1.0(支持打开图片、输出棋盘角点、调整偏移点、导出变换后的图等等)

需求1.打开图片;  2.矫正识别角点;  3.opencv摄像头操作子线程处理;  4.支持设置棋盘格的行列角点数; 背景深入研究图像拼接细分支算法,产出的效果查看工具,验证算法单步思路。 相关博客《项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地…

项目实战:Qt+OpenCV仿射变换工具v1.1.0(支持打开图片、输出棋盘角点、调整偏移点、导出变换后的图等等)  《项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和

需求1.打开图片;  2.矫正识别角点;  3.opencv摄像头操作子线程处理;  4.支持设置棋盘格的行列角点数; 背景深入研究图像拼接细分支算法,产出的效果查看工具,验证算法单步思路。 相关博客《项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地…

软件开发中,做产品与做项目有什么区别

产品开发和项目开发的区别主要体现在:1.目标不同;2.开发过程不同;3.涉及人员不同;4.时间周期不同;5.结果测评不同。总的来说,产品开发更多侧重于满足市场需求和用户体验,长期维护并进行持续优化;而项目开发更注重完成特定的任务,达到预定的目标。1.目标不同 产品开发的…

SSHD服务

1.sshd服务 1.0 故障案例:openssh删除了本地连接物理服务器 ,通过远程控制卡连接.本地连接云: 登录web页面,连接.解决连接后安装openssh,软件包,直接apt/yum安装预防删除之前准备好备用方案.Telnet1.1 目标 1.修改sshd服务端配置文件修改ssh端口号,修改ssh禁用root远程登录. 2.…

BFS(Breath First Search 广度优先搜索)

BFS(Breath First Search 广度优先搜索)@目录一、知识及框架二、案例说明案例1:使用bfs计算二叉树的最小高度案例2:解开密码锁的最少次数,要求:请写一个算法,初始状态为0000,拨出target的最少次数,其中避免出现deadends中的包含的任意一个死亡密码,如果永远无法拨出tar…

MySQL安装-CentOS系统

MySQL安装-CentOS系统本文在此只介绍一种安装方式,是rpm并非yum。如果需要yum的安装方式,可以查阅其他相关资料 1.去官网下载对应的安装包 官方网站:https://www.mysql.com/,找到下载DOWNLOADS,下载操作系统对应的社区版本。本文使用的数据库版本是5.7.41在社区版本下载界…

洛谷题单指南-字符串-P3369 【模板】普通平衡树

原题链接:https://www.luogu.com.cn/problem/P3369 题意解读:平衡树的基本操作,模版题。 解题思路: 1、二叉搜索树-BST 二叉搜索树满足这样的性质:每一个节点的权值大于它的左儿子,小于它的右儿子。 对BST进行中序遍历,将得到一个从小到大的有序序列,因此BST是为了维护…

vscode调式LUA(EmmyLua)

安装EmmyLUA插件或者在github中下载 https://github.com/EmmyLua/VSCode-EmmyLua https://github.com/jiehuali/VSCode-EmmyLua.git 增加调试Launch.json 打开文件夹后会变成create a launcher.json,点击Run And Debug, 选择EmmyLua New Debugger(这个是作者推荐的,更稳定些…

TSP问题-分支限界法求解

此为课题组所指导本科生和低年级硕士生学习组合优化问题汇报 所用教材:北京大学屈婉玲教授《算法设计与分析》 课程资料:https://www.icourse163.org/course/PKU-1002525003 承诺不用于任何商业用途,仅用于学术交流和分享 更多内容请关注许志伟课题组官方中文主页:https://…

专有云是什么

专有云,或称私有云,是一种仅供特定组织或企业使用的云计算环境。本文将介绍以下几个方面:1、专有云的定义与特性;2、专有云与公有云的对比;3、专有云的应用场景;4、如何构建和管理专有云。在定义与特性部分,我们将详细探讨专有云如何通过提供独享的资源和高度定制的服务…