效果:点击父页面中的图标,出现弹框开始播放视频,点击弹框中x图标关闭视频并关闭弹框

代码如下:

组件的代码  dialog组件

<template>
  <div class="container">
    <el-dialog title :visible="isShow" width="70%" @close="closeDialog">
      <video
        :src="videoUrl"
        controls
        autoplay
        class="video"
        width="100%"
      ></video>
    </el-dialog>
  </div>
</template>

<script>
export default {
  name: 'VideoDialog',
  data () {
    return {
      isShow: false,
      // 测试地址
      // videoUrl: 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4'
      videoUrl: ''
    }
  },

  created () {
    console.log(this.videoUrl, '视频')
  },
  methods: {
    // 视频播放
    playVideo (row) {
      this.isShow = true
      // 将接受的值赋值给src
      this.videoUrl = row.videoUrl
    },
    closeDialog () {
      // 关闭弹框
      this.isShow = false
      this.videoUrl = '' // 清空数据 关闭视频播放
    }
  }
}
</script>

<style scoped lang="scss">
::v-deep .el-dialog__headerbtn {
  top: -85px;
  right: 50%;
  padding: 0;
  border: none;
  outline: 0;
  cursor: pointer;
  font-size: 45px;
  height: 80px;
  width: 80px;
  border-radius: 50%;
  transform: translateX(50%);
  background-color: rgba(107, 107, 107, 0.5);
}
::v-deep .el-dialog__header {
  background: transparent;
  height: 0;
  padding: 0;
}
::v-deep .el-dialog__body {
  background: transparent;
  height: 0;
  padding: 0;
}
</style>

点击父组件中的 图标样式,触发子组件video播放

 

         

属性详解:


Video标签含有src、poster、preload、autoplay、loop、controls、width、height等几个属性,以及一个内部使用的标签<source>。Video标签内除了可以包含<source>标签外,还可以包含当指定的视频都不能播放时,返回的内容

(1) src属性和poster属性

src属性跟<img>标签的一样,这个属性用于指定视频的地址。而poster属性用于指定一张图片,在当前视频数据无效时显示(预览图)。视频数据无效可能是视频正在加载,可能是视频地址错误等等

(2) preload属性

此属性用于定义视频是否预加载。属性有三个可选择的值:none、metadata、auto。如果不使用此属性,默认为auto

None:不进行预加载。使用此属性值,可能是页面制作者认为用户不期望此视频,或者减少HTTP请求

Metadata:部分预加载。使用此属性值,代表页面制作者认为用户不期望此视频,但为用户提供一些元数据(包括尺寸,第一帧,曲目列表,持续时间等等)

Auto:全部预加载

(3) autoplay属性

Autoplay属性用于设置视频是否自动播放,是一个布尔属性。当出现时,表示自动播放,去掉是表示不自动播放

注意,HTML中布尔属性的值不是true和false。正确的用法是,在标签中使用此属性表示true,此时属性要么没有值,要么其值恒等于他的名字(此处,自动播放为<video autoplay />或者<video autoplay=”autoplay” />);而在标签中不使用此属性表示false(此处不进行自动播放为<video />)
(4) loop属性

loop属性用于指定视频是否循环播放,同样是一个布尔属性

(5) controls属性

Controls属性用于向浏览器指明页面制作者没有使用脚本生成播放控制器,需要浏览器启用本身的播放控制栏,控制栏须包括播放暂停控制,播放进度控制,音量控制等等

(6) width属性和height属性

控制播放视频的宽高

(7) source标签

Source标签用于给媒体(因为audio标签同样可以包含此标签,所以这儿用媒体,而不是视频)指定多个可选择的(浏览器最终只能选一个)文件地址,且只能在媒体标签没有使用src属性时使用

浏览器按source标签的顺序检测标签指定的视频是否能够播放(可能是视频格式不支持,视频不存在等等),如果不能播放,换下一个。此方法多用于兼容不同的浏览器。Source标签本身不代表任何含义,不能单独出现

此标签包含src、type、media三个属性

src属性:用于指定媒体的地址,和video标签的一样。

Type属性:用于说明src属性指定媒体的类型,帮助浏览器在获取媒体前判断是否支持此类别的媒体格式

Media属性:用于说明媒体在何种媒介中使用,不设置时默认值为all,表示支持所有媒介。与<style>标签的media属性一样

Logo

前往低代码交流专区

更多推荐