<div class="pageheader-video" style="background-image: url(../../dist/images/placeholder-images/hero--mona-eendra-313518.jpg )">
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-10 col-sm-offset-1">
<div class="pageheader-content">
<h1 class="heading-page heading-page--pageheader ">Pageheader video</h1>
<p class="paragraph paragraph--pageheader ">Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Quisque velit nisi, pretium ut lacinia in, elementum id enim.</p>
<button type="button" class="button button--large">
See more
</button>
</div>
</div>
</div>
</div>
<div class="video-wrapper" data-youtube-id="zrHZpg8EoPM">
<div class="tv">
<div id="player" class="screen"></div>
</div>
</div>
</div>
{{> @pageheader-video youtubeId="zrHZpg8EoPM" backgroundImagePath="/dist/images/placeholder-images/hero--mona-eendra-313518.jpg" }}
{
"content": {
"header": {
"text": "Pageheader video"
},
"description": {
"text": "Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Quisque velit nisi, pretium ut lacinia in, elementum id enim."
},
"button": {
"text": "See more"
}
}
}
"use strict";
var novicell = novicell || {};
novicell.pageheaderVideoYoutube =
novicell.pageheaderVideoYoutube ||
new function() {
var videoStart = 0;
var player;
var youtubeId;
this.init = function() {
const youtubeVideoWrapper = document.querySelector(".tv");
if (youtubeVideoWrapper != null) {
youtubeId = document
.querySelector(".video-wrapper")
.getAttribute("data-youtube-id");
var tag = document.createElement("script");
tag.src = "https://www.youtube.com/player_api";
var lastScriptTag = document.getElementsByTagName("script")[
document.getElementsByTagName("script").length - 1
];
lastScriptTag.parentNode.insertBefore(tag, lastScriptTag);
}
};
this.onPlayerReady = function(event) {
novicell.pageheaderVideoYoutube.vidRescale();
event.target.mute();
event.target.seekTo(videoStart);
};
this.onPlayerStateChange = function(e) {
var tv2 = document.getElementById("player");
if (e.data === 1) {
tv2.classList.add("active");
} else if (e.data === 0) {
player.seekTo(videoStart);
}
};
this.vidRescale = function() {
var tvScreen = document.querySelector(".tv .screen");
if (tvScreen != null) {
var w = window.innerWidth + 200,
h = window.innerHeight + 200;
if (w / h > 16 / 9) {
player.setSize(w, (w / 16) * 9);
tvScreen.style.left = "0px";
} else {
player.setSize((h / 9) * 16, h);
tvScreen.style.left = -(tvScreen.offsetWidth - w) / 2;
}
}
};
this.onYouTubeIframeAPIReady = function() {
player = new YT.Player("player", {
videoId: youtubeId,
playerVars: {
autoplay: 0,
autohide: 1,
loop: 1,
modestbranding: 1,
rel: 0,
showinfo: 0,
controls: 0,
disablekb: 1,
enablejsapi: 0,
iv_load_policy: 3
},
events: {
onReady: novicell.pageheaderVideoYoutube.onPlayerReady,
onStateChange:
novicell.pageheaderVideoYoutube.onPlayerStateChange
}
});
};
}();
function onYouTubeIframeAPIReady() {
novicell.pageheaderVideoYoutube.onYouTubeIframeAPIReady();
}
window.addEventListener(
"load",
function() {
novicell.pageheaderVideoYoutube.vidRescale();
},
true
);
window.addEventListener(
"resize",
function() {
novicell.pageheaderVideoYoutube.vidRescale();
},
true
);
/**
* Component: pageheader-video
*/
:root {
--hero-text-color: var(--color-white);
--video-background-color: var(--color-black);
--video-content-opacity: 70%;
--video-height: 600px;
}
.pageheader-video {
position: relative;
display: flex;
align-items: center;
height: calc(var(--video-height) / 1.5);
overflow: hidden;
background-size: cover;
@media (--viewport-sm-min) {
height: var(--video-height);
}
&__video {
display: none;
@media (--viewport-sm-min) {
display: block;
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
z-index: 0;
transform: translateX(-50%) translateY(-50%);
object-fit: contain;
}
&--iframe-video {
&::before {
display: block;
content: '';
width: 100%;
padding-top: calc((9 / 16) * 100%);
}
iframe {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
}
}
}
//vimeo
.vimeo-wrapper {
display: none;
@media (--viewport-sm-min) {
display: block;
width: 100%;
pointer-events: none;
overflow: hidden;
position: absolute;
height: 100%;
}
}
.vimeo-wrapper iframe {
width: 100vw;
height: 56.25vw;
/* Given a 16:9 aspect ratio, 9/16*100 = 56.25 */
min-height: 100vh;
min-width: 177.77vh;
/* Given a 16:9 aspect ratio, 16/9*100 = 177.77 */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
//youtube
.video-wrapper {
display: none;
@media (--viewport-sm-min) {
display: block;
position: absolute;
width: 100%;
margin: 0;
height: 100%;
z-index: 0;
overflow: hidden;
}
}
.tv {
display: none;
@media (--viewport-sm-min) {
display: block;
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 100%;
overflow: hidden;
}
.screen {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
margin: auto;
opacity: 0;
transition: opacity 0.5s;
&.active {
opacity: 1;
}
}
}
NB! The default pageheader-video does not contain a video. This is because each variation specify how the video is made, therefore you need to choose a variant to see a video. So the default is working as intended :)