123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 |
- <!DOCTYPE html>
- <html>
- <head>
- <title>Alt. youtube player</title>
- <style>
-
- * {padding: 0;margin: 0;}
- .player {
- width: 70vw;
- margin: 0 auto;
- }
-
- .player > img.thumb {
- width: 100%;
- }
- .player > iframe {
- width: 100%;
- height: 100%;
- }
- .player.play {
- cursor: pointer;
- }
- .player.stop {
- cursor: not-allowed;
- }
- .player.loading {
- cursor: wait;
- }
- </style>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
- </head>
- <body>
-
- <div class="player">
- <img class="thumb" src="./thumb.png" alt="Thumbnail" />
- <div class="something wf realated classed and shit">
- <iframe src="https://www.youtube-nocookie.com/embed/dcsvMySGmS8?enablejsapi=1" frameborder="0" allow="autoplay; encrypted-media; gyroscope" allowfullscreen></iframe>
- </div>
- </div>
-
- <div class="player">
- <img class="thumb" src="./thumb.png" alt="Thumbnail" />
- <iframe src="https://www.youtube-nocookie.com/embed/pouODQkJQG0?enablejsapi=1" frameborder="0" allow="autoplay; encrypted-media; gyroscope" allowfullscreen></iframe>
- </div>
- <div class="player">
- <img class="thumb" src="./thumb.png" alt="Thumbnail" />
- <iframe src="https://www.youtube-nocookie.com/embed/Y-JQ-RCyPpQ?enablejsapi=1" frameborder="0" allow="autoplay; encrypted-media; gyroscope" allowfullscreen></iframe>
- </div>
- <div class="player">
- <img class="thumb" src="./thumb.png" alt="Thumbnail" />
- <iframe src="https://www.youtube-nocookie.com/embed/4-079YIasck?enablejsapi=1" frameborder="0" allow="autoplay; encrypted-media; gyroscope" allowfullscreen></iframe>
- </div>
-
-
- <script>
-
- jQuery.getScript("http://www.youtube.com/iframe_api")
-
- var ytd = $.Deferred();
- window.onYouTubeIframeAPIReady = function () {
- ytd.resolve(window.YT);
- };
- $(document).ready(function () {
-
- var ytp = [];
-
- var playerOpen = function (i, player) {
- if (!ytp[i])
- return;
-
- player.find('.thumb').slideUp();
- player.find('iframe').slideDown({
- complete: function () {
-
- ytp[i].playVideo()
- player.removeClass('play loading').addClass('stop');
- }
- });
-
- $('.player').each(function (idx) {
- if (i == idx) return;
- playerClose(i, $(this));
- })
- }
-
- var playerClose = function (i, player) {
- if (!ytp[i])
- return;
-
-
- ytp[i].stopVideo();
-
- player.find('iframe').slideUp()
- player.find('.thumb').slideDown(function() {
- player.removeClass('stop loading').addClass('play');
- });
- }
-
- var adoptThumbSizeToIframe = function (player) {
- var ytvid = player.find('iframe');
- var thumb = player.find('.thumb');
- var hidden = thumb.is(':hidden');
-
- if (hidden)
- thumb.show();
-
- ytvid.css({
- height: thumb.height(),
- width: thumb.width(),
- });
- if (hidden)
- thumb.hide();
- }
-
- window.addEventListener('scroll', function (e) {
- var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
- var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
- var d = $(document).scrollTop();
- $('.player').each(function (i) {
- if ($(this).find('iframe:visible').length == 0)
- return;
- var x = $(this).offset()['top'];
- var xoff = $(this).height() / 15;
- if ((x + $(this).height() - xoff) < d || (x + xoff) > (d + h))
- playerClose(i, $(this));
-
- })
- })
- window.addEventListener('resize', function () {
- $('.player').each(function() {
- console.log("Resize");
- adoptThumbSizeToIframe($(this));
- })
- })
-
- ytd.done(function (YT) {
-
- $(".player").each(function (i) {
- var player = $(this).addClass('loading');
- var ytvid = player.find('iframe').hide();
- adoptThumbSizeToIframe(player);
-
- ytvid.attr('id', 'player-' + (i+1));
- ytp.push(new YT.Player(ytvid.attr('id'), {
- events: {
- 'onReady': function (e) {
- player.removeClass('loading').addClass('play');
- player.bind('click', function () {
- playerOpen(i, player);
- })
- },
- 'onStateChange': function (e) {
-
- switch (e.data) {
- case YT.PlayerState.ENDED:
- playerClose(i, player)
- break;
- case YT.PlayerState.PLAYING:
-
- break;
- case YT.PlayerState.PAUSED:
- player.removeClass('stop loading').addClass('play');
- break;
- case YT.PlayerState.BUFFERING:
- player.removeClass('stop play').addClass('loading');
- break;
- case YT.PlayerState.CUED:
-
- break;
- }
- },
- }
- }));
- })
- })
- });
- </script>
- </body>
- </html>
|