この記事では、ビデオタグを使用してビデオ再生を実装するVueの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。 プロジェクト要件:ビデオのスクロール バーを動的に表示し、ビデオのダウンロードを禁止し、再生中に 5 秒ごとに現在の継続時間を更新し、10 分ごとにビデオを一時停止してプロンプトを表示します。 具体的な使い方は以下のとおりです <テンプレート> <!-- ビデオ コンポーネント --> <div id="common-video" class="h-100"> <div:class="{isShow:control}" class="h-100"> <ビデオ ref="私のビデオ" :poster="ポスター" :src="src" :controls="コントロール" oncontextmenu="false を返す" @timeupdate="時間更新" コントロールリスト="nodownload" クラス="ビデオボックス" </ビデオ> <画像 src="@/assets/images/playbtn.png" 代替案="" @click="ビデオを操作する" class="ポインタ操作ボタン" :class="{ 'フェードアウト': videoState }" /> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ 名前: "CommonVideo", データ() { 戻る { videoState: false, // ビデオ再生ステータス // 学習時間 studyTime: { currentTime: 0, // 現在の学習時間 期間: 0 // 合計時間}, timer: {}, // タイマー pauseTimer: {} // タイマーを一時停止 }; }, /** * @param ポスター表示画像* @param src ビデオリソース* @param controls コントロールを表示するかどうか* @param control コントロール* @param videoData 基本ビデオデータ*/ 小道具: { ポスター: タイプ: 文字列、 必須: false、 デフォルト: "" }, ソース: { タイプ: 文字列、 必須: true }, コントロール: { タイプ: ブール値、 必須: false、 デフォルト: true }, コントロール: { タイプ: ブール値、 必須: false、 デフォルト: false }, ビデオデータ: { タイプ: オブジェクト、 必須: true } }, マウント() { // ビデオの再生をリッスンします this.$refs.myVideo.addEventListener("play", () => { console.log("ビデオが再生中です"); タイマーをオープンします。 }); // ビデオの一時停止をリッスンします。this.$refs.myVideo.addEventListener("pause", () => { console.log("ビデオが停止しました"); this.closeTimer(); }); }, メソッド: { // タイマーを開く openTimer() { this.timer = setInterval(() => { this.$emit("videoStudyTime", this.studyTime); }, 5000); }, // タイマーを閉じる closeTimer() { タイマー間隔をクリアします。 this.$emit("videoStudyTime", this.studyTime); }, // 一時停止タイマーを開く openPauseTimer() { this.pauseTimer = setInterval(() => { this.hintOperate(); }, 600000); }, // 一時停止タイマーを閉じる closePauseTimer() { 間隔をクリアします(this.pauseTimer); }, // ヒント操作 hintOperate() { this.operateVideo(); this.$alert("確認して学習を続けるにはクリックしてください", "プロンプト", { confirmButtonText: "確認", 確認ボタンクラス: "ヒントボタン"、 表示閉じる: false, コールバック: アクション => { this.$refs.myVideo.currentTime = this.videoData.currentTime; ビデオを操作する this.openPauseTimer(); } }); }, // 現在の再生位置を取得する timeupdate(e) { this.studyTime.currentTime = e.target.currentTime; this.studyTime.duration = e.target.duration ? e.target.duration : 0; }, // ビデオの再生と一時停止を操作するoperateVideo() { (!this.src)の場合{ this.$message({ message: "ビデオリソースがありません。他のビデオを確認してください!" }); false を返します。 } (this.$refs.myVideo.paused)の場合{ this.$refs.myVideo.play(); this.videoState は true です。 } それ以外 { this.$refs.myVideo.pause(); this.videoState = false; } } }, 時計: //監視操作 videoData(val, oldVal) { const { currentTime, 継続時間 } = val; 現在の時刻 && 継続時間 && 現在の時刻 < 継続時間) { this.hintOperate(); } } } }; </スクリプト> <スタイル lang="less"> #共通ビデオ{ 位置: 相対的; .ビデオボックス{ ボックスのサイズ: 境界線ボックス; 境界線: 0; 表示: ブロック; 幅: 100%; 高さ: 100%; アウトライン: なし !important; } .isShow{ // 進行状況バー video::-webkit-media-controls-timeline { 表示: なし; } } ビデオ::-webkit-media-controls-再生ボタン { 可視性: 非表示; } .操作ボタン{ 表示: ブロック; 幅: 60ピクセル; 高さ: 60px; 位置: 絶対; 上: calc(50% - 30px); 左: calc(50% - 30px); } .operate-btn:hover { 不透明度: 0.8; } .フェードアウト{ 不透明度: 0; } } </スタイル> 注記: 1. CSSスタイルのisShow属性を使用して、ビデオのスクロールバーを動的に表示する 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL 最適化チュートリアル: 大規模なページングクエリ
>>: 静的リソースファイルのアクセスログをフィルタリングするNginxの実装
この問題を理解する前に、まず MySQL テーブルのストレージ構造を確認し、次にバイナリ ツリー、マ...
この記事では、参考までに、簡単な計算機を実装するためのJavaScriptの具体的なコードを紹介しま...
序文フッター領域を下部に固定します。ページの高さや幅に関係なく、モバイル メニューと同様に、フッター...
アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...
誤って source.list の内容を変更し、一連のエラーが発生した場合は、デフォルトのソース フ...
1. システム構成1. sudoパスワードをオフにするsudo コマンドを使用するたびにパスワード...
プラットフォームが成長し続けるにつれて、プロジェクトの研究開発は、開発者向けのさまざまな外部環境、特...
目次1. フォークの起源2. 初期のUNIXオーバーレイ技術3. UNIXに導入される前のフォークの...
インデックスを追加すると、クエリの効率が向上します。インデックスを追加するということは、ドキュメント...
ザビックス2019/10/12 チェンシン参照するhttps://www.zabbix.com/do...
Server-Uソフトウェアの紹介Server-U は非常に強力なファイル マネージャーです。FTP...
この記事では、centos7 環境でソース コードから mysql5.7.16 をインストールする方...
インストールパス: /application/mysql-5.5.56 1. 事前準備MySQL 依...
目次1. Vue環境を構築する2. Vue スキャフォールディングツール3. プロジェクトを作成する...
この記事では、主にリスト構造を使用して水平ナビゲーション構造を設定する 2 つの方法を紹介します。こ...