sticky-header-scroll-up

Yukarı Scroll Edildiğinde Gözüken Header

Adobewordpress alarak bir süre önce “Sticky Header” yapımı üzerine detaylı bir makale hazırlamıştık. Bugün de yine benzer bir yapı kullanarak kaydırma çubuğu yukarı sürüklendiğinde beliren bir header tasarlayacağız.

ÖRNEĞİ GÖRÜNTÜLE

Yukarı Scroll Edildiğinde Gözüken Sticky Header

Kaydırma çubuğu yukarı sürüklendiğinde gözüken header temelinde kullanıcı deneyimini hedef almaktadır. Eski tasarım trendlerinde, üst kısımdaki headera erişmek için sayfanın en üstüne çıkardık. Bu algı zamanla benliklerimizde yer etti. Sticky headerın da popülerleşmesiyle birlikte bazı tasarımcılar bu algıyı kullanarak sadece yukarı scroll edildiğinde gözüken headerlar tasarlamaya başladı. Böylece hem mobilde sürekli ekranı takip eden bir jQuery yükünü sırtlamamış oldular hem de özgün bir tasarım meydana çıkardılar. Özetle scroll-to-top (yukarı çık) geleneğini bitirdiler.

Peki bu tasarım nasıl hazırlanır?

HTML ve CSS‘in yanısıra jQuery desteğine de ihtiyacımız olacak. İlk olarak HTML kodlarımız ile başlayalım.

HTML Kodları

Web sayfanızdaki header öğesine yapiskan classını eklemeniz yeterli.

<header class="yapiskan">STICKY HEADER</header>

CSS Kodları

Şimdi de yapiskan tanımını detaylandıralım. İlk olarak fixed pozisyonlama yaptığımız öğeyi left ve top tanımlamalarıyla üste yerleştirelim. CSS transition ile de giriş ve çıkışlardaki animasyon geçişlerini oluşturalım.

.yapiskan{
  position: fixed; 
  left:0; 
  top:0; 
  width:100%; 
  transition: top .5s;
}

Şimdi de yukarı scroll edilmesi halinde aktif edilecek classları ekleyelim.

.gizle {
  top: -89px;
}

.sabit {
  top:0;
  z-index: 9999;
}

Sırada işlevselliği katacak jQuery kodlarımız var.

jQuery Kodları

Öncelikle sayfanızda jQuery tanımlı olup olmadığına bakın. Eğer yoksa Body‘nin bittiği yere, tanımının hemen öncesine jQuery’i ekleyerek devam edelim.

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>

İşin jQuery tarafında yapmamız gereken ilk işlem scroll seviyesini bulmak. Daha sonra da scroll edilmesi halinde .yapiskan‘a sabit ve gizle classlarını eklememiz gerekiyor.

$(function(){	
    var cubuk_seviye = $(document).scrollTop();
    var header_yuksekligi = $('.yapiskan').outerHeight();

    $(window).scroll(function() {
        var kaydirma_cubugu = $(document).scrollTop();

        if (kaydirma_cubugu > header_yuksekligi){$('.yapiskan').addClass('gizle');} 
        else {$('.yapiskan').removeClass('gizle');}

        if (kaydirma_cubugu > cubuk_seviye){$('.yapiskan').removeClass('sabit');} 
        else {$('.yapiskan').addClass('sabit');}				

        cubuk_seviye = $(document).scrollTop();	
     });
});

Bu kadar.

Bu da ilginizi çekebilir  Responsive menü nasıl yapılır?

Kaydırma çubuğu yukarı sürüklendiğinde beliren header öğemiz artık hazır.



  • ercan genc

    Hocam Merhaba Acaba bu js uyarlanması mümkünmü Sizin Paylaştığınız Aşağıdaki Coda Uyarlanabilirmi Cevabınızı Beklerim Saygılar..

    //

    jQuery(document).ready(function() {

    if(jQuery(‘#gkHeaderNav’).length > 0 && !jQuery(‘#gkHeaderNav’).hasClass(‘active’)) {

    jQuery(window).scroll(function() {

    var currentPosition = jQuery(window).scrollTop();

    if(

    currentPosition >= jQuery(‘#gkHeader’).height() &&

    !jQuery(‘#gkHeaderNav’).hasClass(‘active’)

    ) {

    jQuery(‘#gkHeaderNav’).addClass(‘active’);

    } else if(

    currentPosition 720

    ) {

    jQuery(window).scroll(function() {

    var win_scroll = jQuery(window).scrollTop();

    var header_height = frontpage_header.height();

    if(win_scroll < header_height) {

    animate_header(win_scroll, header_height);

    }

    });

    var animate_header = function(win_scroll, header_height) {

    var result = (win_scroll / header_height) * 0.75;

    frontpage_module.css('background', 'rgba(0, 0, 0, ' + (result) + ')');

    };

    }

    });

    • gül

      Peki header kaybolmasa da içindekilerle birlikte küçülse, sizin web sitenizde olduğu gibi?..

      • gül

        Siteyi aktif olarak görüyorum ama yukarıdaki sorum cevapsız kaldı ?

  • hakan teke

    “Daha sonra da scroll edilmesi halinde .yapiskan‘a sabit ve gizle classlarını eklememiz gerekiyor.” derken nasıl ekliyeceğimizide gösterirmisiniz hocam bi türlü ekleyemedim.