vue video(视频)禁止用户拖动进度条,自定义组件实现,包含视频音量、暂停、播放、全屏、退出全屏 、播放进度,话不多说直接上代码。

这篇具有很好参考价值的文章主要介绍了vue video(视频)禁止用户拖动进度条,自定义组件实现,包含视频音量、暂停、播放、全屏、退出全屏 、播放进度,话不多说直接上代码。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 注意项目中本组件使用到了elementUI所以要确保项目中安装了

videoFree.vue

<template>
  <div ref="videoCons" style="width:100%;height:100%;" class="videCOns" @mousemove="move">
    <video @loadeddata="loadeddata" ref="videoEL" @timeupdate="upDate" :src="src" style="width:100%;height:100%;"></video>
    <div class="controsCon" :style="{opacity:opacity}">
        <div class="playBtn" @click="play">
            <img v-if="!isPlay" style="width: 30rem;height: 30rem;" src="https://xinyu22.oss-cn-beijing.aliyuncs.com/uploads/20230620/511d3a609cf5dd544e2b1142d26bcfdd.png">
            <img v-if="isPlay" style="width: 30rem;height: 30rem;" src="https://xinyu22.oss-cn-beijing.aliyuncs.com/uploads/20230620/e307ef78f36d81bceb192a010c3f403b.png">
        </div>
        <div class="volum">
            <img style="height:30rem;width: 30rem;" src="https://xinyu22.oss-cn-beijing.aliyuncs.com/uploads/20230620/fd1629b980b28212a283f2f462d69427.png">
            <div class="vCon">
                <el-slider @input="volum" v-model="volums" vertical style="height:100%;"></el-slider>
            </div>
        </div>
        <div class="allCon" @click="scaleEl">
            <img v-if="!full" style="width: 30rem;height: 30rem;" src="https://xinyu22.oss-cn-beijing.aliyuncs.com/uploads/20230620/8c191f53af505c6623b5c1a397eec42e.png">
            <img v-if="full" style="width: 30rem;height: 30rem;" src="https://xinyu22.oss-cn-beijing.aliyuncs.com/uploads/20230620/fe7d50559bbcb656e1316a0297aa1ed8.png">
        </div>
        <div class="jdt">
            <!-- v-if="!isNaN(parseInt(percent))" -->
            <el-progress
            :percentage="percent" 
            :show-text="false"></el-progress>
        </div>
        <div style="width: 100%;height: 20rem;display: flex;align-items: center;justify-content: space-between;color: #ccc;font-size: 14rem;padding:0 60rem;box-sizing: border-box;">
            <span>{{ curJd }}</span>
            <span>{{ allTime }}</span>
        </div>
    </div>
  </div>
</template>

js部分:因此为nuxtjs开发的项目,代码中this.$fmtS是一个格式化时间的工具类代码后面有

<script>
export default {
    props:{
        src:{
            type:String,
            default:''
        }
    },
    data(){
        return{
            video:null,
            isPlay:false,
            current:0,
            duration:0,
            volums:30,
            prefVom:0.3,
            percent:0,
            opacity:0,
            full:false,
            curJd:'00:00:00',
            allTime:'00:00:00',
            timer:null
        }
    },
    mounted(){
        this.video = this.$refs.videoEL
        this.video.volume = this.prefVom
    },
    beforeDestroy(){
        this.video.pause()
    },
    methods:{
        loadeddata(){
            const dur = this.video.duration
            this.duration = dur
            this.allTime = this.$fmtS(this.duration)
        },
        move(){
            this.opacity = 1
            this.timer && clearTimeout(this.timer)
            this.timer = setTimeout(()=>{
                this.opacity = 0
            },4000)
           
        },
        scaleEl(){
            const el = this.$refs.videoCons
            const isfull =  document.fullscreenElement ||
	                        document.msFullscreenElement ||
                            document.mozFullScreenElement ||
                            document.webkitFullscreenElement || false;
            if(!isfull){
                this.full = true
                if (el.requestFullscreen) {
                    el.requestFullscreen();
                } else if (el.mozRequestFullScreen){
                    el.mozRequestFullScreen();
                } else if (el.webkitRequestFullscreen){
                    el.webkitRequestFullscreen();
                } else if (el.msRequestFullscreen){
                    el.msRequestFullscreen();
                }
            }else{
                this.full = false
                if(document.exitFullScreen) {
                    document.exitFullScreen();
                } else if(document.mozCancelFullScreen) {
                    document.mozCancelFullScreen();
                } else if(document.webkitExitFullscreen) {
                    document.webkitExitFullscreen();
                } else if(document.msExitFullscreen) {
                    document.msExitFullscreen();
                }
            } 
        },
        upDate(){
            const cur = this.video.currentTime
            const dur = this.video.duration
            this.percent = (cur / dur) * 100
            this.curJd = this.$fmtS(cur)
        },
        play(){
            this.isPlay = !this.isPlay
            this.isPlay?this.video.play():this.video.pause()
            console.log(this.isPlay)
        },
        volum(e){
            this.volums = e
            this.prefVom = e / 100
            this.video.volume = this.prefVom
            console.log(this.video.volume)
        }
    }
}
</script>

css部分:文章来源地址https://www.toymoban.com/news/detail-707446.html

<style scoped>
.controsCon{
    position: absolute;
    width: 100%;
    bottom:0;
    left: 0;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}
.playBtn{
    height: 30px;
    width:30px;
    display: flex;
    align-items: center;
    cursor: pointer;
    margin-right:30px;
    position: relative;
    margin-left: 60rem;
}
.playIcon{
    font-size: 30px;
}
.volum{
    height: 30px;
    width:30px;
    display: flex;
    align-items: center;
    cursor: pointer;
    margin-right:30px;
    position: relative;
}
.vCon{
    position: absolute;
    top:-150px;
    left: 0;
    height: 150px;
    width: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
}
.volum:hover .vCon{
    opacity: 1;
}
.vCon>>> .el-slider__runway{
    background-color: #ccc;
}
.jdt{
    height: 10px;
    width: 100%;
    padding:0 60rem;
    box-sizing: border-box;
    margin:0 auto;
    margin-top:10rem;
}
.allCon{
    height: 30rem;
    width: 40rem;
    position: absolute;
    top:0;
    right: 60rem;
    cursor: pointer;
}
</style>

到了这里,关于vue video(视频)禁止用户拖动进度条,自定义组件实现,包含视频音量、暂停、播放、全屏、退出全屏 、播放进度,话不多说直接上代码。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js禁止用户通过video标签自带的进度条进行快进(包括键盘方向键快进),允许快退,下次播放时从上次观看时长继续播放。

    今天遇到一个需求,用户观看视频时不允许快进(包括键盘方向键的默认事件),允许快退,并且下次进入时从上次播放的时长继续播放。 以下是实现代码   看网上好多说用css来实现或者干掉video标签的controls,通过自己编写样式以及功能实现控制条播放、全屏等等,看了

    2024年02月12日
    浏览(39)
  • 前端Vue自定义轮播图视频播放组件 仿京东商品详情轮播图视频Video播放效果 可图片预览

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月15日
    浏览(53)
  • 在vue项目中使用video.js实现视频播放和视频进度条打点

    引入videojs插件 注意: controls 如果不是true的话,不会显示播放按钮 播放按钮默认在 左上角 ,是作者认为会遮挡内容考虑的,不过这个是可以根据参数修改的,只需要给video标签加一个class( vjs-big-play-centered )就可以了。 要实现的功能是视频的进度条上面有一些小点,然后

    2023年04月08日
    浏览(83)
  • 【vue3播放监控视频的组件video】

    @[组件解决视频不能播放问题],一个组件直接搞定!!!! 子组件 在父组件中直接引入即可 1.引入 2.使用

    2024年04月12日
    浏览(39)
  • vue项目element-ui上传组件自定义方法无法获取进度

    原因:element-ui中的up-load组件使用时,若用自定义上传http-request,会重新申明XMLHttpRequest,on-progress里的申明则被覆盖,无法使用该钩子,无法添加进度条 方案一:假进度条;写个假进度条优化用户体验,使用el-upload组件里on-change方法的status状态,配合定时器 ,以vue3为例 ,

    2024年02月15日
    浏览(52)
  • Vue-Html5-Video组件视频缓存本地技术

    Vue.js本身并不提供将视频缓存到本地的功能,但是可以通过使用HTML5的video标签和浏览器提供的缓存机制来实现。 具体实现步骤如下: 1. 在Vue组件中使用video标签来加载视频,如下所示: ```html video ref=\\\"videoPlayer\\\" controls source :src=\\\"videoUrl\\\" type=\\\"video/mp4\\\" /video ``` 其中,videoUrl是视频

    2024年02月16日
    浏览(50)
  • vue2 组件vue-video-player播放视频,支持hls格式

    参考教程:https://juejin.cn/post/6939898078526881823 官方:https://github.com/surmon-china/videojs-player 安装指令 安装指令要注意带上版本号,如果没有会默认使用最新版,最新版仅支持vue3,因此会出问题。 HLSPlay.vue 自定义组件代码 直接引用,如果组件配置了自动播放,则会自动播放。 更

    2024年02月11日
    浏览(52)
  • 解决mp4视频无法拖动进度条的问题

    现象: 海康威视的监控摄像头保存的视频,,mp4格式, 大小1G。用PotPlayer播放器进行播放, 不拖动进度条的话可以正常播放, 但拖动进度条后, 视频无法正常播放, 在 PotPlayer 中的表现就是只有进度条在走,视频画面停留在拖动前的画面。 PS: 同时保存的有多个监控视频,

    2024年02月03日
    浏览(275)
  • 【OpenCV+Qt】实现简易视频播放器——支持进度条拖动

    OpenCV实现视频播放器,其思路大致就是在线程中使用OpenCV中的VideoCapture循环读取本地视频的每一帧Mat,然后发送到界面转换成QImage进行显示,而进度条拖动则用到了VideoCapture中的set函数,进度条则是使用Qslider;并且通过自定义新的进度条类实现点击跳转功能; 效果: 1.进行

    2023年04月08日
    浏览(54)
  • 通过加速或跳过网页视频解决进度条无法拖动问题

    加速网页视频与跳过网页视频 1、加速网页视频 (1)F12打开开发者工具,然后Ctrl+Shift+C检查video元素 检查video元素 (2)控制台输入脚本 function accelerate() { let video = document.querySelector(‘video’); function play() { video.playbackRate = 15; // 加速至原速的15倍 video.play(); } setInterval(play, 100

    2024年02月03日
    浏览(428)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包