2015-07-15 16 views
5

Sayfanın öğeye ilerlediğinde, sayfanın bir "yapışkan" gezinme oluşturmasına çalışıyorum. İşlevsellik beklendiği gibi çalışıyor, ancak yapışkan sınıf eklendiğinde üstte yapışması gereken iki sütunun genişliği değişiyor. Yapışkan öğenin CSS'sine width:100%; eklemeyi denedim, ancak öğe kapsayıcının ötesine genişler.Bootstrap - sütun genişliklerinin konumunu kullanarak korunması: sabit?

Sütun genişliklerinin position:fixed; eklendiğinde olması gereken yerde kalmasını nasıl sağlayabilirim?

HMTL:

<div class="container"> 
    <div class="padding"></div> 
    <div class="anchor"></div> 
    <div class="row sticky"> 
     <div class="col-sm-6"> 
      Testing 
     </div> 
     <div class="col-sm-6"> 
      Testing 
     </div> 
    </div> 
    <div class="padding2"></div> 
</div> 

CSS:

.padding { 
    height:250px; 
} 
.padding2 { 
    height:1000px; 
} 
.sticky { 
    background:#000; 
    height:50px; 
    line-height:50px; 
    color:#fff; 
    font-weight:bold; 
} 
    .sticky.stick { 
     position:fixed; 
     top:0; 
     z-index:10000; 
    } 

JS:

function stickyDiv() { 
    var top = $(window).scrollTop(); 
    var divTop = $('.anchor').offset().top; 
    if (top > divTop) { 
     $('.sticky').addClass('stick'); 
    } else { 
     $('.sticky').removeClass('stick'); 
    } 
} 

$(window).scroll(function(){ 
    stickyDiv(); 
}); 
stickyDiv(); 

JSFiddle

Teşekkürler!

+1

Daha sonra sayfa yüklendiğinde JavaScript ile yapışkan elemanın genişliği alma ve bunu yapabilirdi JS ile elemanın genişliğini ayarlayın. Düz HTML/CSS ile yapılabileceğinden emin değil. – APAD1

cevap

3

Sabit konum, gövdeye göre olduğundan, 100% genişliğini gövde genişliğinden sayar. Javascript kullanmanız tamamsa, kapsayıcı genişliğini alarak yapışkan genişliğini ayarlayabilirsiniz. Updated Fiddle

+0

Teşekkürler, bu çözüm harika çalıştı ve düşündüğümün çizgileri boyunca oldu. – user13286

+0

Rica ederim. ;) –

1

kutusunu kontrol edin. Kapsayıcınızı "konteyner sıvısı" olarak ayarlayıp daha sonra genişliği ekleyerek işe alabiliyordum:% 100; .stick sınıfına.

1

Kapsayıcıdaki etrafında% 100 genişlik sarmalayıcı ekleyip bunun yerine sopa olabilir: width:inherit; sayesinde .container sınıf

referans genişliğini kullanır.

<div class="wrap"> 
    <div class="container sticky"> 
     <div class="row"> 
     ... 
     </div> 
    </div> 
</div> 

güncellenmiş keman: Sabit konumlandırma eklendikten sonra https://jsfiddle.net/mileandra/omeegfc7/

+0

Bu iyi çalıştı, teşekkürler! – user13286

İlgili konular