JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container1 ">
<div class="curtain1">
<div class="ratio-keeper">
<div class="panel-left"></div>
<div class="panel-right"></div>
<div class="wrap embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
<button class="playa embed-youtube-play" type="button" aria-label="Open"></button>
</div>
</div>
<div class="exit"></div>
</div>
</div>
<div class="container2 hide">
<div class="container ">
<div class="header">
<div class="ratio-keeper2"></div>
</div>
<div class="curtain">
<div class="ratio-keeper">
<div class="one-left"></div>
<div class="one-right"></div>
<div class=" embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
<button class="playb embed-youtube-play" type="button" aria-label="Open"></button>
</div>
</div>
</div>
<div class="curtain">
<div class="ratio-keeper">
<div class="two-left"></div>
<div class="two-right"></div>
<div class=" embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
<button class="playc embed-youtube-play" type="button" aria-label="Open"></button>
</div>
</div>
</div>
<div class="curtain">
<div class="ratio-keeper">
<div class="three-left"></div>
<div class="three-right"></div>
<div class="embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
<button class="playd embed-youtube-play" type="button" aria-label="Open"></button>
</div>
</div>
</div>
<div class="curtain">
<div class="ratio-keeper">
<div class="four-left"></div>
<div class="four-right"></div>
<div class="embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
...
CSS
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
.embed-youtube.active .embed-youtube-play{
display: none;
}
.container1 {
position: absolute;
left: 0;
right: 0;
min-height: 100%;
min-width: 255px;
display: flex;
padding: 8px 8px;
}
.curtain1 {
flex: 1 0 0;
margin: auto;
max-width: 640px;
border: 21px solid;
border-radius: 3.2px;
border-color: #000 #101010 #000 #101010;
position: relative;
}
.curtain1::before {
content: '';
position: absolute;
top: -2px;
left: -2px;
right: -2px;
bottom: -2px;
background: #0a0a0a;
border: 1px solid;
border-color: #000 #101010 #000 #101010;
;
}
.curtain1::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
outline: 1px solid #f91f6e;
pointer-events: none;
}
.curtain.slide::after {
outline: 1px solid #0059dd;
transition: outline 2s ease-in;
/* add this */
/*background-image: none;*/
}
.panel-left,
.panel-right {
position: absolute;
height: 100%;
width: 50%;
top: 0%;
transition: all 8s ease;
transition-delay: 300ms;
overflow: hidden;
pointer-events: none;
z-index: 1;
}
.panel-left {
left: 0;
}
.panel-right {
right: 0;
}
.panel-left::before,
.panel-right::before {
content: "";
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 200%;
background: url("https://img.youtube.com/vi/djV11Xbc914/maxresdefault.jpg");
background-position: 0 0;
background-size: cover;
background-repeat: no-repeat;
}
.panel-right::before {
left: -100%;
}
.curtain1.slide .panel-left {
transform: translateX(calc(-100% - 1px));
}
.curtain1.slide .panel-right {
transform: translateX(calc(100% + 1px));
}
.ratio-keeper2 {
position: relative;
height: 0;
padding-top: 42.85%;
margin: auto;
}
.header {
margin: auto auto 20px;
max-width: 640px;
border: 21px solid;
border-radius: 12px;
border-color: #000 #101010 #000 #101010;
position: relative;
background:...
JavaScript
const manageCover = (function makeManageCover() {
// const config = {};
function showCover(playButton) {
const cover = playButton.parentElement;
cover.classList.add("active");
}
function openCurtain(curtain) {
curtain.classList.add("slide");
}
function coverClickHandler(evt) {
const cover = evt.currentTarget;
showCover(cover);
const curtain = evt.currentTarget.parentElement.parentElement.parentElement;
openCurtain(curtain);
}
const covers = document.querySelectorAll(".embed-youtube-play");
covers.forEach(function addHandler(cover) {
cover.addEventListener("click", coverClickHandler);
});
function addClickToButtons(playButtons) {
function playButtonHandler(playButton) {
playButton.addEventListener("click", coverClickHandler);
}
}
function addCoverHandler(coverSelector, handler) {
const cover = document.querySelector(coverSelector);
cover.addEventListener("click", handler);
}
function init( /*selectors*/ ) {
//config.containers = document.querySelector(selectors.container);
//const allContainers = document.querySelector(".container");
//const playButtons = document.querySelector(selectors.playButton);
//const allPlaybuttons = document.querySelector(".embed-youtube-play");
addClickToButtons( /*allPlaybuttons*/ );
}
return {
addCoverHandler,
init
};
}());
const manageUI = (function makeManageUI() {
//const config = {};
function show(el) {
el.classList.remove("hide");
}
function hide(el) {
el.classList.add("hide");
}
function exitClickHandler() {
const thewrap = document.querySelector(".container2");
show(thewrap);
const cover = document.querySelector(".container1");
hide(cover);
}
function addClickToExit(exitButtons) {
exitButtons.forEach(function addExitButtonHandler(exitButtons) {
exitButtons.addEventListener("click", exitClickHandler);
});
}
function addExitHandlers(callback)...