HTML5 & CSS3

Responsive Youtube Videosu Oluşturma

Bu yazımda sık sık karşılaştığım responsive youtube videosu sorununun çözümünden bahsedeceğim. Bildiğiniz üzere Iframe kodlarında sadece genişliği 100% vermek img kodlarında ki gibi doğru çalışmıyor. Iframe’de bir yüksekliğin ayarlanması gerekiyor yoksa tarayıcılar iframe’i 150px sabit bir yükseklikte oluşturuyor. Responsive youtube videosu oluşturma konusuyla ile ilgili makalemde bu durumu düzeltmeyi anlatacağım.

Aşağıdaki videoda olduğu gibi iframe’in yüksekliğinin otomatik olarak 150px gelmesi kötü bir görüntü oluşturuyor.

Responsive Youtube Videosu Nasıl Yapılır?

Responsive youtube iframe oluşturma yönteminin bir kaç olası çözümü var. Bu çözümleri aşağıda bulabilirsiniz.

Not: Yeni yöntemler ögrendikçe buraya bu yöntemleri ekleyeceğim.

1.Yöntem

Thierry Koblentz tarafından öncülük edilmiş ve 2009 yılında A List’te sunulmuş olan “Video için İçsel Oranlar Oluşturma (Creating Intrinsic Ratios for Video)” tekniğidir. Bu teknikle, iframe kodunu bir en-boy oranına sahip bir divin içine ekleyin, sonra videoya position: absolute; kodu ekleyerek bunun içinde konumlandırın. Bu bize güvenebileceğimiz makul bir yükseklik ve genişlik verir.



<div class="videoWrapper">
    <!-- Copy & Pasted from YouTube -->
    <iframe width="560" height="349" src="http://www.youtube.com/embed/n_dZNLr2cME?rel=0&hd=1" frameborder="0" allowfullscreen></iframe>
</div>


.videoWrapper {
	position: relative;
	padding-bottom: 56.25%; /* 16:9 */
	padding-top: 25px;
	height: 0;
}
.videoWrapper iframe {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
}

Yukarıdaki kodlar ile .videoWrapper’ın içerisindeki iframe videosu 16:9 boyutunda orantılı bir şekilde görünecektir.

2. Yöntem

Yukarıdaki teknik harika, ancak birkaç olası sınırlaması var:
  1. Kapsayıcı dive ihtiyaç duyar, bu nedenle sadece kopyala yapıştır yeterli olmayacaktır. Kullanıcıların kapsayıcı div konusunda biraz daha anlayışlı olması gerekir.
  2. Eski içeriklerinizde videolarınız varsa bunların tek tek düzenlenip kapsayıcı div içerisine alınması gerekir.
  3. Tüm videolar aynı en boy (16:9) oranına sahip olmalıdır. Aksi takdirde videonun alt-üst veya sağ-sol bölümlerinde siyah bir zemin oluşur. Ya da, ek bir sınıf (class) oluşturup farklı oranlara uygun css yazmanız gerekecektir.

Bu sınırlamalardan herhangi biri sizin için geçerliyse, bir JavaScript çözümü düşünebilirsiniz. Sayfa yüklendiğinde veya sayfanın genişliği değiştiğinde sayfadaki tüm videolar en boy oranını korumak için yeniden boyutlandırılır.

// Tüm YouTube videolarını bul
var $allVideos = $("iframe[src^='//www.youtube.com']"),

    $fluidEl = $("body");

// Her video için en boy oranını belirler ve kaydeder
$allVideos.each(function() {

  $(this)
    .data('aspectRatio', this.height / this.width)

    // sabit değer olarak varsa yükseklik ve genişliği kaldır
    .removeAttr('height')
    .removeAttr('width');

});

// Pencere yeniden boyutlandırıldığında çalıştır
$(window).resize(function() {

  var newWidth = $fluidEl.width();

  // Tüm videoları kendi en boy oranlarına göre yeniden boyutlandır
  $allVideos.each(function() {

    var $el = $(this);
    $el
      .width(newWidth)
      .height(newWidth * $el.data('aspectRatio'));

  });

}).resize();

Responsive Vimeo Videosu Oluşturma

Yukarıdaki teknik ile responsive Vimeo videosu oluşturabilirsiniz. HTML/CSS kodlarında hiç bir değişiklik gerektirmez, sadece jQuery kodunda tek bir satırı değiştirerek Vimeo desteği eklenebilir:

var $allVideos = $("iframe[src^='//player.vimeo.com'], iframe[src^='//www.youtube.com']"),

Vimeo ve Youtube desteği eklenmiş jQuery kodunun tam hali aşağıdaki gibidir:

// Tüm YouTube ve Vimeo videolarını bul
var $allVideos = $("iframe[src^='//player.vimeo.com'], iframe[src^='//www.youtube.com']"),

    $fluidEl = $("body");

// Her video için en boy oranını belirler ve kaydeder
$allVideos.each(function() {

  $(this)
    .data('aspectRatio', this.height / this.width)

    // sabit değer olarak varsa yükseklik ve genişliği kaldır
    .removeAttr('height')
    .removeAttr('width');

});

// Pencere yeniden boyutlandırıldığında çalıştır
$(window).resize(function() {

  var newWidth = $fluidEl.width();

  // Tüm videoları kendi en boy oranlarına göre yeniden boyutlandır
  $allVideos.each(function() {

    var $el = $(this);
    $el
      .width(newWidth)
      .height(newWidth * $el.data('aspectRatio'));

  });

}).resize();
Burak Şahin

Merhaba! Ben Burak. 2016 yılında Karadeniz Teknik Üniversitesi Harita Mühendisliği Bölümü’nden mezun oldum. Lise yıllarında HTML & CSS‘e, Üniversite yıllarında WordPress ve Matlab‘e adım attım. Lisans tezimi Matlab üzerinden program yazarak teslim ettim. Çeşitli projeler için WordPress tabanlı yazılımlar geliştirdim.

Paylaş
Yazar
Burak Şahin

Son içerikler

MAMP / WAMP / XAMPP phpMyAdmin Şifresi Değiştirme (2 Adım)

Genellikle Windows ve Mac OS işletim sistemli bilgisayarlarda WordPress tema geliştiricileri localhost kurulumu yapmak için…

10 ay önce

WordPress Admin Şifresi Değiştirme (3 Farklı Yöntem)

Her birey zaman zaman şifrelerini güncellemelidir. WordPress yönetici şifresini değiştirmek oldukça basit bir işlemdir, ancak…

10 ay önce

En İyi 4 Ücretsiz WordPress Emlak Teması

Emlak temaları hakkında daha fazla bilgi edinmek için sizleri ücretsiz WordPress emlak teması serimize davet…

10 ay önce

En iyi 18 ücretsiz kurumsal WordPress teması

Markanız için bir site oluşturmak istiyorsanız en iyi ücretsiz kurumsal WordPress teması seçeneklerine bakabilir ve…

2 yıl önce

5 Adımda Cloudflare ile WordPress Güvenliğini Artırma

Cloudflare ile WordPress güvenliğini artırma çalışmasından önce kısaca size Cloudflare'i neden tercih ettiğimden bahsedeyim. Cloudflare'in…

4 yıl önce

Bitcoin’in Nabzı Burada Atıyor

Son zamanların en gözde yatırım araçlarının başında kripto paralar geliyor. Bir anda yükselişe geçmesi ve…

5 yıl önce

Bu web sitesinde çerezler kullanılıyor.