diff --git a/Sangmin/3/css/progress.css b/Sangmin/3/css/progress.css new file mode 100644 index 0000000..a00d259 --- /dev/null +++ b/Sangmin/3/css/progress.css @@ -0,0 +1,112 @@ +/* SOURCE: https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/ */ + +input[type="range"] { + -webkit-appearance: none; /* Hides the slider so that custom slider can be made */ + width: 100%; /* Specific width is required for Firefox. */ + background: transparent; /* Otherwise white in Chrome */ +} + +input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; +} + +input[type="range"]:focus { + outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */ +} + +input[type="range"]::-ms-track { + width: 100%; + cursor: pointer; + + /* Hides the slider so custom styles can be added */ + background: transparent; + border-color: transparent; + color: transparent; +} + +/* Special styling for WebKit/Blink */ +input[type="range"]::-webkit-slider-thumb { + -webkit-appearance: none; + border: 1px solid #000000; + height: 36px; + width: 16px; + border-radius: 3px; + background: #ffffff; + cursor: pointer; + margin-top: -14px; /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */ + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; /* Add cool effects to your sliders! */ +} + +/* All the same stuff for Firefox */ +input[type="range"]::-moz-range-thumb { + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; + border: 1px solid #000000; + height: 36px; + width: 16px; + border-radius: 3px; + background: #ffffff; + cursor: pointer; +} + +/* All the same stuff for IE */ +input[type="range"]::-ms-thumb { + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; + border: 1px solid #000000; + height: 36px; + width: 16px; + border-radius: 3px; + background: #ffffff; + cursor: pointer; +} + +input[type="range"]::-webkit-slider-runnable-track { + width: 100%; + height: 8.4px; + cursor: pointer; + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; + background: #3071a9; + border-radius: 1.3px; + border: 0.2px solid #010101; +} + +input[type="range"]:focus::-webkit-slider-runnable-track { + background: #367ebd; +} + +input[type="range"]::-moz-range-track { + width: 100%; + height: 8.4px; + cursor: pointer; + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; + background: #3071a9; + border-radius: 1.3px; + border: 0.2px solid #010101; +} + +input[type="range"]::-ms-track { + width: 100%; + height: 8.4px; + cursor: pointer; + background: transparent; + border-color: transparent; + border-width: 16px 0; + color: transparent; +} +input[type="range"]::-ms-fill-lower { + background: #2a6495; + border: 0.2px solid #010101; + border-radius: 2.6px; + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; +} +input[type="range"]:focus::-ms-fill-lower { + background: #3071a9; +} +input[type="range"]::-ms-fill-upper { + background: #3071a9; + border: 0.2px solid #010101; + border-radius: 2.6px; + box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; +} +input[type="range"]:focus::-ms-fill-upper { + background: #367ebd; +} diff --git a/Sangmin/3/css/style.css b/Sangmin/3/css/style.css new file mode 100644 index 0000000..11db700 --- /dev/null +++ b/Sangmin/3/css/style.css @@ -0,0 +1,75 @@ +@import url("https://fonts.googleapis.com/css?family=Questrial&display=swap"); + +* { + box-sizing: border-box; +} + +body { + font-family: "Questrial", sans-serif; + background-color: #666; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + max-height: 100vh; + margin: 0; +} + +h1 { + color: #fff; +} + +.screen { + cursor: pointer; + width: 60%; + background-color: #000 !important; + border-top-left-radius: 10px; + border-top-right-radius: 10px; +} + +.controls { + background: #333; + color: #fff; + width: 60%; + border-bottom-left-radius: 10px; + border-bottom-right-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + padding: 10px; +} + +.controls .btn { + border: 0; + background: transparent; + cursor: pointer; +} + +.controls .fa-play { + color: #28a745; +} + +.controls .fa-stop { + color: #dc3545; +} + +.controls .fa-pause { + color: #fff; +} + +.controls .timestamp { + color: #fff; + font-weight: bold; + margin-left: 10px; +} + +.btn:focus { + outline: 0; +} + +@media (max-width: 800px) { + .screen, + .controls { + width: 90%; + } +} diff --git a/Sangmin/3/img/poster.png b/Sangmin/3/img/poster.png new file mode 100644 index 0000000..a0d1413 Binary files /dev/null and b/Sangmin/3/img/poster.png differ diff --git a/Sangmin/3/index.html b/Sangmin/3/index.html new file mode 100644 index 0000000..5a48ba8 --- /dev/null +++ b/Sangmin/3/index.html @@ -0,0 +1,48 @@ + + + + + + + Custom Video Player + + + + + +

Custom Video Player

+ +
+ + + + 00:00 +
+ + + + + + diff --git a/Sangmin/3/script.js b/Sangmin/3/script.js new file mode 100644 index 0000000..60889e7 --- /dev/null +++ b/Sangmin/3/script.js @@ -0,0 +1,49 @@ +const video = document.querySelector("#video"); + +const playBtn = document.querySelector("#play"); +const playBtnProperty = playBtn.querySelector("i"); +const stopBtn = document.querySelector("#stop"); + +const progress = document.querySelector(".progress"); +const timestamp = document.querySelector(".timestamp"); + +const PutToPlay = () => { + playBtnProperty.classList.remove("fa-play"); + playBtnProperty.classList.add("fa-pause"); +}; +const PutToPause = () => { + playBtnProperty.classList.remove("fa-pause"); + playBtnProperty.classList.add("fa-play"); +}; + +const adjustVideoPlay = () => { + video.paused ? video.play() : video.pause(); + video.paused ? PutToPause() : PutToPlay(); +}; + +const resetTimestamp = () => { + video.currentTime = 0; + video.pause(); + PutToPause(); +}; + +const adjustProgressBar = () => { + progress.value = (video.currentTime / video.duration) * 100; + + let minutes = String(Math.floor(video.currentTime / 60)).padStart(2, "0"); + let seconds = String(Math.floor(video.currentTime % 60)).padStart(2, "0"); + + timestamp.innerHTML = `${minutes}:${seconds}`; +}; + +const updateProgress = () => { + video.currentTime = (progress.value * video.duration) / 100; +}; + +video.addEventListener("click", adjustVideoPlay); +playBtn.addEventListener("click", adjustVideoPlay); +stopBtn.addEventListener("click", resetTimestamp); + +video.addEventListener("timeupdate", adjustProgressBar); + +progress.addEventListener("change", updateProgress); diff --git a/Sangmin/3/videos/gone.mp4 b/Sangmin/3/videos/gone.mp4 new file mode 100644 index 0000000..2e84739 Binary files /dev/null and b/Sangmin/3/videos/gone.mp4 differ