HiskeSchipper - mod_media
HTML
<div id="wrapper">
<div id="mod_media">
<a href="#" class="nav_prev"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>
<a href="#" class="nav_next"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>
<figure>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR4nGNgAAIAAAUAAXpeqz8=" style="background-image:url(https://placeholdit.imgix.net/~text?txtsize=100&bg=eeeeee&txtclr=0c0c0c&txt=600%20%C3%97%20400%0Apx&w=600&h=400);" alt="Title">
<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
</figure>
<figure>
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVR4nGNgAAIAAAUAAXpeqz8=" style="background-image:url(https://placeholdit.imgix.net/~text?txtsize=100&bg=eeeeee&txtclr=b10101&txt=600%20%C3%97%20400%0Apx&w=600&h=400);" alt="Title">
<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
</figure>
<figure>
<video>
<source src="https://www.w3schools.com/html/movie.mp4" type="video/mp4">
</video>
<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
</figure>
<figure>
<audio>
<source src="https://www.w3schools.com/html/horse.mp3" type="audio/mpeg">
</audio>
<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus elit varius magna, quis tincidunt libero dolor et tellus. Cras semper tempus porta.</span></figcaption>
</figure>
<figure>
<div id="mod_media_1" class="youtube" data-video-id="M7lc1UVf-VE"></div>
<figcaption>Vivamus vitae nunc justo<span>Donec commodo, lectus ut congue sodales, lectus...
SCSS
@import url('https://fonts.googleapis.com/css?family=Alegreya:400,400i,500i,700,700i|Josefin+Sans:300,300i,700,700i|Josefin+Slab:300,300i,700,700i');
@import url('https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css');
html, body {
padding: 0px;
margin: 0px;
}
body {
background: #eee;
font-family: 'Josefin Sans',sans-serif;
font-weight: 300;
font-size: 18px;
line-height: 1.5;
*, :before, :after {
margin: 0px;
padding: 0px;
box-sizing: border-box;
}
}
#wrapper {
display: block;
width: 100%;
max-width: 1020px;
margin: 0px auto;
}
$red: #df0101;
$dark-red: #b10101;
$light-grey: #bdc3c7;
$grey: #414141;
$text: #1C1823;
$nearly-white: #F8F7FF;
#mod_media {
display: inline-block;
position: relative;
width: 100%;
height: 500px;
//padding: 0px 65px;
> a.nav_prev, > a.nav_next {
position: absolute;
top: 50%;
transform: translate(0%, -50%);
width: 50px;
height: 50px;
background-color: $dark-red;
color: #fff;
z-index: 4;
border-radius: 50%;
&:hover, &:focus {
background-color: $red;
}
> i {
position: absolute;
top: 50%;
left: 50%;
transform: translate(0%, -50%);
font-size: 24px;
}
}
> a.nav_prev {
left: 0px;
> i {
margin-left: -10px;
}
}
> a.nav_next {
right: 0px;
> i {
margin-left: -6px;
}
}
figure {
display: inline-block;
left: 65px;
right: 65px;
//left: 0px;
//right: 0px;
height: 100%;
position: absolute;
z-index: 1;
background: $red;
opacity: 0;
transition: opacity 0.5s ease;
padding-bottom: 80px;
img, video, audio, iframe {
display: inline-block;
width: 100%;
left: 0px;
top: 0px;
height: 100%;
background-color: $dark-red;
z-index: 1;
}
audio + .controls {
opacity: 1 !important;
}
img {
background-size: contain;
background-repeat: no-repeat;
background-position: center center;
& + .fullscreen {
position: absolute;
display:...
JavaScript
/*
* Inspired by: https://gist.github.com/ludo6577/53691fd3e71204f2ff36
*/
function isInFullscreen() {
var tmp = document.fullScreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msIsFullScreen;
return tmp;
}
function enterFullscreen(el) {
var element = el || document.body;
var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullscreen || element.msRequestFullScreen;
if (requestMethod) { // Native full screen.
requestMethod.call(element);
} else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null) {
wscript.SendKeys("{F11}");
}
}
}
function leaveFullscreen() {
if ( isInFullscreen() ) {
var element = document;
var requestMethod = element.cancelFullScreen || element.webkitCancelFullScreen || element.mozCancelFullScreen || element.msCancelFullscreen || element.msCancelFullScreen;
if (requestMethod) { // Native full screen.
requestMethod.call(element);
} else if (typeof window.ActiveXObject !== "undefined") { // Older IE.
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null) {
wscript.SendKeys("{F11}");
}
}
}
}
var mod_media_play_timer;
function onYouTubeIframeAPIReady() {
$('#mod_media')
.find('div.youtube')
.each(function(idx, el){
var $el = $(el),
player;
player = new YT.Player($el.attr('id'), {
//height: '390',
//width: '640',
videoId: $el.data('video-id'),
playerVars: {
origin: window.location.hostname,
enablejsapi: 1,
modestbranding: 1,
showinfo: 0,
rel: 0,
autoplay: 0,
},
events: {
'onReady': function(e){
$( e.target.getIframe() ).data('player', e.target);
},
//'onStateChange': function(e){},
}
});
})
.end();
}
function checkFullScreen() {
// window.outerWidth should work, but is 16px short..?
if (...