diff --git a/song-request-station copy.html b/song-request-station copy.html new file mode 100644 index 0000000..15ea7e9 --- /dev/null +++ b/song-request-station copy.html @@ -0,0 +1,256 @@ + + + + + + 标签气泡动效 + + + + + + +
+
+ +
+ + +
+ + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + diff --git a/song-request-station.html b/song-request-station.html new file mode 100644 index 0000000..56e88d2 --- /dev/null +++ b/song-request-station.html @@ -0,0 +1,287 @@ + + + + + + 标签气泡动效 + + + + + + +
+
+ +
+ + +
+ + + + + + + + + + + + + + +
+
+
+
+
+
+ + + + diff --git a/static/css/song-request-station.css b/static/css/song-request-station.css new file mode 100644 index 0000000..3a5f82d --- /dev/null +++ b/static/css/song-request-station.css @@ -0,0 +1,290 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} +.container { + width: 100%; + background-color: #333333; + /* 气泡浮动动画 */ + /* 呼吸效果动画 */ +} +.container .flexflex { + display: flex; +} +.container .flexcenter { + display: flex; + justify-content: center; + align-items: center; +} +.container .flexjcenter { + display: flex; + justify-content: center; +} +.container .flexacenter { + display: flex; + align-items: center; +} +.container .flex1 { + flex: 1; +} +.container .flexcolumn { + display: flex; + flex-direction: column; +} +.container .mar1200 { + width: 1200px; + margin: 0 auto; +} +.container * { + margin: 0; + padding: 0; + box-sizing: border-box; +} +.container body { + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + min-height: 100vh; + overflow: hidden; +} +.container .bubble-tag { + position: absolute; + padding: 8px 18px; + border-radius: 25px; + background-color: rgba(255, 255, 255, 0.9); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + font-size: 14px; + cursor: pointer; + transition: transform 0.3s ease; + user-select: none; + z-index: 1; +} +.container .bubble-tag:hover { + transform: scale(1.15); + z-index: 10; + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); +} +@keyframes float { + 0%, + 100% { + transform: translateY(0) translateX(0) rotate(0deg); + } + 25% { + transform: translateY(-15px) translateX(10px) rotate(1deg); + } + 50% { + transform: translateY(-30px) translateX(5px) rotate(0deg); + } + 75% { + transform: translateY(-15px) translateX(-10px) rotate(-1deg); + } +} +@keyframes pulse { + 0% { + opacity: 0.8; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + } + 100% { + opacity: 1; + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); + } +} +.container .container-box { + padding-top: 24px; + height: 100vh; + display: flex; + flex-direction: column; +} +.container .container-box .logo { + width: 121px; + height: 24px; + margin-bottom: 31px; +} +.container .container-box .header { + position: relative; + width: 1200px; + height: 320px; + border-radius: 20px; + margin-bottom: 20px; +} +.container .container-box .header::after { + content: ""; + width: 1200px; + height: 320px; + background: linear-gradient(180deg, #7d4bf8 0%, #5241b0 100%); + border-radius: 20px; + position: absolute; + top: 0; + left: 0; +} +.container .container-box .header .halo { + width: 240px; + height: 214px; + position: absolute; + top: -71px; + left: -59px; +} +.container .container-box .header .star-icon { + position: absolute; + top: 46px; + left: 51px; + width: 56px; + height: 56px; + z-index: 1; +} +.container .container-box .header .love-little { + position: absolute; + top: 46px; + left: 51px; + width: 186px; + height: 160px; + transform: rotate(315deg); + top: 137px; + left: -10px; + z-index: 1; +} +.container .container-box .header .bj-2 { + width: 360px; + height: 128px; + position: absolute; + left: 25px; + bottom: 0; + z-index: 1; +} +.container .container-box .header .music-icon { + width: 34px; + height: 37px; + position: absolute; + top: 194px; + left: 40px; + transform: rotate(345deg); + z-index: 1; +} +.container .container-box .header .bj { + position: absolute; + bottom: 0; + right: 0; + width: 1064px; + height: 320px; + z-index: 1; +} +.container .container-box .header .love-big { + transform: rotate(44deg); + width: 321px; + height: 276px; + position: absolute; + top: 31px; + left: 69px; + z-index: 1; +} +.container .container-box .header .music-score { + width: 240px; + height: 240px; + position: absolute; + top: 1px; + left: 217px; + z-index: 1; +} +.container .container-box .header .robot { + width: 238px; + height: 238px; + position: absolute; + top: 42px; + left: 432px; + z-index: 1; +} +.container .container-box .header .text { + width: 224px; + height: 194px; + position: absolute; + top: 68px; + left: 694px; + z-index: 1; +} +.container .container-box .header .face { + width: 83px; + height: 83px; + position: absolute; + top: -27px; + left: 1080px; + z-index: 1; +} +.container .container-box .header .star-icon-2 { + width: 110px; + height: 110px; + position: absolute; + left: 953px; + top: 70px; + z-index: 1; +} +.container .container-box .header .ai-music { + width: 81px; + height: 28px; + position: absolute; + top: 282px; + left: 1106px; + z-index: 1; +} +.container .container-box .header .record-black { + width: 223px; + height: 233px; + position: absolute; + bottom: 0; + right: -1px; + z-index: 1; +} +.container .container-box .header .record-circle { + position: absolute; + top: 147px; + left: 1039px; + background-color: #72db86; + width: 110px; + height: 110px; + border-radius: 50%; + z-index: 1; +} +.container .container-box .header .record-circle::after { + content: ""; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: block; + width: 10px; + height: 10px; + border-radius: 50%; + background-color: #fff; +} +.container .container-box .header .green-glow { + width: 306px; + height: 62px; + position: absolute; + top: 285px; + left: 217px; +} +.container .container-box .header .shadow { + width: 240px; + height: 165px; + position: absolute; + top: 191px; + left: 997px; +} +.container .container-box .list-box { + width: 1200px; + height: 100%; + background-color: rgba(255, 255, 255, 0.10980392); + border-radius: 20px; + position: relative; + display: flex; + justify-content: center; + align-items: center; + padding: 3px 0; + margin-bottom: 40px; + flex: 1; +} +.container .container-box .list-box .list { + width: 1194px; + height: 100%; + background: linear-gradient(180deg, #7d4bf8 0%, #5241b0 100%); + border-radius: 18px; +} diff --git a/static/css/song-request-station.less b/static/css/song-request-station.less new file mode 100644 index 0000000..c5b64ce --- /dev/null +++ b/static/css/song-request-station.less @@ -0,0 +1,324 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +.container { + width: 100%; + background-color: rgba(51, 51, 51, 1); + + .flexflex { + display: flex; + } + .flexcenter { + display: flex; + justify-content: center; + align-items: center; + } + .flexjcenter { + display: flex; + justify-content: center; + } + .flexacenter { + display: flex; + align-items: center; + } + .flex1 { + flex: 1; + } + .flexcolumn { + display: flex; + flex-direction: column; + } + + .mar1200 { + width: 1200px; + margin: 0 auto; + } + + * { + margin: 0; + padding: 0; + box-sizing: border-box; + } + + body { + font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + min-height: 100vh; + overflow: hidden; + } + + + .bubble-tag { + position: absolute; + padding: 8px 18px; + border-radius: 25px; + background-color: rgba(255, 255, 255, 0.9); + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + font-size: 14px; + cursor: pointer; + transition: transform 0.3s ease; + user-select: none; + z-index: 1; + } + + .bubble-tag:hover { + transform: scale(1.15); + z-index: 10; + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); + } + + /* 气泡浮动动画 */ + @keyframes float { + 0%, + 100% { + transform: translateY(0) translateX(0) rotate(0deg); + } + 25% { + transform: translateY(-15px) translateX(10px) rotate(1deg); + } + 50% { + transform: translateY(-30px) translateX(5px) rotate(0deg); + } + 75% { + transform: translateY(-15px) translateX(-10px) rotate(-1deg); + } + } + + /* 呼吸效果动画 */ + @keyframes pulse { + 0% { + opacity: 0.8; + box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); + } + 100% { + opacity: 1; + box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15); + } + } + + .container-box { + padding-top: 24px; + height: 100vh; + display: flex; + flex-direction: column; + + .logo { + width: 121px; + height: 24px; + margin-bottom: 31px; + } + + .header { + position: relative; + width: 1200px; + height: 320px; + // background: linear-gradient(180deg, #7d4bf8 0%, #5241b0 100%); + border-radius: 20px; + margin-bottom: 20px; + + &::after { + content: ""; + width: 1200px; + height: 320px; + background: linear-gradient(180deg, #7d4bf8 0%, #5241b0 100%); + border-radius: 20px; + position: absolute; + top: 0; + left: 0; + } + + .halo { + width: 240px; + height: 214px; + position: absolute; + top: -71px; + left: -59px; + } + + .star-icon { + position: absolute; + top: 46px; + left: 51px; + width: 56px; + height: 56px; + z-index: 1; + } + + .love-little { + position: absolute; + top: 46px; + left: 51px; + width: 186px; + height: 160px; + transform: rotate(315deg); + top: 137px; + left: -10px; + z-index: 1; + } + + .bj-2 { + width: 360px; + height: 128px; + position: absolute; + left: 25px; + bottom: 0; + z-index: 1; + } + + .music-icon { + width: 34px; + height: 37px; + position: absolute; + top: 194px; + left: 40px; + transform: rotate(345deg); + z-index: 1; + } + + .bj { + position: absolute; + bottom: 0; + right: 0; + width: 1064px; + height: 320px; + z-index: 1; + } + + .love-big { + transform: rotate(44deg); + width: 321px; + height: 276px; + position: absolute; + top: 31px; + left: 69px; + z-index: 1; + } + + .music-score { + width: 240px; + height: 240px; + position: absolute; + top: 1px; + left: 217px; + z-index: 1; + } + + .robot { + width: 238px; + height: 238px; + position: absolute; + top: 42px; + left: 432px; + z-index: 1; + } + + .text { + width: 224px; + height: 194px; + position: absolute; + top: 68px; + left: 694px; + z-index: 1; + } + + .face { + width: 83px; + height: 83px; + position: absolute; + top: -27px; + left: 1080px; + z-index: 1; + } + + .star-icon-2 { + width: 110px; + height: 110px; + position: absolute; + left: 953px; + top: 70px; + z-index: 1; + } + + .ai-music { + width: 81px; + height: 28px; + position: absolute; + top: 282px; + left: 1106px; + z-index: 1; + } + + .record-black { + width: 223px; + height: 233px; + position: absolute; + bottom: 0; + right: -1px; + z-index: 1; + } + + .record-circle { + position: absolute; + top: 147px; + left: 1039px; + background-color: rgb(114, 219, 134); + width: 110px; + height: 110px; + border-radius: 50%; + z-index: 1; + + &::after { + content: ""; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + display: block; + width: 10px; + height: 10px; + border-radius: 50%; + background-color: #fff; + } + } + + .green-glow { + width: 306px; + height: 62px; + position: absolute; + top: 285px; + left: 217px; + } + + .shadow { + width: 240px; + height: 165px; + position: absolute; + top: 191px; + left: 997px; + } + } + + .list-box { + width: 1200px; + height: 100%; + background-color: rgba(255, 255, 255, 0.109803921568627); + border-radius: 20px; + position: relative; + display: flex; + justify-content: center; + align-items: center; + padding: 3px 0; + margin-bottom: 40px; + flex: 1; + .list { + width: 1194px; + height: 100%; + background: linear-gradient(180deg, #7d4bf8 0%, #5241b0 100%); + border-radius: 18px; + } + } + } +} diff --git a/static/img/ai-music.png b/static/img/ai-music.png new file mode 100644 index 0000000..03b17f8 Binary files /dev/null and b/static/img/ai-music.png differ diff --git a/static/img/favicon.ico b/static/img/favicon.ico deleted file mode 100644 index 2670973..0000000 Binary files a/static/img/favicon.ico and /dev/null differ diff --git a/static/img/green-glow.png b/static/img/green-glow.png new file mode 100644 index 0000000..1490b51 Binary files /dev/null and b/static/img/green-glow.png differ diff --git a/static/img/halo.png b/static/img/halo.png new file mode 100644 index 0000000..b06b2a1 Binary files /dev/null and b/static/img/halo.png differ diff --git a/static/img/love-big.svg b/static/img/love-big.svg new file mode 100644 index 0000000..2d46457 --- /dev/null +++ b/static/img/love-big.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/love-little.svg b/static/img/love-little.svg new file mode 100644 index 0000000..40905d5 --- /dev/null +++ b/static/img/love-little.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/music-icon.svg b/static/img/music-icon.svg new file mode 100644 index 0000000..afc2675 --- /dev/null +++ b/static/img/music-icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/music-score.png b/static/img/music-score.png new file mode 100644 index 0000000..eed5c2e Binary files /dev/null and b/static/img/music-score.png differ diff --git a/static/img/record-black.svg b/static/img/record-black.svg new file mode 100644 index 0000000..e6d3ca9 --- /dev/null +++ b/static/img/record-black.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/static/img/robot.png b/static/img/robot.png new file mode 100644 index 0000000..09af665 Binary files /dev/null and b/static/img/robot.png differ diff --git a/static/img/shadow.png b/static/img/shadow.png new file mode 100644 index 0000000..f967f80 Binary files /dev/null and b/static/img/shadow.png differ diff --git a/static/img/smiling-face.png b/static/img/smiling-face.png new file mode 100644 index 0000000..4b54b82 Binary files /dev/null and b/static/img/smiling-face.png differ diff --git a/static/img/song-request-bj-2.svg b/static/img/song-request-bj-2.svg new file mode 100644 index 0000000..6980fb3 --- /dev/null +++ b/static/img/song-request-bj-2.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/song-request-bj.svg b/static/img/song-request-bj.svg new file mode 100644 index 0000000..f7c4a07 --- /dev/null +++ b/static/img/song-request-bj.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/song-request-text.svg b/static/img/song-request-text.svg new file mode 100644 index 0000000..a502e5b --- /dev/null +++ b/static/img/song-request-text.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/static/img/star-icon-2.png b/static/img/star-icon-2.png new file mode 100644 index 0000000..db57fff Binary files /dev/null and b/static/img/star-icon-2.png differ diff --git a/static/img/star-icon.png b/static/img/star-icon.png new file mode 100644 index 0000000..bdcc078 Binary files /dev/null and b/static/img/star-icon.png differ diff --git a/static/js/index.js b/static/js/index.js index 45cba22..52d5736 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -179,6 +179,8 @@ const search = createApp({ let art = null; // 开启播放 MV const openPreview = (id) => { + closeAll(); + ajax("https://pujianchaoyin.com/api/getMvDetail", { id, }).then((res) => { @@ -234,10 +236,8 @@ const search = createApp({ const manageAudio = (src, area) => { const audio = audioPlayer.value; closeAll(); - nextTick(() => { + setTimeout(() => { if (audio?.src != src) audio.src = src; - console.log("audio", audio); - audio.play().then(() => { if (area == "works") { awardAudioList.value.forEach((item) => { @@ -262,7 +262,7 @@ const search = createApp({ playData.value = { ...zeroOrderStudents.value, area }; } }); - }); + }, 500); }; // 重新播放 diff --git a/tag-bubbles copy.html b/tag-bubbles copy.html new file mode 100644 index 0000000..a8dd7ff --- /dev/null +++ b/tag-bubbles copy.html @@ -0,0 +1,151 @@ + + + + + + 标签气泡动效 + + + +

标签气泡动效演示

+
+ + + +