From ce6d4baacf1b8bc9946216f33cbe723a3a686f05 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期四, 29 二月 2024 15:46:18 +0800
Subject: [PATCH] feat:点击播放视频
---
src/views/daoAnOffice/right/publicize/index.vue | 88 +++++++++++++++++++++++++++++++++++++++-----
1 files changed, 78 insertions(+), 10 deletions(-)
diff --git a/src/views/daoAnOffice/right/publicize/index.vue b/src/views/daoAnOffice/right/publicize/index.vue
index ab8a1f1..ef7c5dd 100644
--- a/src/views/daoAnOffice/right/publicize/index.vue
+++ b/src/views/daoAnOffice/right/publicize/index.vue
@@ -5,14 +5,15 @@
<RightTitle title="浜ら�氬浼�">
<template #top>
<div class="select-container flex">
- <div class="item whitespace-no-wrap cursor-pointer" v-for="item in selectItems" :key="item.itemIndex">
+ <div class="item whitespace-no-wrap cursor-pointer" :class="{ 'select-active': item.isActive }"
+ v-for="item in selectItems" :key="item.itemIndex" @click="changeSelect(item)">
{{ item.name }}
</div>
</div>
</template>
<template #content>
<div class="content-container flex flex-wrap justify-between content-between">
- <div class="content-item" v-for="item in contentList" :key="item.itemIndex">
+ <div class="content-item" v-for="item in contentList" :key="item.itemIndex" @click="openVideo(item)">
<div class="content-wrapper">
<div class="content-video-info">
<img :src="item.image" class="video-cover">
@@ -30,18 +31,28 @@
</div>
</template>
</RightTitle>
+
+ <div class="video-container" v-show="isShowVideo">
+ <div class="video-wrapper">
+ <video :src="testVideo" ref="videoDom" class="video-player" controls></video>
+ <div class="close-btn flex justify-center items-center" @click="closeVideo">X</div>
+ </div>
+ </div>
</template>
-<script setup lang="ts">
+<script setup>
import testImage from '@/assets/img/test_img/閬撳畨鍔�.png';
import RightTitle from "@/components/right-title";
import { ref } from 'vue';
-
+// 娴嬭瘯瑙嗛
+const testVideo = 'https://www.w3schools.com/html/movie.mp4';
+const isShowVideo = ref(false);
+const videoDom = ref(null);
const selectItems = ref([
- { itemIndex: 1, name: '浜ら�氬浼�', isActive: false },
- { itemIndex: 2, name: '浜ら�氫簨鏁�', isActive: true },
+ { itemIndex: 1, name: '浜ら�氬浼�', isActive: true },
+ { itemIndex: 2, name: '浜ら�氫簨鏁�', isActive: false },
]);
const contentList = ref([
@@ -83,6 +94,22 @@
},
]);
+const changeSelect = (selectItem) => {
+ selectItems.value.map(item => item.isActive = false);
+ selectItem.isActive = true;
+}
+
+const openVideo = () => {
+ isShowVideo.value = true;
+ videoDom.value.play();
+}
+
+const closeVideo = () => {
+ isShowVideo.value = false;
+ videoDom.value.pause();
+}
+
+
</script>
<style scoped lang="scss">
@@ -97,6 +124,11 @@
background: rgba(67, 102, 155, 0.4);
border: 1px solid rgba(47, 91, 157, 0.8);
flex-shrink: 0;
+ color: #5B83BD;
+}
+
+.select-active {
+ color: #fff;
}
.item:last-child {
@@ -110,7 +142,7 @@
background-color: rgba(17, 34, 58, 0.6);
border: 1px solid rgba(47, 91, 157, 0.8);
padding: 22px 20px;
-
+
}
.content-item {
@@ -119,9 +151,6 @@
cursor: pointer;
// margin-bottom: 24px;
}
-// .content-item:last-child {
-// margin-bottom: 0px;
-// }
.content-video-info {
width: 100%;
@@ -139,15 +168,54 @@
font-size: 45px;
opacity: 0.7;
}
+
.video-cover {
width: 100%;
height: 100%;
object-fit: fill;
}
+
.content-video-name {
text-align: center;
margin-top: 16px;
font-size: 12px;
color: rgba(91, 131, 189, 1);
}
+
+.video-container {
+ position: fixed;
+ z-index: 99999;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+
+ .video-wrapper {
+ position: absolute;
+ width: 70%;
+ height: 80%;
+ left: 50%;
+ top: 50%;
+ transform: translate(-50%, -50%);
+ background-color: rgba(0, 0, 0, 0.9);
+
+ }
+
+ .video-player {
+ width: 100%;
+ height: 100%;
+ }
+}
+
+.close-btn {
+ position: absolute;
+ right: -80px;
+ top: -10px;
+ width: 40px;
+ height: 40px;
+ border: 2px solid #fff;
+ border-radius: 50%;
+ font-size: 18px;
+ cursor: pointer;
+}
</style>
\ No newline at end of file
--
Gitblit v1.8.0