HTML5 は Audio タグを使用して歌詞同期の効果を実現します _html5 チュートリアル スキル
HTML5 の最も強力な点は、メディア ファイルの処理です。たとえば、単純な vedio タグを使用してビデオ再生を実現できます。同様に、HTML5 にはオーディオ ファイルを処理するための対応するタグがあります。つまり、オーディオ タグ
HTML5 はリリースされてからかなりの時間が経ちますが、その中のオーディオ タグは一度しか使用されていません。このタグをページに挿入します。今回は、友人がいくつかのページを作成し、audio タグの使用を練習するのを手伝うのを利用しました。
まず、ページに audio タグを挿入する必要があります。後で end 属性を使用する必要があるため、この属性はループ再生の設定に使用しないことをお勧めします。 if ループが If ループに設定されている場合、終了属性は常に false になります。
autoplay='autoplay' は、読み込み後にページが自動的に音楽を再生するように設定します。preload 属性と autoplay 属性は同じ効果を持ちます。autoplay 属性がタグ内にある場合、preload 属性は無視されます。
controls='controls' は、音楽を表示するためのコントロール バーを設定します。
- <オーディオ src=「音楽/イエスタデイ・ワンス・モア」 .mp3" id="aud" 自動再生=「自動再生」 コントロール=「コントロール」 プリロード="自動">
- お使いのブラウザはオーディオ属性をサポートしていません。ブラウザを変更して閲覧してください。
- 音声>
このタグを取得すると、おめでとうございます。あなたのページで音楽を再生できるようになります。ただ、それではページが単調になってしまうので、ページ内に歌詞を同期して表示したり、再生する音楽も選択できるように工夫しました。したがって、この効果を実現するには、まず歌詞ファイルを lrc 形式でダウンロードし、次に音楽をフォーマットする必要があります。冒頭の音楽ファイルはこんな感じだったので
各歌詞を 2 桁の配列に挿入する必要があります。
歌詞をフォーマットするためのコードをここに添付します。
- //歌詞同期部分
- 関数 parseLyric(text) {
- //テキストを行ごとに分割し、配列 に格納します
- var lines = text.split('n'),
- //時刻の一致に使用される正規表現。一致結果は [xx:xx.xx] に似ています。
- パターン = /[d{2}:d{2}.d{2}]/g,
- //最終結果を保存する配列
- 結果 = []; //時間を置かずに行を削除します
- while (!pattern.test(lines[0])) {
- 行行 = 行.slice(1); };
- //「n」を使用して上記の配列を生成すると、結果の最後の要素は空の要素になり、ここで削除されます
- lines[lines.length - 1] .length
- === 0 && lines.pop(); lines.forEach(function(v /*配列要素の値*/ , i /*要素のインデックス*/ , a /*配列自体*/ ) { //時刻を抽出 [xx:xx.xx]
- var
- time =
- v.match(pattern), //歌詞を抽出
- v value
- = v.replace(pattern, ''); //1 行に複数の時間が含まれる可能性があるため、時間は [xx:xx.xx][xx:xx.xx][xx:xx.xx] の形式になる場合があります。さらに離れて time.forEach(function(v1, i1, a1) {
- //時間内の角括弧を削除すると、xx:xx.xx が得られます
- var t
- = v1
- .slice(1, -1).split(':'); //結果を最終配列にプッシュします result.push([parseInt(t[0], 10) * 60 parseFloat(t[1]), value]); });
- });
- //最後に、保存後に歌詞が正常に表示されるように、結果配列の要素を時間で並べ替えます
- result.sort(function(a, b) {
- a[0] - b[0] を返す
- ; });
- 結果を返す
- }
- この時点で、各音楽の歌詞を簡単に使用できるようになります。音楽を正常に切り替えるために、歌詞を取得してページに同期して表示する機能が必要です。コードは以下に添付されています。
- XML/HTML コード コンテンツをクリップボードにコピー
- function fn(sgname){
- $.get('music/' sgname '.lrc',function(data){
- var str=parseLyric(データ); for(var
- i=0,li;i<str.length;i ){
- li=$('<li>' str[i][1] 'li>'); $('#gc ul').append(li);
- }
- $('#aud')[0]
- .ontimeupdate=function(){//videoオーディオの現在の再生位置が変更されるとトリガーされます for (var
- i = 0, l = str.length; i < l; 🎜> if (this.currentTime /*現在の再生時間*/
- > str[i][0]) { //ページへ表示
- $('#gc ul').css('top',-i*40 200 'px'); //歌詞を上に移動します
- $('#gc ul li').css('color','#fff');
- $('#gc ul li:nth-child(' (i 1) ')').css('color','red') //現在再生されている歌詞を強調表示します
- }
- }
- if(this.ended){ //現在再生中の音楽の再生が終了したかどうかを判定します
- var
- songslen=$('.songs_list li').length for(var
- i= 0,val;i<ソングレン;i ){
- val=$('.songs_list li:nth-child(' (i 1) ')').text(); > if(val
- ==sgname){ i
- =(i==(songslen-1))?1:i 2; > sgname =$('.songs_list li:nth-child(' i ')').text(); //音楽が終了したら切り替えます音楽を演奏しています
- $('#gc ul').empty(); //歌詞をクリア $('#aud').attr('src','music/' sgname '.mp3');
- fn(sgname)
- 戻る
- }
- }
- }
- };
- });
- } fn($('.songs_list li:nth-child(1)').text());
- これで、音楽の歌詞が通常どおり同期してページに表示されるようになりました。ただし、まだ不足しているものが 1 つあります。それは、このリスト内の音楽をクリックして音楽を再生できるようにすることです。以下にコードを添付します。 HTML コード
コンテンツをクリップボードにコピー
css代码
- #gc{
- 幅: 400px;
- 高さ: 400ピクセル;
- 背景: 透明。
- マージン: 100px 自動;
- 色: #fff;
- フォントサイズ: 18px;
- オーバーフロー: 非表示;
- 位置: 相対。
- }
- #gc ul{
- 位置: 絶対;
- トップ: 200ピクセル;
- }
- #gc ul li{
- text-align: center;
- 高さ: 40px;
- 行の高さ: 40px;
- }
- .songs_cnt{
- float: 左;
- margin-top: 200px;
- 位置: 相対。
- }
- .songs_list{
- 背景色: rgba(0,0,0,.2);
- border-radius: 5px;
- float: 左;
- 幅: 250px;
- パディング: 15px;
- margin-left: -280px;
- }
- .songs_list li{
- 高さ: 40px;
- 行の高さ: 40px;
- フォントサイズ: 16px;
- カラー: rgba(255,255,255,.8);
- カーソル: ポインタ;
- }
- .songs_list li:hover{
- フォントサイズ: 20px;
- 色: rgba(255,23,140,.6);
- }
- .sel_song{
- 位置: 絶対;
- トップ: 50%;
- 幅: 40px;
- 高さ: 80px;
- margin-top: -40px;
- フォントサイズ: 16px;
- text-align: center;
- 背景色: 透明;
- ボーダー: 1px solid #2DCB70;
- フォントの太さ: 太字;
- カーソル: ポインタ;
- border-radius: 3px;
- フォントファミリー: サンセリフ;
- 遷移:すべて 2;
- -moz-transition:all 2;
- -webkit-transition:all 2s;
- -o-transition:all 2s;
- }
- .sel_song:hover{
- 色: #fff;
- 背景色: #2DCB70;
- }
- .songs_list li.active{
- 色: #f00;
- }
js代码
- $('.songs_list li:nth-child(1)').addClass('active');
- $('.songs_cnt').mouseenter(function () {
- var e=event||window.event;
- var tag= e.target||e.srcElement;
- if(tag.nodeName=='BUTTON'){
- $('.songs_list').animate({'marginLeft':'0px'},'slow');
- }
- });
- $('.songs_cnt').mouseleave(function () {
- $('.songs_list').animate({'marginLeft':'-280px'},'slow');
- });
- $('.songs_list li').each(function () {
- $(this).click(function () {
- $('#aud').attr('src','music/' $(this).text() '.mp3');
- $('#gc ul').empty();
- fn($(this).text());
- $('.songs_list li').removeClass('active');
- $(this).addClass('active');
- });
- })
はい、ここまで来ました。この歌のシンク効果にはいくつかの機能上の違いはありますが、HTML5 を使用したオーディオ マークによる歌のシンクの効果については、今日もここに到達しました。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

Klipsch Flexus Core 300はシリーズの最上位モデルで、同社のサウンドバーラインナップではすでに発売されているFlexus Core 200の上に位置します。クリプシュ氏によると、これはサウンドをさまざまな環境に適応できる世界初のサウンドバーだという。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。
