国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

前端 用HTML,CSS, JS 寫(xiě)一個(gè)簡(jiǎn)易的音樂(lè)播放器

這篇具有很好參考價(jià)值的文章主要介紹了前端 用HTML,CSS, JS 寫(xiě)一個(gè)簡(jiǎn)易的音樂(lè)播放器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Music Player</title>
    <style>
        /* 樣式可自行修改 */
        .container {
            width: 600px;
            margin: 0 auto;
        }
        h2 {
            text-align: center;
        }
        .controls {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 20px;
        }
        .progress {
            width: 400px;
            height: 10px;
            background-color: #ccc;
        }
        .progress-bar {
            height: 10px;
            background-color: #6cb0ff;
        }
        .info {
            display: flex;
            justify-content: center;
            align-items: center;
            margin-bottom: 20px;
        }
        .song-info {
            margin-left: 20px;
            display: flex;
            flex-direction: column;
        }
        .song-info span {
            margin-bottom: 5px;
        }
        .song-list {
            list-style: none;
            padding: 0;
        }
        .song-list li {
            margin-bottom: 5px;
            cursor: pointer;
        }
        .song-list li.active {
            color: #6cb0ff;
        }
        .play-mode {
            display: flex;
            align-items: center;
        }
        .play-mode span {
            margin-right: 5px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h2>Music Player</h2>
        <div class="controls">
            <button id="prev">上一首</button>
            <button id="play">播放</button>
            <button id="next">下一首</button>
            <div class="progress">
                <div class="progress-bar"></div>
            </div>
            <input type="range" id="volume" min="0" max="1" step="0.1" value="0.5">
        </div>
        <div class="info">
            <img src="" alt="" id="cover">
            <div class="song-info">
                <span id="song-name">歌曲名稱(chēng)</span>
                <span id="artist">歌手</span>
            </div>
        </div>
        <ul class="song-list">
            <li data-src="./music/song1.mp3">歌曲1</li>
            <li data-src="./music/song2.mp3">歌曲2</li>
            <li data-src="./music/song3.mp3">歌曲3</li>
        </ul>
        <div class="play-mode">
            <span>播放模式:</span>
            <button id="loop">循環(huán)</button>
            <button id="random">隨機(jī)</button>
            <button id="single">單曲</button>
        </div>
    </div>
    <script>
        const audio = new Audio(); // 創(chuàng)建音樂(lè)播放器對(duì)象
        const songList = document.querySelectorAll('.song-list li');
        const prevBtn = document.querySelector('#prev');
        const playBtn = document.querySelector('#play');
        const nextBtn = document.querySelector('#next');
        const volumeSlider = document.querySelector('#volume');
        const progressBar = document.querySelector('.progress-bar');
        const coverImg = document.querySelector('#cover');
        const songName = document.querySelector('#song-name');
        const artistName = document.querySelector('#artist');
        const loopBtn = document.querySelector('#loop');
        const randomBtn = document.querySelector('#random');
        const singleBtn = document.querySelector('#single');
        let currentIndex = 0;
        let isPlaying = false;
        let playMode = 'loop'; // 默認(rèn)播放模式為循環(huán)

        function playSong(index) {
            const song = songList[index];
            audio.src = song.dataset.src;
            audio.play();
            isPlaying = true;
            playBtn.textContent = '暫停';
            coverImg.src = `./images/cover${index+1}.jpg`;
            songName.textContent = song.textContent;
            artistName.textContent = '歌手名稱(chēng)';
            songList.forEach((item) => {
                item.classList.remove('active');
            });
            song.classList.add('active');
        }

        function getNextIndex() {
            let nextIndex;
            switch(playMode) {
                case 'loop':
                    nextIndex = currentIndex + 1;
                    if (nextIndex >= songList.length) {
                        nextIndex = 0;
                    }
                    break;
                case 'random':
                    nextIndex = Math.floor(Math.random() * songList.length);
                    break;
                case 'single':
                    nextIndex = currentIndex;
                    break;
            }
            return nextIndex;
        }

        function updateProgress() {
            const progress = audio.currentTime / audio.duration * 100;
            progressBar.style.width = `${progress}%`;
        }

        function init() {
            playSong(currentIndex);
        }

        init();

        prevBtn.addEventListener('click', () => {
            currentIndex--;
            if (currentIndex < 0) {
                currentIndex = songList.length - 1;
            }
            playSong(currentIndex);
        });

        nextBtn.addEventListener('click', () => {
            currentIndex = getNextIndex();
            playSong(currentIndex);
        });

        playBtn.addEventListener('click', () => {
            if (isPlaying) {
                audio.pause();
                isPlaying = false;
                playBtn.textContent = '播放';
            } else {
                audio.play();
                isPlaying = true;
                playBtn.textContent = '暫停';
            }
        });

        volumeSlider.addEventListener('input', () => {
            audio.volume = volumeSlider.value;
        });

        audio.addEventListener('timeupdate', updateProgress);

        progressBar.addEventListener('click', (e) => {
            const width = progressBar.clientWidth;
            const clickX = e.offsetX;
            const duration = audio.duration;
            audio.currentTime = clickX / width * duration;
        });

        songList.forEach((song, index) => {
            song.addEventListener('click', () => {
                currentIndex = index;
                playSong(currentIndex);
            });
        });

        loopBtn.addEventListener('click', () => {
            playMode = 'loop';
        });

        randomBtn.addEventListener('click', () => {
            playMode = 'random';
        });

        singleBtn.addEventListener('click', () => {
            playMode = 'single';
        });

        audio.addEventListener('ended', () => {
            currentIndex = getNextIndex();
            playSong(currentIndex);
        });
    </script>
</body>
</html>
 

這個(gè)實(shí)現(xiàn)了基本的播放/暫停、歌曲切換、音量控制、進(jìn)度條控制和顯示歌曲信息等功能,同時(shí)還支持播放模式切換和歌曲列表操作。不過(guò)這只是一個(gè)簡(jiǎn)單的示例,實(shí)際上還有很多功能需要進(jìn)一步完善和優(yōu)化,例如:

  1. 支持歌詞顯示和同步
  2. 支持播放列表編輯和保存
  3. 支持拖拽上傳歌曲
  4. 支持在線搜索歌曲
  5. 支持分享和評(píng)論等社交功能

這些功能的實(shí)現(xiàn)需要涉及到不同的技術(shù)和工具,如 AJAX、WebSocket、React、Node.js 等。如果你想要深入學(xué)習(xí)和掌握 Web 開(kāi)發(fā)技術(shù),可以選擇相應(yīng)的學(xué)習(xí)路徑和教程進(jìn)行學(xué)習(xí)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-766347.html

到了這里,關(guān)于前端 用HTML,CSS, JS 寫(xiě)一個(gè)簡(jiǎn)易的音樂(lè)播放器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 簡(jiǎn)易但很實(shí)用的javaswing/gui音樂(lè)播放器

    簡(jiǎn)易但很實(shí)用的javaswing/gui音樂(lè)播放器

    視頻瀏覽地址 很實(shí)用的一個(gè)javaswing音樂(lè)播放器??梢哉故靖杳弦磺乱磺?。 源碼下載地址 支持:遠(yuǎn)程部署/安裝/調(diào)試、講解、二次開(kāi)發(fā)/修改/定制

    2024年02月08日
    瀏覽(12)
  • 使用html,css和js給視頻設(shè)置一個(gè)簡(jiǎn)易進(jìn)度條

    代碼依次為body內(nèi)標(biāo)簽創(chuàng)建,css樣式? 和script 代碼 這里我們先創(chuàng)建我們所需要的標(biāo)簽 視頻的盒子,視頻文件,進(jìn)度條,和用來(lái)播放,暫停的按鈕 然后我們來(lái)設(shè)置我們標(biāo)簽所需要的簡(jiǎn)單樣式 按鈕我沒(méi)有設(shè)置樣式,因?yàn)閷?xiě)出來(lái)實(shí)現(xiàn)效果就行了,有需要的話可以自由發(fā)揮 css的進(jìn)度

    2024年02月15日
    瀏覽(28)
  • 嵌入式Qt 開(kāi)發(fā)一個(gè)音樂(lè)播放器

    嵌入式Qt 開(kāi)發(fā)一個(gè)音樂(lè)播放器

    上篇文章:RK3568源碼編譯與交叉編譯環(huán)境搭建,進(jìn)行了OK3568開(kāi)發(fā)板軟件開(kāi)發(fā)環(huán)境搭建,通過(guò)編譯RK3568的源碼,可以得到Qt開(kāi)發(fā)的交叉編譯相關(guān)工具。 本篇,就來(lái)在搭建好的軟件開(kāi)發(fā)中,進(jìn)行Qt軟件的開(kāi)發(fā)測(cè)試。由于Qt是支持跨平臺(tái)的,因此本篇的音樂(lè)播放器,先在Windows上編寫(xiě)

    2024年02月02日
    瀏覽(41)
  • Python制作一個(gè)多功能音樂(lè)播放器

    制作一個(gè)多功能音樂(lè)播放器的思路 確定播放器的需求和功能,例如支持哪些音頻格式、播放列表管理、循環(huán)播放、暫停、進(jìn)度條顯示等等。 選擇合適的Python GUI庫(kù),例如Tkinter、PyQt等。這些庫(kù)可以幫助我們?cè)趫D形界面中實(shí)現(xiàn)播放器的各種功能。 創(chuàng)建播放器窗口、菜單、按鈕、

    2024年02月08日
    瀏覽(27)
  • 微信小程序?qū)崿F(xiàn)一個(gè)音樂(lè)播放器的功能

    1.頁(yè)面包含一個(gè)音樂(lè)列表,點(diǎn)擊列表中的音樂(lè)可以播放對(duì)應(yīng)的音樂(lè)。 2.播放中的音樂(lè)在列表中有標(biāo)識(shí),并且可以暫停或繼續(xù)播放。 3.顯示當(dāng)前音樂(lè)的播放進(jìn)度和總時(shí)長(zhǎng),并可以拖動(dòng)進(jìn)度條調(diào)整播放進(jìn)度。 4.點(diǎn)擊切換按鈕可以切換到下一首音樂(lè)。 5.點(diǎn)擊循環(huán)按鈕可以切換音樂(lè)的

    2024年01月22日
    瀏覽(34)
  • 如何搭建一個(gè)自己的音樂(lè)播放器-使用騰訊云輕量應(yīng)用服務(wù)器搭建YesPlayMusic網(wǎng)易云播放器

    如何搭建一個(gè)自己的音樂(lè)播放器-使用騰訊云輕量應(yīng)用服務(wù)器搭建YesPlayMusic網(wǎng)易云播放器

    項(xiàng)目簡(jiǎn)介 本文使用的是YesPlayMusic項(xiàng)目,這是一款高顏值的第三方網(wǎng)易云播放器,它完全可以作為網(wǎng)易云官方應(yīng)用的替代品。而且還擁有一些網(wǎng)易云官方應(yīng)用沒(méi)有的功能,比如可以自動(dòng)簽到,支持PWA可以直接一鍵安裝,界面簡(jiǎn)潔美觀,沒(méi)有多余的社交功能,沒(méi)有廣告等特點(diǎn)。

    2023年04月23日
    瀏覽(43)
  • 前端 :用HTML , CSS ,JS 做一個(gè)秒表
  • 微信小程序做一個(gè)圓形圖片旋轉(zhuǎn)可以控制開(kāi)始和結(jié)束-音樂(lè)播放器的圖片旋轉(zhuǎn)功能

    1.在 WXML 文件中添加一個(gè) 標(biāo)簽,并設(shè)置圖片的 src 和樣式,并為其綁定一個(gè) animation 用來(lái)控制旋轉(zhuǎn)動(dòng)畫(huà)。 2.在 WXSS 文件中添加樣式,將圖片設(shè)置為圓形并居中顯示。 3.在 JS 文件中定義旋轉(zhuǎn)動(dòng)畫(huà)對(duì)象和控制方法。 4.在 WXML 文件中添加按鈕來(lái)觸發(fā)開(kāi)始和結(jié)束旋轉(zhuǎn)動(dòng)畫(huà)。 在以上步驟

    2024年02月16日
    瀏覽(23)
  • uni-app Vue3實(shí)現(xiàn)一個(gè)酷炫的多功能音樂(lè)播放器支持微信小程序后臺(tái)播放

    uni-app Vue3實(shí)現(xiàn)一個(gè)酷炫的多功能音樂(lè)播放器支持微信小程序后臺(tái)播放

    本文存在多張gif演示圖,建議在 wifi 環(huán)境下閱讀?? 最近在做網(wǎng)易云音樂(lè)微信小程序開(kāi)源項(xiàng)目的時(shí)候,關(guān)于 播放器功能 參考了一些成熟的微信小程序,如 網(wǎng)易云音樂(lè)小程序 和 QQ音樂(lè)小程序 ,但是發(fā)現(xiàn)這些 小程序端 的播放器相對(duì)于 APP端 來(lái)說(shuō)較簡(jiǎn)單,只支持一些基礎(chǔ)功能,

    2024年01月24日
    瀏覽(104)
  • 前端 : 用html ,css,js寫(xiě)一個(gè)你畫(huà)我猜的游戲

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包