Rumah hujung hadapan web html tutorial html如何制作滚动歌词

html如何制作滚动歌词

Mar 04, 2021 pm 03:22 PM
html

html制作滚动歌词的方法:首先在标签里面写好编码格式,引入css样式和jQuery;然后放置播放器,代码为【

html如何制作滚动歌词

本教程操作环境:windows7系统、html5版,DELL G3电脑。

html制作滚动歌词的方法:

首先我们创建一个html文件,名字随便取,比如:index.html,这个简单,不用多说。不着急开始写代码,我们在创建一个css文件,不妨就命名为musicplay.css,js的话我们直接写道html文件里面方便阅读和调整,就不创建新的js文件了,但是你要准备jQuery文件,如果没有也没关系,待会说解决方法。准备工作结束了,我们开始写了,首先在标签里面写好编码格式,顺便也把我们之前创建的css样式和jQuery引入,代码如下:

代码如下:

<meta charset="UTF-8"><title>爱在西元前-周杰伦
</title><link type="text/css" rel="stylesheet" href="css/musicplay.css" />
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<!--注意:这种从网上直接引入的方法需要链接网络,如果你本地下载好了,就把这句话删除,采用下面的映入方式-->
<script src="js/jquery-1.9.1.min.js"></script></head>

head内容写好后,我们开始写body里面的了,首先我们用放置播放器,就是标签,代码如下:

<center> 
<audio autoplay="autoplay src="爱在西元前.mp3" controls></audio>
</center><!--这里修改播放器里面播放的音乐,这里只有简单的控制,没做上一曲,下一曲的功能 ,autoplay="autoplay"属性为自动播放,不想让自动播放删去即可 -->

去即可 -->接着写一个盒子,代码如下:

盒子的css代码如下(功能见备注):

接下来就是js脚本事了,我们的设计思路是(分下面几个函数完成):

函数1:parseLyric()分割歌词,这一步主要是为了分行显示歌词

函数2:highLight()当前放到的歌词高亮显示,为了表示当前唱到那一句了

函数3:audio.addEventListener()实时渲染,因为是滚动的,所以要不停的渲染

函数4:getLineNo()获取此时的行数,如果我们快进或快退的时候,歌词也要跟着我们的调整而改变

函数5:audio.addEventListener()播放完回到开始,这个可以不做,没有太意义,这是为了完善功能解释好这几个函数之后,我直接贴代码。

<script type="text/javascript">    $(function() {       
 function parseLyric(text) { 
 //按行分割歌词            
 let lyricArr = text.split(&#39;\n&#39;);            //console.log(lyricArr)
//0: "[ti:爱在西元前]" "[ar:周杰伦]"...  
 let result = []; 
 //新建一个数组存放最后结果      
 //遍历分割后的歌词数组,将格式化后的时间节点,歌词填充到result数组           
  for (i = 0; i < lyricArr.length; i++) {                let playTimeArr = lyricArr[i].match(/\[\d{2}:\d{2}((\.|\:)\d{2})\]/g); 
  //正则匹配播放时间               
   let lineLyric = "";              
  if (lyricArr[i].split(playTimeArr).length > 0) {                   
 lineLyric = lyricArr[i].split(playTimeArr);                }                
 if (playTimeArr != null) {                    for (let j = 0; j < playTimeArr.length; j++) {                        
 let time = playTimeArr[j].substring(1, playTimeArr[j].indexOf("]")).split(":");                        //数组填充   
result.push({                            time: (parseInt(time[0]) * 60 + parseFloat(time[1])).toFixed(4),                            content: String(lineLyric).substr(1)                        });                    
}                
}            
}            
return result;        
}
// 这里请按照格式放入相应歌词--开始
// 格式可能看着很复杂,其实是根据lrc歌词文件换句前加入\n 换行符,然后删除多余空行.即可!
// 这里请按照格式放入相应歌词--结束        
let audio = document.querySelector(&#39;audio&#39;);        let result = parseLyric(text); //执行lyc解析        // 把生成的数据显示到界面上去        
let $ul = $("<ul></ul>");        
for (let i = 0; i < result.length; i++) {            let $li = $("<li></li>").text(result[i].content);            $ul.append($li);        
}        
$(".bg").append($ul);        
let lineNo = 0; 
// 当前行歌词        
let preLine =1; // 当播放6行后开始滚动歌词
let lineHeight = -30; // 每次滚动的距离        // 滚动播放 歌词高亮  增加类名active  
function highLight() {            
let $li = $("li");            $li.eq(lineNo).addClass("active").siblings().removeClass("active");            
if (lineNo > preLine) {                $ul.stop(true, true).animate({ top: (lineNo - preLine) * lineHeight });            
}        
}        
highLight();        
// 播放的时候不断渲染   
audio.addEventListener("timeupdate", function() {            
if (lineNo == result.length) return;            if ($("li").eq(0).hasClass("active")) {                $("ul").css("top", "0");            
}            
lineNo =getLineNo(audio.currentTime);            highLight();            
lineNo++;        });        
// 当快进或者倒退的时候,找到最近的后面那个
result[i].time        
function getLineNo(currentTime) {            if (currentTime >=parseFloat(result[lineNo].time)) {                // 快进                
for (let i = result.length - 1; i >= lineNo; i--) {                    
if (currentTime >= parseFloat(result[i].time)) {                        return i;                    
}                
}            
} else {                
// 后退                
for (let i = 0; i <= lineNo; i++) {                    if (currentTime <= parseFloat(result[i].time)) {                        return i - 1;                    
}                
}            
}        
}        
//播放结束自动回到开头 
audio.addEventListener("ended", function() {            lineNo = 0;            
highLight();            
audio.play();            
$("ul").css("top", "0");        
});    
});    
</script>

相关学习推荐:html视频教程

Atas ialah kandungan terperinci html如何制作滚动歌词. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1535
276
Cara menambah ikon ke tab tajuk laman web anda di HTML Cara menambah ikon ke tab tajuk laman web anda di HTML Aug 07, 2025 pm 11:30 PM

Untuk menambah ikon ke bar tajuk laman web, anda perlu menghubungkan fail Favicon di bahagian HTML. Langkah -langkah khusus adalah seperti berikut: 1. Sediakan fail ikon 16x16 atau 32x32 piksel. Adalah disyorkan untuk menggunakan favicon.ico untuk menamakannya dan meletakkannya di direktori akar laman web, atau menggunakan format moden seperti PNG dan SVG; 2. Tambah tag pautan ke HTML, seperti format PNG atau SVG, laraskan atribut jenis dengan sewajarnya; 3. Secara pilihan menambah ikon resolusi tinggi untuk peranti mudah alih, seperti Appletouchicon, dan nyatakan saiz yang berbeza melalui atribut saiz; 4. Ikuti amalan terbaik, letakkan ikon dalam direktori root untuk memastikan pengesanan automatik, jelaskan cache penyemak imbas selepas kemas kini, dan periksa ketepatan laluan fail.

Apakah perbezaan antara ID dan kelas HTML Apakah perbezaan antara ID dan kelas HTML Aug 07, 2025 am 12:03 AM

ID mesti unik. Satu ID dalam setiap halaman hanya boleh digunakan untuk satu elemen, dan kelas boleh digunakan semula pada pelbagai elemen, dan satu elemen boleh mempunyai pelbagai kelas; 2. Senario yang menggunakan ID termasuk: meletakkan elemen khusus tunggal, pautan sauh dalam halaman, JavaScript mengendalikan elemen melalui ID, dan label yang berkaitan dengan elemen bentuk; Senario menggunakan kelas termasuk: menggunakan gaya atau tingkah laku yang sama kepada pelbagai elemen, membina komponen UI yang boleh diguna semula, dan memilih pelbagai elemen dalam JavaScript; 3. Dalam CSS, penargetan dilakukan oleh pemilih #ID dan pemilih kelas.

Cara menambah ikon ke butang dalam html Cara menambah ikon ke butang dalam html Aug 07, 2025 pm 11:09 PM

Menggunakan Fontawesome dapat dengan cepat menambah ikon dengan memperkenalkan CDN dan menambah kelas ikon ke butang, seperti seperti; 2. Menggunakan label untuk membenamkan ikon tersuai dalam butang, laluan dan saiz yang betul mesti ditentukan; 3. Menanam kod SVG secara langsung untuk mencapai ikon resolusi tinggi dan menjadikannya konsisten dengan warna teks; 4. Jarak harus ditambah melalui CSS dan ARIA-label harus ditambah ke butang ikon untuk meningkatkan aksesibilitas; Ringkasnya, Fontawesome paling sesuai untuk ikon standard, gambar sesuai untuk reka bentuk tersuai, manakala SVG menyediakan skala dan kawalan yang terbaik, dan kaedah harus dipilih mengikut keperluan projek. Fontawesome biasanya disyorkan.

Bagaimana anda boleh membuat elemen HTML yang boleh diedit oleh pengguna? Bagaimana anda boleh membuat elemen HTML yang boleh diedit oleh pengguna? Aug 11, 2025 pm 05:23 PM

Ya, anda boleh membuat elemen HTML diedit dengan menggunakan atribut contentedable. Kaedah khusus adalah untuk menambah contentedable = "true" kepada elemen sasaran. Sebagai contoh, anda boleh mengedit teks ini, dan pengguna boleh mengklik dan mengubahsuai kandungan secara langsung. Atribut ini sesuai untuk unsur-unsur peringkat dan unsur-unsur dalam talian seperti Div, P, Span, H1 hingga H6. Nilai lalai adalah "benar" untuk diedit, "palsu" untuk tidak boleh diedit, dan "mewarisi" untuk mewarisi tetapan elemen induk. Untuk meningkatkan kebolehcapaian, disarankan untuk menambah tabIndex = "0 & quo

Cara Menggunakan Tag Del dan INS di HTML Cara Menggunakan Tag Del dan INS di HTML Aug 12, 2025 am 11:38 AM

Thetagisusedtomarkdeletedtext,optionallywithdatetimeandciteattributestospecifywhenandwhythedeletionoccurred.2.Thetagindicatesinsertedcontent,alsosupportingdatetimeandciteforcontextabouttheaddition.3.Thesetagscanbecombinedtoshowdocumentrevisionsclearl

Mengapa imej HTML saya tidak muncul? Mengapa imej HTML saya tidak muncul? Aug 16, 2025 am 10:08 AM

Pertama, periksa sama ada laluan atribut SRC adalah betul, dan pastikan laluan relatif atau mutlak sepadan dengan lokasi fail HTML; 2. Sahkan sama ada nama fail dan lanjutan dieja dengan betul dan sensitif kes; 3. Sahkan bahawa fail imej sebenarnya wujud dalam direktori yang ditentukan; 4. Gunakan atribut alt yang sesuai dan pastikan format imej adalah .jpg, .png, .gif atau .webp disokong secara meluas oleh penyemak imbas; 5. Selesaikan masalah cache penyemak imbas, cuba memaksa menyegarkan atau mengakses url imej secara langsung; 6. Semak tetapan kebenaran pelayan untuk memastikan fail itu boleh dibaca dan tidak disekat; 7. Sahkan bahawa sintaks tag IMG adalah betul, termasuk petikan dan perintah atribut yang betul, dan akhirnya menyelesaikan masalah 404 kesilapan atau masalah sintaks melalui alat pemaju penyemak imbas untuk memastikan imej itu dipaparkan secara normal.

Cara menggunakan tag alamat dalam html Cara menggunakan tag alamat dalam html Aug 15, 2025 am 06:24 AM

ThetagisusedTodefineContactinformationfortheAuthorOrOrOrownerofadocumentorsection; 1.useitforemail, fizikalAddress, phonenumber, orwebsiteurlwithinanarticleorbody;

Cara menggunakan tag BDO untuk mengatasi arah teks dalam html Cara menggunakan tag BDO untuk mengatasi arah teks dalam html Aug 16, 2025 am 09:32 AM

Thebdotagisusedtooverridethebrowser'sdefaulttextdirectionrenderingwhendealingwithmixedleft-to-rightandright-to-lefttext, memastikancorrectvisualdisplaybyforcingaspecificdirectionusingthedirattribondaluS "rtemematribondaluS"

See all articles