この記事では、ビデオタグを使用してビデオ再生を実装する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の実装
目次新しい HTML ファイルを作成します。初期テンプレートを作成するHTML の追加CSS パディ...
非常に便利な機能group_concat() について、マニュアルには次のように記載されています: ...
携帯モバイル ページは Chrome および Safari とのみ互換性があればよいため、カスタム ...
問題: JDBCを使用してMySQLデータベースに接続すると、中国語の文字を挿入すると文字化けした文...
Docker は 2013 年のリリース以来、広く注目され、ソフトウェア業界を変える可能性を秘めてい...
腹筋コマンドの原則Apache の ab コマンドは、マルチスレッドの同時リクエストをシミュレートし...
目次1. スタックの定義2. JSスタックの調査1. スタックとヒープ2. 基本型と参照型3. 値渡...
悲観的ロック悲観的ロックは、データを悲観的であるとみなします。データをクエリするときに、ロックを追加...
Linux がすべてのコマンドをサポートしていない場合はどうすればいいですか?すべてのLinuxコマ...
目次01 レプリカセットアーキテクチャ02 MySQL Shellの紹介とインストール03 My...
MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステー...
仕事の都合上、最近 HTML を PDF に変換する機能について調べることに時間を費やしました。 H...
<br />前回のCSSに関する記事は、多くの人にあまり理解されませんでした。そのため、...
目次序文Vue Nativeの機能宣言的レンダリング双方向バインディングVue.js エコシステムの...
require メソッドの読み込みルールキャッシュからの読み込みを優先するコアモジュールパス形式のモ...