Script Lazy Load Youtube Pure JavaScript tanpa jQuery
Bagi sobat yang sering membagikan video baik lagu atau film di blognya, tentunya akan sedikit lambat untuk menampilkan video dari YouTube, karena harus load video yang di iframe atau di embed.
Untuk solusi agar lebih cepat diload yaitu menggunakan YouTube Lazy Load. Dengan Lazy Load, hanya akan menampilkan thumbnail Video Youtube, dan iframe akan dimuat setelah di klik
Script yang saya bagikan ini tidak memerlukan jQuery, karena murni menggunakan JavaScript. Script ini bisa dipasang diberbagai flatform seperti Blogger, WordPress, Joomla dll. Yu.. Langsung ke tutorial
Struktur HTML
<div class="youtube" data-embed="PCehl2RwkEI">
<div class="play-button"></div>
</div>
Kalian tinggal merubah ID video yang akan diembed/diiframe saja. Untuk mendapatkan ID video bisa dilihat di adressbar, seperti gambar berikut
Menambahkan CSS
Untuk membuat tampilan Youtube mebjadi responsive, penambahan Button manipulasi, maka tambahkan CSS ini. Untuk pengguna Blogger simpan di atas </style>
atau ]]></b:skin>
.
.youtube {
background-color: #000;
margin-bottom: 30px;
position: relative;
padding-top: 56.25%;
overflow: hidden;
cursor: pointer;
}
.youtube img {
width: 100%;
top: -16.82%;
left: 0;
opacity: 0.7;
}
.youtube .play-button {
width: 68px;
height: 47px;
background-color: #ff0000;
box-shadow: 0 0 30px rgba( 0,0,0,0.6 );
z-index: 1;
opacity: 0.8;
border-radius: 10px;
}
.youtube .play-button:before {
content: "";
border-style: solid;
border-width: 10px 0 10px 20.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;
}
JavaScript
Tambahkan script ini di atas </body>
<script>
//<![CDATA[
( 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 +"/sddefault.jpg";
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( "allow", "autoplay" );
iframe.setAttribute( "src", "https://www.youtube.com/embed/"+ this.dataset.embed +"?rel=0&showinfo=0&autoplay=1" );
this.innerHTML = "";
this.appendChild( iframe );
} );
};
} )();
//]]>
</script>
Permasalahan Pada Blogger
Hal yang dikeluhkan oleh blogger ketika menggunakan Youtube Lazy Load adalah tidak muncul Thumbnail. Untuk solusinya, tambahkan Thumbnail dari Youtube secara manual. Simpan kode ini sebelum HTML di atas
<noscript><img alt="YouTube" src="https://img.youtube.com/vi/PCehl2RwkEI/sddefault.jpg"/></noscript>
Jangan lupa edit ID Video yang ditandai. Untuk Kode lengkap pemasangan pada Mode HTML (berikut thumbnail) seperti ini
<noscript><img alt="YouTube" src="https://img.youtube.com/vi/PCehl2RwkEI/sddefault.jpg"/></noscript>
<div class="youtube" data-embed="PCehl2RwkEI">
<div class="play-button"></div>
</div>
Selamat Mencoba !
image quote pre code