この記事では、弾幕効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 実装のアイデア1. 静的ページのフレームワークを最初に記述する <div id='父'> <div id="top"> <video src="./video/s10_2020129112346.mp4" 自動再生ミュートループをコントロールします></video> <!-- コントロールは標準のビデオ コントロールを表示します。自動再生ビデオが自動的に再生されます (muted 属性が設定されている場合にのみ自動的に再生されます) ミュート 無音再生 ループ ループ再生 --> </div> <div id="下"> <入力タイプ="テキスト" id="txt"> <input type="button" id="btn" value="送信"> </div> </div> 2. シンプルなCSSコードを追加してページをより美しくする *{ /*ページの初期化*/ マージン: 0; パディング: 0; } 体{ 背景色: バーリーウッド; } #父親{ 幅: 800ピクセル; 高さ: 550px; マージン: 50px 自動; } #トップ{ 幅: 800ピクセル; 高さ: 500px; } ビデオ{ 幅: 800ピクセル; 高さ: 500px; } #底{ 幅: 800ピクセル; 高さ: 50px; 背景色: #000; テキスト配置: 中央; 行の高さ: 50px; } このような単純な静的ページが完成し、残りは JS コードを記述するだけです。 3. 後で使用するためにいくつかの関数をカプセル化しましょう。 //ランダムに色を生成する関数 rgb () { r = Math.floor(Math.random() * 256); とします。 g = Math.floor(Math.random() * 256); とします。 b = Math.floor(Math.random() * 256) とします。 'rgb('+r+','+g+','+b+')' を返します } //指定された範囲の整数データを生成する function stochastic(max,min){ Math.floor(Math.random()*(max-min)+min) を返します。 } 送信する箇条書きコメントはspanタグ内に配置されます。ここでは、span を#topに配置するために位置指定を使用する必要があります (son と father は同じ位置にあります) //<div id='#top'></div> に span タグを追加します。function barrage(){ span = document.createElement("span"); とします。 span.innerHTML = txt.値; span.style.color = rgb(); //箇条書きの色 span.style.fontSize = stochastic(50,12) + 'px'; //フォントサイズ span.style.top = stochastic(420,0) + 'px'; //位置 let right = -2000 span.style.right = right + 'px' //右からの距離 tops.appendChild(span); //<div id='#top'></div> に span タグを追加 //タイマーを使用して弾幕画面の動きを実現 let tiem = setInterval(()=>{ 右++; span.style.right = 右 + 'px' if( 右 > 800 ) { tops.removeChild(span); //弾幕画面が動画から外れたら、要素を直接破棄する clearInterval(tiem); //タイマーをオフにする} },10)//速度が遅すぎると思われる場合は、ここで調整できます} 4.関数がカプセル化されたので、次のように呼び出します。 btn = document.getElementById('btn'); とします。 //ボタンにクリックイベントを追加します btn.onclick = ()=>{ if(txt.value=='') return; // ユーザー入力が空の場合は、直接 barrage() に戻ります。 txt.value = ''; // 入力ボックスをクリアします} //キーボードリスニングイベント(Enter)を追加する document.addEventListener('keydown', 関数(e) { (e.keyCode == 13)の場合{ if(txt.value=='') 戻り値: 弾幕(); txt.値 = ''; } }); 最後に、すべてのコードを添付します。お役に立てば幸いです。 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <title>js 弾幕効果</title> <スタイル> *{ マージン: 0; パディング: 0; } 体{ 背景色: バーリーウッド; } #父親{ 幅: 800ピクセル; 高さ: 550px; マージン: 50px 自動; } #トップ{ 幅: 800ピクセル; 高さ: 500px; 位置: 相対的; overflow:hidden; /*オーバーフロー非表示*/ } ビデオ{ 幅: 800ピクセル; 高さ: 500px; object-fit:fill; /*指定されたコンテナの高さと幅に適応します*/ } #底{ 幅: 800ピクセル; 高さ: 50px; 背景色: #000; テキスト配置: 中央; 行の高さ: 50px; } スパン{ 位置: 絶対; 右: 0; トップ:0; } </スタイル> </head> <本文> <div id='父'> <div id="top"> <video src="./video/s10_2020129112346.mp4" 自動再生ミュートループをコントロールします></video> </div> <div id="下"> <入力タイプ="テキスト" id="txt"> <input type="button" id="btn" value="送信"> </div> </div> <スクリプト> txt = document.getElementById('txt') とします。 btn = document.getElementById('btn'); とします。 tops = document.getElementById('top'); とします。 //ボタンにクリックイベントを追加します btn.onclick = ()=>{ if(txt.value=='') return; // ユーザー入力が空の場合は、直接 barrage() に戻ります。 txt.value = ''; // 入力ボックスをクリアします} //キーボードリスニングイベント(Enter)を追加する document.addEventListener('keydown', 関数(e) { (e.keyCode == 13)の場合{ if(txt.value=='') return; // ユーザー入力が空の場合は、直接 barrage() に戻ります。 txt.value = ''; // 入力ボックスをクリアします} }); //ランダムに色を生成する関数 rgb () { r = Math.floor(Math.random() * 256); とします。 g = Math.floor(Math.random() * 256); とします。 b = Math.floor(Math.random() * 256) とします。 'rgb('+r+','+g+','+b+')' を返します } //指定された範囲の整数データを生成する function stochastic(max,min){ Math.floor(Math.random()*(max-min)+min) を返します。 } //<div id='#top'></div> に span タグを追加します。function barrage(){ span = document.createElement("span"); とします。 span.innerHTML = txt.値; span.style.color = rgb(); span.style.fontSize = stochastic(50,12) + 'px'; span.style.top = stochastic(420,0) + 'px'; span.style.right = -200 + 'px'; トップス.appendChild(span); 右を -200 にします。 間隔をsetInterval(()=>{とする 右++; span.style.right = 右 + 'px' if( 右 > 800 ) { tops.removeChild(span); //弾幕画面が動画から外れたら要素を破棄する clearInterval(tiem); //タイマーをオフにする} },10)//速度が遅すぎると思われる場合は、ここで調整できます} </スクリプト> </本文> </html> 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: MySQL 8.0.21 無料インストール版 設定方法 グラフィックチュートリアル
この記事では、マウスの動きを追跡するためのJavaScriptの具体的なコードを参考までに紹介します...
DTD はマークアップの文法規則のセットです。これは XML 1.0 仕様の一部であり、HTML フ...
目次1. Ant Design Vueを統合する2. コンポーネントの使用1. 完全な引用2. コン...
学習プロセス中にプッシュ イメージが常にタイムアウトすることがわかったため、Alibaba Clou...
目次1. 重複排除前後のデータの比較2. 使い方1. フィルターとマップを使用する2. 削減を使用す...
mysql explain コマンドは、MySQL がインデックスを使用して選択ステートメントを処理...
Ubuntu コマンドライン ウィンドウで次の操作を実行します。 1. 仮想環境をインストールする...
前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...
イギリスBFC: ブロック書式設定コンテキストBFCレイアウトルール内箱は縦方向に次々に配置されます...
この記事の例では、簡単なショッピングカート機能を実現するためのjsの具体的なコードを参考までに共有し...
この記事の例では、クールなフロントエンドページのスライド検証の具体的なコードを参考までに共有していま...
コンピュータ サイエンスで最も一般的に使用され、議論されているデータ構造の 1 つは、二分探索木です...
--データベースに接続するとき、ホストとユーザーのマッチングルール公式ドキュメント: https:/...
目次パーティション分割メカニズムSELECTクエリINSERT操作DELETE操作更新操作パーティシ...
Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...