JavaScript 30 Day -- 10 自定义视频播放器
2017-12-21 12:54
656 查看
实现效果:
关键点:
javascript
可以控制视频的播放速度和音量大小,可以快进/快退。
关键点:
为 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(); // } } //控制暂停和播放的icon function 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));
相关文章推荐
- JavaScript 30 Day -- 01 JavaScript Drum Kit
- JavaScript 30 Day -- 04 可伸缩的图片墙
- 【备战秋招Day 10】经典面试题37-40及在线编程题28-30答案
- JavaScript 30 Day -- 02 时钟
- (30 hackdays day 10) Material design - 可用的Material
- 10-30上午测试(DAY 2 R1)
- JavaScript 30 Day -- 12 图片的滑入滑出
- JavaScript 30 Day -- 17 使用reduce进行时间累加
- 【JavaScript】(10)——实例:移动端视频播放器
- JavaScript 30 Day -- 09 Shift 的多选功能
- JavaScript 30 Day -- 07 彩虹画笔
- JavaScript 30 Day -- 03 CSS Variables
- JavaScript 30 Day -- 05 快速匹配
- JavaScript 30 Day -- 06 Array
- JavaScript 30 Day -- 11 键盘输入的验证
- JavaScript 30 Day -- 13 JS中的引用与复制
- 史上自定义 JavaScript 函数Top 10
- JavaScript 30 Day -- 14 LocalStorage
- (30 hackdays day 10) Material design - 可用的Material
- 史上自定义 JavaScript 函数Top 10