JavaScript 30 Day -- 10 自定义视频播放器
来源:互联网 发布:java审批系统源码 编辑:程序博客网 时间:2024/06/05 02:14
实现效果:
可以控制视频的播放速度和音量大小,可以快进/快退。
关键点:
为 video 元素添加自定义样式的播放控制面板 可滑动调节音量、播放速度 可通过按钮快进、回退 可点击视频画面或按钮播放或暂停视频播放 可点击或拖动进度条选择视频播放进度、video 对象的各种属性、方法和事件 paused //检查视频是否已暂停 play() //播放 pause() //暂停 currentTime //音频/视频播放的当前位置
javascript
var player = document.querySelector('.player');var video = document.querySelector('.viewer');var progress = document.querySelector('.progress');var progressBar = document.querySelector('.progress__filled');var toggle = document.querySelector('.toggle');var skipButtons = document.querySelectorAll('[data-skip]');var ranges = document.querySelectorAll('.player__slider');// console.log(video);// console.log(video.paused);//控制暂停和播放function togglePlay(){ //方法一 var method = video.paused ? 'play' : "pause"; video[method](); //方法二 // if(video.paused){ // video.play(); // }else{ // video.pause(); // }}//控制暂停和播放的iconfunction updataButton(){ toggle.innerHTML = video.paused ? '►' : '❚ ❚'; // toggle.textContent = video.paused ? '►' : '❚ ❚';}//快进/快退function skip(){ // console.log(this.dataset.skip); video.currentTime += parseFloat(this.dataset.skip);}//控制进度条function scrub(e){ var scrubTime = (e.offsetX / progress.offsetWidth) * video.duration; // console.log(video.duration + '---------1'); // console.log(progress.offsetWidth + '--------2'); // console.log(scrubTime + '------------3'); // console.log(e.offsetX + '------4'); // console.log((e.offsetX / progress.offsetWidth)); video.currentTime = scrubTime;}//控制播放速度function handleRangeUpdate(){ // console.log(this.value); // setProperty(this.name,this.value); video[this.name] = this.value;}//控制播放的进度function handleProgress(){ var perent = (video.currentTime / video.duration) * 100; progressBar.style.flexBasis = `${perent}%`;}video.addEventListener('click',togglePlay);progress.addEventListener('click',scrub);video.addEventListener('play',updataButton);video.addEventListener('pause',updataButton);video.addEventListener('timeupdate',handleProgress);toggle.addEventListener('click',togglePlay);skipButtons.forEach(button => button.addEventListener('click',skip));ranges.forEach(button => button.addEventListener("change",handleRangeUpdate));ranges.forEach(button => button.addEventListener("mousemove",handleRangeUpdate));
阅读全文
0 0
- JavaScript 30 Day -- 10 自定义视频播放器
- 自定义视频播放器
- 自定义视频播放器
- 自定义视频播放器
- 自定义视频播放器
- android自定义视频播放器
- AVPlayer自定义视频播放器
- iOS 自定义视频播放器
- 自定义简单视频播放器
- Android自定义视频播放器
- android 自定义播放器播放视频
- ios 使用AVPlayer自定义视频播放器
- ios 使用AVPlayer自定义视频播放器
- android surfaceView+mediaPlayer 自定义视频播放器
- Android自定义视频播放器(网络/本地)
- Android视频播放器Exoplayer自定义
- Android中自定义VideoView视频播放器
- 自定义视频播放器学到的
- springboot 注解方式整合mybatis (mysql数据库)
- 练习二
- OkHttp3Util--可用
- 当window.parent.fun();子页面调用父页面方法不起作用时
- 泛型集合
- JavaScript 30 Day -- 10 自定义视频播放器
- pytorch 与 BatchNormalization
- Java的将任意格式转换为JSON数据格式的工具类
- JAVA总结(流程控制2--循环结构)
- mybatis 中 foreach标签的几种用法
- 如何使用Eclipse自带的工具建立数据库连接
- 生成动态 SQL 语句的框架 MyBatis Dynamic SQL
- java接口和抽象类到底有哪些区别,什么时候该用接口什么时候该用抽象类
- 嵌入式C小秘密之你不知道的异常处理