<div class="container1 ">
<div class="curtain1">
<div class="ratio-keeper">
<div class="video-one"></div>
<div class="wrap embed-youtube ">
<div class="video embed-youtube " data-id="djV11Xbc914">
</div>
<button class="playa embed-youtube-play iframe" type="button" aria-label="Open"></button>
</div>
</div>
<div class="exit"></div>
</div>
</div>
<div class="container2 hide">
<div class="container3 ">
<div class="container ">
<div class="curtain">
<div class="ratio-keeper">
<div class="video-two"></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="video-three"></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="video-four"></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="video-five"></div>
<div class="embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
<button class="playe embed-youtube-play" type="button" aria-label="Open"></button>
</div>
</div>
</div>
<div class="curtain">
<div class="ratio-keeper">
<div class="video-six"></div>
<div class="embed-youtube">
<div class="video embed-youtube" data-id="djV11Xbc914">
</div>
<button class="playf embed-youtube-play" type="button" aria-label="Open"></button>
</div>
</div>
</div>
</div>
</div>
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
body {
background: #302b63;
}
.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: 12px;
border-color: #000 #101010 #000 #101010;
position: relative;
}
.curtain1::before {
content: "";
position: absolute;
top: -2px;
left: -2px;
right: -2px;
bottom: -2px;
background: radial-gradient(circle, transparent 0% 35%, #0a0a0a 35%);
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;*/
}
.video-one {
position: absolute;
height: 100%;
width: 100%;
top: 0;
transition: all 8s ease-in 0s;
transition-delay: 300ms;
background: linear-gradient(
45deg,
#0000 7px,
rgb(113, 121, 126) 0 7.5px,
#0000 0 10px
),
linear-gradient(-45deg, #0000 7px, rgb(113, 121, 126) 0 7.5px, #0000 0 10px),
url(https://i.imgur.com/ig4UO7B.jpg);
background-position: 0 0, 0 0, 0 0;
background-size: 10px 10px, 10px 10px, cover;
background-repeat: repeat, repeat, no-repeat;
filter: drop-shadow(0 0 5px #000);
z-index: 1;
}
.curtain1.slide .video-one {
/* transform: translateY(-100%);*/
animation: fadeOut 2s ease-in 700ms forwards;
}
@keyframes fadeOut {
to {
opacity: 0;
}
}
.container {
position: absolute;
left: 0;
right: 0;
min-height: 100%;
padding: 8px 8px;
}
.curtain {
margin: auto auto 20px;
max-width: 640px;
border: 21px solid;
border-radius: 12px;
border-color: #000 #101010 #000 #101010;
position: relative;
}
@media screen and (max-width: 500px) {
.curtain {
margin-bottom: 10px;
}
}
.curtain::before {
content: "";
position: absolute;
top: -2px;
left: -2px;
right: -2px;
bottom: -2px;
background: #0a0a0a;
border: 1px solid;
border-color: #000 #101010 #000 #101010;
}
.curtain::after {
content: "";
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
outline: 1px solid #333;
pointer-events: none;
}
.curtain.slide::after {
outline: 1px solid #0059dd;
transition: outline 2s ease-in;
}
.ratio-keeper {
position: relative;
height: 0;
padding-top: 56.25%;
margin: auto;
overflow: hidden;
}
.video-two {
position: absolute;
height: 100%;
width: 100%;
top: 0;
transition: all 8s ease-in 0s;
transition-delay: 300ms;
background: url("https://i.imgur.com/r7jVjFW.png");
background-position: 0 0;
background-size: cover;
background-repeat: no-repeat;
z-index: 1;
}
.curtain.slide .video-two {
transform: translateY(-100%);
}
.video-three {
position: absolute;
height: 100%;
width: 100%;
top: 0;
transition: all 8s ease-in 0s;
transition-delay: 300ms;
background: linear-gradient(
45deg,
#0000 7px,
rgb(113, 121, 126) 0 7.5px,
#0000 0 10px
),
linear-gradient(-45deg, #0000 7px, rgb(113, 121, 126) 0 7.5px, #0000 0 10px),
url(https://i.imgur.com/caaqjmV.jpg);
background-position: 0 0, 0 0, 0 0;
background-size: 10px 10px, 10px 10px, cover;
background-repeat: repeat, repeat, no-repeat;
filter: drop-shadow(0 0 5px #000);
z-index: 1;
}
.curtain.slide .video-three {
transform: translateY(-100%);
}
.video-four {
position: absolute;
height: 100%;
width: 100%;
top: 0;
transition: all 8s ease-in 0s;
transition-delay: 300ms;
background: linear-gradient(
45deg,
#0000 7px,
rgb(113, 121, 126) 0 7.5px,
#0000 0 10px
),
linear-gradient(-45deg, #0000 7px, rgb(113, 121, 126) 0 7.5px, #0000 0 10px),
url(https://i.imgur.com/caaqjmV.jpg);
background-position: 0 0, 0 0, 0 0;
background-size: 10px 10px, 10px 10px, cover;
background-repeat: repeat, repeat, no-repeat;
filter: drop-shadow(0 0 5px #000);
z-index: 1;
}
.curtain.slide .video-four {
transform: translateY(-100%);
}
.video-five {
position: absolute;
height: 100%;
width: 100%;
top: 0;
transition: all 8s ease-in 0s;
transition-delay: 300ms;
background: linear-gradient(
45deg,
#0000 7px,
rgb(113, 121, 126) 0 7.5px,
#0000 0 10px
),
linear-gradient(-45deg, #0000 7px, rgb(113, 121, 126) 0 7.5px, #0000 0 10px),
url(https://i.imgur.com/caaqjmV.jpg);
background-position: 0 0, 0 0, 0 0;
background-size: 10px 10px, 10px 10px, cover;
background-repeat: repeat, repeat, no-repeat;
filter: drop-shadow(0 0 5px #000);
z-index: 1;
}
.curtain.slide .video-five {
transform: translateY(-100%);
}
.video-six {
position: absolute;
height: 100%;
width: 100%;
top: 0;
transition: all 8s ease-in 0s;
transition-delay: 300ms;
background: linear-gradient(
45deg,
#0000 7px,
rgb(113, 121, 126) 0 7.5px,
#0000 0 10px
),
linear-gradient(-45deg, #0000 7px, rgb(113, 121, 126) 0 7.5px, #0000 0 10px),
url(https://i.imgur.com/caaqjmV.jpg);
background-position: 0 0, 0 0, 0 0;
background-size: 10px 10px, 10px 10px, cover;
background-repeat: repeat, repeat, no-repeat;
filter: drop-shadow(0 0 5px #000);
z-index: 1;
}
.curtain.slide .video-six {
transform: translateY(-100%);
}
/*.embed-youtube img,*/
.embed-youtube iframe,
.embed-youtube .embed-youtube-play,
.embed-youtube .embed-youtube-play:before {
position: absolute;
}
.embed-youtube iframe {
height: 100%;
width: 100%;
top: 0;
left: 0;
/*animation: fadein 3s ease-in 0s forwards;*/
}
.embed-youtube iframe {
}
@keyframes fade {
0% {
opacity: 0;
visibility: hidden;
}
100% {
opacity: 1;
visibility: visible;
}
}
.embed-youtube .embed-youtube-play {
-webkit-appearance: none;
appearance: none;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
display: flex;
justify-content: center;
align-items: center;
width: 90px;
height: 90px;
border-radius: 50%;
cursor: pointer;
border: 9px solid blue;
background: transparent;
filter: drop-shadow(3px 3px 3px #000000b3);
z-index: 1;
}
.embed-youtube-play::before {
content: "";
width: 0;
height: 0;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
border-left: 27px solid blue;
transform: translateX(4px);
}
.embed-youtube-play:hover {
box-shadow: 0 0 0 5px rgba(43, 179, 20, 0.5);
}
.embed-youtube-play:focus {
outline: 0;
box-shadow: 0 0 0 5px rgba(0, 255, 255, 0.5);
}
.exit {
position: absolute;
top: auto;
bottom: -47.63px;
margin: auto;
right: 0;
left: 0;
width: 47px;
height: 47px;
cursor: pointer;
border-radius: 100%;
background: transparent;
border: 5px solid red;
box-sizing: border-box;
opacity: 1;
clip-path: circle(50%);
}
.exit::before,
.exit::after {
content: "";
background-color: red;
width: 47px;
height: 5px;
position: absolute;
top: 0px;
left: -5px;
right: 0;
bottom: 0;
margin: auto;
}
.exit::before {
transform: rotate(45deg);
}
.exit::after {
transform: rotate(-45deg);
}
.container2 .container {
background: #302b63;
}
.container2:not(.hide) .container {
animation: newbg 5s ease forwards;
}
@keyframes newbg {
to {
background: teal;
}
}
.bg1 {
animation: fadeInBody 5s ease 3s forwards;
}
@keyframes fadeInBody {
to {
background: teal;
}
}
.hide {
display: none;
}
.bg1 .container1.hide {
display: flex;
animation: hideContainer 3s ease forwards;
}
@keyframes hideContainer {
0% {
opacity: 1];
}
99% {
visibility: visible;
}
100% {
visibility: hidden;
opacity: 0;
}
}
.container2:not(.hide) {
display: block;
animation: container2 4s ease 2s forwards;
opacity: 0;
}
@keyframes container2 {
to {
opacity: 1;
}
}
const manageCover = (function makeManageCover() {
// const config = {};
function show(el) {
el.classList.remove("hide");
}
function hide(el) {
el.classList.add("hide");
}
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");
document.querySelector("body").classList.add("bg1");
}
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) {
const resetVideo = document.querySelectorAll(".exit");
resetVideo.forEach(function resetVideoHandler(video) {
video.addEventListener("click", callback);
});
}
function init() {
const exitButtons = document.querySelectorAll(".exit");
addClickToExit(exitButtons);
}
return {
addExitHandlers,
init
};
})();
const videoPlayer = (function makeVideoPlayer() {
let player;
const tag = document.createElement("script");
tag.src = "https://www.youtube.com/player_api";
const firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function shufflePlaylist(player) {
player.setShuffle(true);
player.playVideoAt(0);
//player.stopVideo();
}
function onPlayerReady(event) {
player = event.target;
player.setVolume(100);
//shufflePlaylist(player);
}
function onPlayerStateChange(event) {
const player = event.target;
return player;
}
function addPlayer(video, playerOptions) {
playerOptions.videoId = playerOptions.videoId || video.dataset.id;
playerOptions.events = playerOptions.events || {};
playerOptions.events.onReady = onPlayerReady;
playerOptions.events.onStateChange = onPlayerStateChange;
//playerOptions.playerVars.loop = 1;
const player = new YT.Player(video, playerOptions);
return player;
}
return {
addPlayer
};
})();
const managePlayer = (function makeManagePlayer() {
const playerVars = {
autoplay: 1,
controls: 1,
disablekb: 1,
// enablejsapi: 1,
//loop: 1,
//playlist: 1,
fs: 0,
iv_load_policy: 3
};
const defaults = {
height: 360,
host: "https://www.youtube-nocookie.com",
playerVars,
width: 640
};
function show(el) {
el.classList.remove("hide");
}
function combinePlayerOptions(opts1 = {}, opts2 = {}) {
const combined = Object.assign({}, opts1, opts2);
Object.keys(opts1).forEach(function checkObjects(prop) {
if (typeof opts1[prop] === "object") {
combined[prop] = Object.assign({}, opts1[prop], opts2[prop]);
}
});
return combined;
}
function createPlayer(videoWrapper, playerOptions = {}) {
const video = videoWrapper.querySelector(".video");
const options = combinePlayerOptions(defaults, playerOptions);
return videoPlayer.addPlayer(video, options);
}
function playerAdder(parent, playerOptions) {
const wrapper = parent;
// const wrapper = parent.document.querySelector(".wrap");
return function callback() {
initPlayer(wrapper, playerOptions);
};
}
function removePlayer(wrapper) {
wrapper.player.destroy();
delete wrapper.player;
console.log("removePlayer");
}
function removePlayerHandler(evt) {
const el = evt.target;
//const container = el.closest(".container");
const wrapper = document.querySelector(".wrap");
if (wrapper.player) {
return removePlayer(wrapper);
}
}
function initPlayer(wrapper, playerOptions) {
show(wrapper);
const player = createPlayer(wrapper, playerOptions);
wrapper.player = player;
}
return {
adder: playerAdder,
removePlayerHandler
};
})();
const players = (function coverUIPlayerFacade() {
function addPlayer(coverSelector, playerOptions) {
const parent = document.querySelector(coverSelector).parentElement;
const callback = managePlayer.adder(parent, playerOptions);
manageCover.addCoverHandler(coverSelector, callback);
}
function init() {
manageCover.init({
container: ".container",
playButton: ".embed-youtube-play"
});
manageUI.init({});
manageUI.addExitHandlers(managePlayer.removePlayerHandler);
}
return {
add: addPlayer,
init
};
})();
players.init();
function onYouTubeIframeAPIReady() {
players.add(".playa", {
playerVars: {
loop: 1,
playlist: "djV11Xbc914"
}
});
players.add(".playb", {});
players.add(".playc", {});
players.add(".playd", {});
players.add(".playe", {
playerVars: {
playlist: ["mnfmQe8Mv1g", "M7lc1UVf-VE", "-Xgi_way56U", "CHahce95B1g"]
}
});
players.add(".playf", {});
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.