1.列表页面
javascript
<template>
<div>
<ul>
<li class="item" v-for="(item,index) in list" :key="index" @click="turnPlay(item.videoUrl)">
<img :src="item.img" alt="">
<div class="btn">
<i class="el-icon-caret-right"></i>
</div>
<div class="mask">一行白鹭上青天一行白鹭上青天一行白鹭上青天</div>
</li>
</ul>
</div>
</template>
<script>
export default {
data () {
return {
list: [
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
},
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
},
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
},
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
},
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
},
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
},
{
img: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.png',
videoUrl: 'https://oss.ncsis.org.cn:9000/test/龙年拜年.mp4'
}
]
}
},
methods: {
turnPlay (url) {
window.open(`${window.location.origin}/#/playVideo?url=${url}`, '_blank')
}
}
}
</script>
<style lang="less" scoped>
ul {
display: flex;
padding: 20px;
flex-wrap: wrap;
border: 1px solid red;
box-sizing: border-box;
justify-content: space-between;
li {
width: calc(90% / 6);
height: 240px;
overflow: hidden;
border-radius: 6px;
cursor: pointer;
position: relative;
img {
width: 100%;
height: 100%;
object-fit: contain;
transition: all 1s ease 0s;
&:hover {
transform: scale(1.2);
}
}
.btn {
position: absolute;
top: 100px;
left: 50%;
width: 40px;
height: 40px;
background: rgba(0, 0, 0, 0.5);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
transform: translate(-50%, 0);
.el-icon-caret-right {
font-size: 30px;
color: #fff;
}
}
.mask {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 40px;
background: linear-gradient(transparent 0, rgba(0, 0, 0, 0.75) 100%);
line-height: 40px;
padding: 0 5px 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #fff;
}
}
}
</style>
2.视频页面
javascript
<template>
<div class="content">
<div class="item">
<div class="title">{{title}}</div>
<video width="1080" v-if="url" ref="videoRef" height="550" controlsList="nodownload" preload poster="" controls class="video">
<source :src="url" type="video/mp4">
</video>
</div>
</div>
</template>
<script>
export default {
data () {
return {
title: '一行白鹭上青天',
url: ''
}
},
created () {
this.url = this.$route.query.url
},
mounted () {
if (this.url) {
this.$refs.videoRef.play()
}
}
}
</script>
<style lang="less" scoped>
.content {
width: 100%;
height: 100vh;
background: #1b1b1b;
display: flex;
align-items: center;
justify-content: center;
.item {
display: flex;
flex-direction: column;
}
}
</style>
需要注意我这里跳转页面路由模式是'hash',如果是 'history',页面会跳转错误