Created
November 10, 2018 08:28
-
-
Save badabingbreda/5c624dc008f1e297424c92e773fd5fec to your computer and use it in GitHub Desktop.
Youtube defer loading to click
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<title>Youtube defer loading</title> | |
<!-- CSS --> | |
<style> | |
.youtube { | |
background-color: #000; | |
margin-bottom: 30px; | |
position: relative; | |
padding-top: 56.25%; | |
overflow: hidden; | |
cursor: pointer; | |
} | |
.youtube img { | |
width: 100%; | |
top: -16.84%; | |
left: 0; | |
opacity: 0.7; | |
} | |
.youtube .play-button { | |
width: 90px; | |
height: 60px; | |
background-color: #333; | |
box-shadow: 0 0 30px rgba( 0,0,0,0.6 ); | |
z-index: 1; | |
opacity: 0.8; | |
border-radius: 6px; | |
} | |
.youtube .play-button:before { | |
content: ""; | |
border-style: solid; | |
border-width: 15px 0 15px 26.0px; | |
border-color: transparent transparent transparent #fff; | |
} | |
.youtube img, | |
.youtube .play-button { | |
cursor: pointer; | |
} | |
.youtube img, | |
.youtube iframe, | |
.youtube .play-button, | |
.youtube .play-button:before { | |
position: absolute; | |
} | |
.youtube .play-button, | |
.youtube .play-button:before { | |
top: 50%; | |
left: 50%; | |
transform: translate3d( -50%, -50%, 0 ); | |
} | |
.youtube iframe { | |
height: 100%; | |
width: 100%; | |
top: 0; | |
left: 0; | |
} | |
</style> | |
</head> | |
<body> | |
<!-- HTML TEMPLATE --> | |
<!-- (1) video wrapper --> | |
<div style="max-width:400px;"> | |
<div class="youtube" data-embed="DLzxrzFCyOs"> | |
<!-- (2) the "play" button --> | |
<div class="play-button"></div> | |
</div> | |
</div> | |
<!-- JAVASCRIPT --> | |
<script type="text/javascript"> | |
/* Timing is important! load on document.ready or just before body closes otherwise the js won't load anything */ | |
( function() { | |
var youtube = document.querySelectorAll( ".youtube" ); | |
for (var i = 0; i < youtube.length; i++) { | |
var source = "https://img.youtube.com/vi/"+ youtube[i].dataset.embed +"/default.jpg"; // default | medium | high | standard | maxres | |
console.log(source); | |
var image = new Image(); | |
image.src = source; | |
image.addEventListener( "load", function() { | |
youtube[ i ].appendChild( image ); | |
}( i ) ); | |
youtube[i].addEventListener( "click", function() { | |
var iframe = document.createElement( "iframe" ); | |
iframe.setAttribute( "frameborder", "0" ); | |
iframe.setAttribute( "allowfullscreen", "" ); | |
iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" ); | |
this.innerHTML = ""; | |
this.appendChild( iframe ); | |
} ); | |
}; | |
} )(); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment