动了情的人(Live合唱版) 帖赠:黑黑
<style>
@import 'https://638183.freep.cn/638183/web/ku/hcplayer3in1.css?v=1';
#tz {
margin: 140px 0 30px calc(50% - 750px);
width: 1346px;
height:771px;
background: #000;
border-radius:32px;
position: relative;
overflow: hidden;
--state: running;
--main-color: #efede2;
}
#lrcDiv {
writing-mode: vertical-rl;
right: 70%;
top: 12%;
text-align: left;
color: #ffffff;
--hlcolor: #67acf9;
z-index: 999;
}
#mplayer, #fsbtn, #playimg {
display: none !important;
}
.vid {
opacity: .05;
z-index: 1;
}
#staticBg {
width:1346px;
height:771px;
position:absolute;
left: 0px;
top: 0px;
z-index: 1;
display: none;
}
#dynamicBg {
width:1346px;
height:771px;
position:absolute;
left: 0px;
top: 0px;
z-index: 2;
display: block;
}
.ma {
position: absolute;
width: 90px;
height: 90px;
left: 43%;
bottom: 55px;
z-index: 999;
cursor: pointer;
transition: transform 0.3s ease;
animation: rotate 8s linear infinite var(--state);
}
.ma:hover {
transform: scale(1.1);
}
@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.prog {
position: absolute;
width: 240px;
height: 6px;
background: linear-gradient(to right, var(--main-color) var(--prg, 0%), transparent 0%);
border: 2px solid var(--main-color);
border-radius: 5px;
bottom: 30px;
left: 47%;
transform: translateX(-50%);
z-index: 999;
cursor: pointer;
transition: all 0.3s ease;
}
.prog:hover {
height: 12px;
background: linear-gradient(to right, var(--main-color) var(--prg, 0%), #333 0%);
}
.time-display {
position: absolute;
width: 360px;
left: 47%;
transform: translateX(-50%);
bottom: 25px;
z-index: 999;
display: flex;
justify-content: space-between;
align-items: center;
color: var(--main-color);
font: normal 14px sans-serif;
pointer-events: none;
background: transparent;
}
.current-time, .total-time {
background: transparent;
padding: 2px 8px;
border-radius: 4px;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.8);
color: var(--main-color);
font-weight: bold;
}
.lrc-paused {
animation-play-state: paused !important;
--state: paused !important;
opacity: 0.9;
filter: grayscale(0.3);
}
</style>
<div id="tz" class="pa">
<img id="staticBg" src="https://xlaj.cn/upfile/2026/01/23/3F.jpg">
<img id="dynamicBg" src="https://xlaj.cn/upfile/2026/01/23/3F.gif" id='bj'>
<video class="vid" src="https://img.tukuppt.com/video_show/7165162/00/17/52/5ec746f5eec22.mp4" autoplay loop></video>
<audio id="aud" src="https://aod.cos.tx.xmcdn.com/storages/1874-audiofreehighqps/41/FB/GAqhp50M0p5VACAAAAQpnCkh.m4a" autoplay loop></audio>
</div>
<div class="zw"></div>
<script type="module">
import { hcplay } from 'https://638183.freep.cn/638183/web/ku/hcplayer3in1.js?v=1';
var isPlaying = true;
var isGifPlaying = true;
var gc = `
动了情的人(Live合唱版)
作曲:阿末@走心音乐
演唱:群星
当初对我承诺地久天长
现在看来确实太过荒唐
对于你来讲不论谁在身旁
都只是临时爱一场
如果早知道会变成这样
就不该把心交到你手上
直到受过了伤才看清真相
无数次失眠到天亮
动了情的人才会觉得夜漫长
毕竟放不下的心事最难藏
誓言说的漂亮不过是你撒的谎
留我一个人空想到天亮
动了情的人才会觉得夜太长
只怪念念不忘却得不到回响
努力付出一场最后红了眼眶
所有期待成了昂贵奢望
歌词同步编辑:小辣椒
如果早知道会变成这样
就不该把心交到你手上
直到受过了伤才看清真相
无数次失眠到天亮
动了情的人才会觉得夜漫长
毕竟放不下的心事最难藏
誓言说的漂亮不过是你撒的谎
留我一个人空想到天亮
动了情的人才会觉得夜太长
只怪念念不忘却得不到回响
努力付出一场最后红了眼眶
所有期待成了昂贵奢望
谢谢欣赏
`;
hcplay(tz, gc, 7);
const videoElement = document.querySelector('.vid');
const audioElement = document.getElementById('aud');
const lrcDiv = document.getElementById('lrcDiv');
const staticBg = document.getElementById('staticBg');
const dynamicBg = document.getElementById('dynamicBg');
const existingButtons = document.querySelectorAll('.ma, #playimg, #mplayer, #fsbtn');
existingButtons.forEach(btn => {
if (btn.parentNode) {
btn.parentNode.removeChild(btn);
}
});
const playimg = document.createElement('img');
playimg.className = 'ma';
playimg.src = 'https://xlaj.cn/upfile/2026/01/23/la.png';
playimg.title = '点击播放/暂停 (空格键)';
tz.appendChild(playimg);
const progressBar = document.createElement('div');
progressBar.className = 'prog';
progressBar.title = '点击调节播放进度';
tz.appendChild(progressBar);
const timeDisplay = document.createElement('div');
timeDisplay.className = 'time-display';
const currentTime = document.createElement('span');
currentTime.className = 'current-time';
currentTime.textContent = '0:00';
timeDisplay.appendChild(currentTime);
const totalTime = document.createElement('span');
totalTime.className = 'total-time';
totalTime.textContent = '0:00';
timeDisplay.appendChild(totalTime);
tz.appendChild(timeDisplay);
function formatTime(seconds) {
const mins = Math.floor(seconds / 60);
const secs = Math.floor(seconds % 60);
return `${mins}:${secs.toString().padStart(2, '0')}`;
}
function updateProgressBar() {
if (audioElement.duration) {
const progress = (audioElement.currentTime / audioElement.duration) * 100;
progressBar.style.setProperty('--prg', progress + '%');
currentTime.textContent = formatTime(audioElement.currentTime);
totalTime.textContent = formatTime(audioElement.duration);
}
}
progressBar.addEventListener('click', (e) => {
if (audioElement.duration) {
const rect = progressBar.getBoundingClientRect();
const percent = (e.clientX - rect.left) / rect.width;
audioElement.currentTime = percent * audioElement.duration;
}
});
audioElement.addEventListener('timeupdate', updateProgressBar);
audioElement.addEventListener('loadedmetadata', updateProgressBar);
function togglePlayState() {
if (isPlaying) {
audioElement.pause();
videoElement.pause();
staticBg.style.display = 'block';
dynamicBg.style.display = 'none';
isGifPlaying = false;
if (lrcDiv) {
lrcDiv.classList.add('lrc-paused');
lrcDiv.style.setProperty('--lrc-state', 'paused');
}
tz.style.setProperty('--state', 'paused');
isPlaying = false;
} else {
audioElement.play();
videoElement.play();
staticBg.style.display = 'none';
dynamicBg.style.display = 'block';
isGifPlaying = true;
if (lrcDiv) {
lrcDiv.classList.remove('lrc-paused');
lrcDiv.style.setProperty('--lrc-state', 'running');
}
tz.style.setProperty('--state', 'running');
isPlaying = true;
}
}
playimg.addEventListener("click", togglePlayState);
document.addEventListener('keydown', function(event) {
if (event.code === 'Space' && !event.target.matches('input, textarea, select')) {
event.preventDefault();
togglePlayState();
}
});
setTimeout(() => {
if (lrcDiv && isPlaying) {
lrcDiv.style.setProperty('--lrc-state', 'running');
lrcDiv.classList.remove('lrc-paused');
}
tz.style.setProperty('--state', 'running');
}, 100);
</script> @马黑黑
黑黑,用你的源码去AI修改了一个一键停止背景动图和视频的效果,哈哈,成功了,谢谢黑黑的源码分享{:4_187:} 发现AI是真的强大DeepSeek,是太强大了 这制作很漂亮,竖排的多行歌词也漂亮。
欣赏亲爱的好帖{:4_199:} https://wx3.sinaimg.cn/large/008vf4mogy1h9h787ug5ig30aa08c41y.jpg 小辣椒 发表于 2026-1-23 21:24
@马黑黑
黑黑,用你的源码去AI修改了一个一键停止背景动图和视频的效果,哈哈,成功了,谢谢黑黑的源码 ...
AI使用的方法就是两张图片替换,这是常用的手段。
还有用 canvas 画布的,我们也曾演示过。
二者的区别仅在于成本问题:替换图片消耗的是体量层面的资源,用画布实现需要的是编程层面的投入。 直排歌词字幕与美女对角相称,使人感到画面布局稳重大方又不失浪漫。 这制作很漂亮,竖排的多行歌词也漂亮。
欣赏好帖。 效果惊艳,谢谢小辣椒精彩分享{:4_204:} 画面和歌词相得益彰,漂亮极了!{:4_187:} 还能一键暂停太好了,厉害了!{:4_199:} 小辣椒做的不错啊,很成功 红影 发表于 2026-1-23 22:18
这制作很漂亮,竖排的多行歌词也漂亮。
欣赏亲爱的好帖
亲爱的,这个图图也是旧图,重新制作了,省心省力 也曾年轻 发表于 2026-1-23 22:27
问好老师,感谢欣赏{:4_187:} 马黑黑 发表于 2026-1-24 08:28
AI使用的方法就是两张图片替换,这是常用的手段。
还有用 canvas 画布的,我们也曾演示过。
是的,黑黑的编程太强大了{:4_199:} 梦油 发表于 2026-1-24 09:58
直排歌词字幕与美女对角相称,使人感到画面布局稳重大方又不失浪漫。
问好梦油,感谢欣赏和支持{:4_187:} 小辣椒 发表于 2026-1-25 22:13
是的,黑黑的编程太强大了
哪里哪里 愤怒的葡萄 发表于 2026-1-24 10:04
这制作很漂亮,竖排的多行歌词也漂亮。
欣赏好帖。
问好葡萄,好久不见,
谢谢欣赏和支持{:4_187:} 杨帆 发表于 2026-1-24 13:22
效果惊艳,谢谢小辣椒精彩分享
问好杨帆,谢谢欣赏和支持,杨帆的制作也是很漂亮的 梦江南 发表于 2026-1-24 17:51
画面和歌词相得益彰,漂亮极了!
阿姨晚上好,以前玩过的旧图,节约时间,重新制作加了点效果,这样速度快一点
页:
[1]
2