js表白特效

admin 42 0

当然可以,以下是一个简单的JavaScript表白特效的示例,这个特效会在网页上显示一条从底部滑动的消息,同时还会播放一段音乐。

<!DOCTYPE html>
<html>
<head>
    <title>JS表白特效</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #333;
        }
        #message {
            position: absolute;
            bottom: 0;
            width: 100%;
            text-align: center;
            transition: all 2s ease-out;
            color: #fff;
            font-size: 2em;
        }
    </style>
</head>
<body>
    <div id="message"></div>
    <audio id="loveSong" src="song.mp3" preload="auto"></audio>
    <script>
        // 设置滑动的文字和音乐
        var message = "我爱你";
        var loveSong = document.getElementById("loveSong");
        var messageElement = document.getElementById("message");
        var isRunning = false;
        var slideDuration = 2000; // 滑动时间,单位毫秒
        var slideDistance = 200; // 滑动距离,单位像素
        var currentSlide = 0; // 当前位置,单位像素
        var totalSlides = message.length * slideDistance; // 总滑动距离,单位像素
        var slideInterval = slideDuration / (totalSlides / slideDistance); // 每个字符的间隔时间,单位毫秒
        var slideShow = setInterval(nextSlide, slideInterval); // 定时器,用于控制滑动速度
        loveSong.play(); // 播放音乐
        messageElement.innerText = message; // 设置初始文字
        messageElement.style.bottom = currentSlide + "px"; // 设置初始位置
        function nextSlide() {
            if (isRunning) { // 如果正在滑动,则不执行此函数
                return;
            }
            isRunning = true; // 设置标志位,表示正在滑动
            currentSlide += slideDistance; // 更新当前位置
            if (currentSlide >= totalSlides) { // 如果到达最后,则回到开始位置
                currentSlide = 0;
                loveSong.currentTime = 0; // 重置音乐播放位置到开始位置
            } else { // 否则继续滑动
                messageElement.style.bottom = currentSlide + "px"; // 更新文字位置
                loveSong.currentTime += slideDuration / 1000 * slideDistance / totalSlides; // 更新音乐播放位置
            }
            isRunning = false; // 设置标志位,表示滑动结束
        }
    </script>
</body>
</html>

在上面的代码中,我们首先设置了一些基本的样式和元素,我们定义了一个`nextSlide`函数,该函数会根据当前位置和总长度来计算下一个位置,并更新文字和音乐的位置,我们使用一个定时器来周期性地调用`nextSlide`函数,从而实现滑动效果。