javascript 30 — Custom HTML5 Video Player day11

blossom0417
1 min readOct 24, 2018

--

#done

  • ternary operator
const icon = video.paused? '►' : '||';
toggleButton.textContent = icon;
  • addEventListener — click, pause, play
  • div — transition, flex, transform
.player:hover .player__controls {
transform: translateY(0);
}
  • input[type=range]
  • video.volume = 1
  • video.playbackRate = 0.5
  • video.currentTime += parseFloat(this.dataset.skip);
ranges.forEach(input => input.addEventListener('change', slider));
ranges.forEach(input => input.addEventListener('mousemove', slider));
skipButtons.forEach(button => button.addEventListener('click',skip));

#Update volume and playbackRate

video[this.name] = this.value//
if(this.name === "volume"){
video.volume = this.value;
}else{
video.playbackRate = this.value;
}

# update time

  • addEventListener ‘timeupdate’
function timeUpdate(){
const percent = (video.currentTime / video.duration) * 100;
progressBar.style.flexBasis = `${percent}%`;
}

#event.offsetX — The offsetX property returns the x-coordinate of the mouse pointer, relative to the target element.

const scrubTime = (e.offsetX / progress.offsetWidth) * video.duration;
video.currentTime = scrubTime;

#element.offsetWidth — the viewable width of an element in pixels, including padding, border and scrollbar but not the margin.

#dragging progress bar

  • addEventListener ‘mousedown’, mouseup, mousemove
let mousedown = false;progress.addEventListener('click', scrub);
progress.addEventListener('mousemove', (e) => mousedown && scrub(e));
// progress.addEventListener('mousemove', (e) => {
// if(mousedown){
// scrub(e);
// }
// }
progress.addEventListener('mousedown', () => mousedown = true);
progress.addEventListener('mouseup', () => mousedown = false);

#ref

--

--

No responses yet