- 重构标签HTML结构,添加.tag-text容器 - 为当前播放标签添加旋转渐变边框效果 - 调整标签尺寸和内边距 - 添加控制台日志输出当前播放数据 - 更新VSCode端口配置
104 lines
7.2 KiB
HTML
104 lines
7.2 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>朴见潮音 - 点歌</title>
|
||
<link rel="stylesheet" href="./static/css/song-request-station.css" />
|
||
<script src="./static/js/vue.global.js"></script>
|
||
<script src="./static/js/tagcloud-3.1.js"></script>
|
||
<link rel="icon" href="./static/img/favicon.ico" type="image/x-icon" />
|
||
|
||
<style>
|
||
[v-cloak] {
|
||
display: none;
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<div class="container" id="song-request-station" v-cloak>
|
||
<!-- 原生audio标签(隐藏) -->
|
||
<audio ref="audioPlayer" preload="none" loop></audio>
|
||
<div class="container-box mar1200">
|
||
<img class="logo" src="./static/img/logo.png" alt="" />
|
||
<div class="header">
|
||
<img class="halo" src="./static/img/halo.png" />
|
||
<img class="record-black" src="./static/img/record-black.svg" />
|
||
<div class="record-circle"></div>
|
||
<img class="star-icon" src="./static/img/star-icon.png" alt="" />
|
||
<img class="bj-2" src="./static/img/song-request-bj-2.svg" alt="" />
|
||
<img class="love-little" src="./static/img/love-little.svg" alt="" />
|
||
<img class="music-icon" src="./static/img/music-icon.svg" alt="" />
|
||
<img class="bj" src="./static/img/song-request-bj.svg" alt="" />
|
||
<img class="love-big" src="./static/img/love-big.svg" alt="" />
|
||
<img class="robot" src="./static/img/robot.png" alt="" />
|
||
<img class="music-score" src="./static/img/music-score.png" />
|
||
<img class="text" src="./static/img/song-request-text.svg" />
|
||
<img class="face" src="./static/img/smiling-face.png" />
|
||
<img class="star-icon-2" src="./static/img/star-icon-2.png" />
|
||
<img class="ai-music" src="./static/img/ai-music.png" />
|
||
<img class="green-glow" src="./static/img/green-glow.png" />
|
||
<img class="shadow" src="./static/img/shadow.png" />
|
||
</div>
|
||
<div class="list-box">
|
||
<img class="left-icon" src="./static/img/left-icon.png" alt="" />
|
||
<img class="right-icon" src="./static/img/right-icon.png" alt="" />
|
||
<div class="list-fill" id="bubbleContainerFill" ref="containerFill">
|
||
<div class="fill-item" v-for="(item, index) in tagsFill" :key="index" :class="[`item${ item.type }`]"></div>
|
||
</div>
|
||
<div class="list" id="bubbleContainer" ref="container">
|
||
<div class="tag-item" v-for="(item, index) in tags" :key="index" :class="[`item${ item.type }`, {'red': item.isred},{'show': playData?.tag == item.tag}]" @click="clickSongs(item.tag, item.songs)" @mouseleave="handleMouseleave" @mouseenter="handleMouseenter">
|
||
<div class="tag-text">{{ item.tag }}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bottom-play flexflex" v-if="playData">
|
||
<div class="bottom-left flex1 flexacenter">
|
||
<!-- <img v-if="playData?.img" class="img" :src="playData?.img" /> -->
|
||
<div class="name">{{ playData?.name }}</div>
|
||
</div>
|
||
|
||
<div class="bottom-middle flexcenter">
|
||
<div class="flexacenter" style="margin-bottom: 10px">
|
||
<div class="time-display">{{ currentTimeFormatted }}</div>
|
||
<div class="progress-bar flexacenter" @click="handleBarDragBottomClick">
|
||
<div class="bar white" :style="{ width: progress + '%' }" @mousedown="startBarDragBottom"></div>
|
||
<div class="bar black flex1"></div>
|
||
</div>
|
||
<div class="time-display">{{ durationFormatted }}</div>
|
||
</div>
|
||
|
||
<div class="operate flexcenter">
|
||
<img class="speed left" src="./static/img/speed-white-left.png" @click="fastForward('slow')" />
|
||
<img v-if="playData.state" class="play" @click="closeAll()" src="./static/img/pause-white-icon.svg" />
|
||
<img v-else class="play" @click="rePlay()" src="./static/img/play-white-icon.svg" />
|
||
<img class="speed right" src="./static/img/speed-white-right.png" @click="fastForward('fast')" />
|
||
</div>
|
||
</div>
|
||
|
||
<div class="bottom-right flex1 flexcenter">
|
||
<div class="item" @mouseenter="handleVolumeShow" @mouseleave="handleVolumeHide">
|
||
<svg v-if="volume == 0" class="svg" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 16 16"><path fill="#FCFCFC" d="M1 6.334a1 1 0 0 1 1-1h1.385a.667.667 0 0 0 .505-.231l2.938-3.41A.667.667 0 0 1 8 2.13v11.85c0 .604-.74.896-1.154.454l-2.958-3.165a.667.667 0 0 0-.487-.211H2a1 1 0 0 1-1-1zm3.9-.36a2 2 0 0 1-1.515.694H2.333v3.055h1.068a2 2 0 0 1 1.461.635l1.805 1.93V3.924zM9.764 6.04 11.724 8l-1.96 1.96a.333.333 0 0 0 0 .471l.472.471c.13.13.341.13.471 0l1.96-1.96 1.96 1.96c.13.13.34.13.47 0l.472-.471a.333.333 0 0 0 0-.471L13.61 8l1.96-1.96a.333.333 0 0 0 0-.47l-.471-.472a.333.333 0 0 0-.472 0l-1.96 1.96-1.959-1.96a.333.333 0 0 0-.471 0l-.472.471a.333.333 0 0 0 0 .471"></path></svg>
|
||
|
||
<svg v-else class="svg" xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 16 16">
|
||
<path fill="#fff" d="M1.334 6.334a1 1 0 0 1 1-1h1.385a.667.667 0 0 0 .505-.231l2.938-3.41a.667.667 0 0 1 1.172.436v11.85c0 .604-.74.896-1.154.454l-2.958-3.165a.667.667 0 0 0-.487-.211H2.334a1 1 0 0 1-1-1zm3.9-.36a2 2 0 0 1-1.515.694H2.667v3.055h1.068a2 2 0 0 1 1.461.635L7 12.288V3.924zM10.344 6.127a.364.364 0 0 1 .013-.483l.472-.472a.314.314 0 0 1 .462.009c1.374 1.601 1.374 4.038 0 5.64a.314.314 0 0 1-.462.008l-.472-.471a.364.364 0 0 1-.013-.484 3.028 3.028 0 0 0 0-3.747"></path>
|
||
<path fill="#fff" d="M12.479 12.479a.348.348 0 0 1-.007-.478c2.013-2.248 2.013-5.753 0-8.001a.348.348 0 0 1 .007-.478l.471-.471c.13-.13.342-.13.466.005 2.525 2.764 2.525 7.126 0 9.89a.322.322 0 0 1-.466.004z"></path>
|
||
</svg>
|
||
|
||
<div class="sound-control flexflex" v-if="volumeShow">
|
||
<div class="value">{{ volume }}</div>
|
||
<div class="progress flexflex" @click="handleVolumeClick">
|
||
<div class="bar" :style="{ height: volume + '%' }" @mousedown="startDrag"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="./static/js/song-request-station.js"></script>
|
||
</body>
|
||
</html>
|