在我们非常喜庆的“冥”字幕基础上,改成特别版,“孔明灯”特效。

复制下方代码,点这里查看演示:在线html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>孔明灯效果-小归客</title>
<style>
body, html {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.gradient-background {
background: linear-gradient(to bottom, black 0%, black 100%);
position: absolute;
width: 100%;
height: 100%;
}
.falling-block {
position: absolute;
background-color: red; /* 修改背景颜色为红色 */
color: black;
font-size: 24px;
font-weight: bold;
text-align: center;
border-radius: 10px;
opacity: 0.8;
display: flex;
align-items: center;
justify-content: center;
}
</style>
</head>
<body>
<div class="gradient-background"></div>
<script>
// 创建方块的数量
const numberOfBlocks = 50;
// 创建方块并添加到页面
function createFallingBlocks() {
const characters = ['平','安','喜', '乐']; // 定义要显示的字符数组
for (let i = 0; i < numberOfBlocks; i++) {
const block = document.createElement('div');
block.classList.add('falling-block');
// 从数组中随机选择一个字符作为文本内容
block.textContent = characters[Math.floor(Math.random() * characters.length)];
block.style.left = Math.random() * 100 + 'vw';
block.style.width = Math.random() * 50 + 'px';
block.style.height = Math.random() * 50 + 'px';
block.style.top = '100vh'; // 初始位置在屏幕底部外
block.style.animation = `rise ${Math.random() * 5 + 2}s linear infinite`;
document.body.appendChild(block);
}
}
// 定义方块上升的动画
function rise() {
const keyframes = `
0% {
transform: translateY(0);
opacity: 0;
}
100% {
transform: translateY(-100vh);
opacity: 1;
}
`;
const style = document.createElement('style');
style.innerHTML = `
@keyframes rise {
${keyframes}
}
`;
document.head.appendChild(style);
}
// 调用函数
rise();
createFallingBlocks();
</script>
</body>
</html>