2015-07-15 14 views
5

Tôi đang cố gắng tạo điều hướng "dính" trên trang của mình trong đó div được position:fixed; khi người dùng đã cuộn đến phần tử. Chức năng này hoạt động như mong đợi, nhưng độ rộng của hai cột được cho là sẽ dính vào thay đổi hàng đầu khi lớp dính được thêm vào. Tôi đã thử thêm width:100%; vào CSS của phần tử dính, nhưng sau đó phần tử mở rộng ra ngoài vùng chứa.Bootstrap - duy trì chiều rộng cột bằng vị trí: cố định?

Làm cách nào để đảm bảo chiều rộng cột ở vị trí cần thiết khi bạn thêm position:fixed;?

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

Cảm ơn!

+1

Bạn có thể làm điều đó bằng cách chiều rộng của phần tử dính với Javascript trên tải trang và sau đó thiết lập chiều rộng của nguyên tố này với JS khi định vị cố định được bổ sung. Không chắc chắn nếu nó có thể được thực hiện với HTML/CSS thẳng. – APAD1

Trả lời

3

Vị trí cố định tương đối so với phần thân, do đó, nó sẽ đếm chiều rộng 100% từ chiều rộng cơ thể. Nếu sử dụng javascript là ok, bạn có thể đặt chiều rộng dính bằng cách nhận chiều rộng vùng chứa. Kiểm tra Updated Fiddle

+0

Cảm ơn bạn, giải pháp này đã làm việc rất tốt và đã được theo dòng những gì tôi đã suy nghĩ. – user13286

+0

Bạn được chào đón. ;) –

1

Tôi có thể làm cho thiết bị hoạt động bằng cách đặt vùng chứa của bạn thành "vùng chứa chứa chất lỏng" rồi thêm chiều rộng: 100%; vào lớp .stick của bạn.

2

add:

width:inherit; 

để bạn .sticky.stick

JSFiddle

như Nanang Mahdaen El-Agun nói, một vị trí cố định liên quan chiều rộng cho cơ thể. Với width:inherit; nó sẽ sử dụng độ rộng của .container lớp

tham khảo: Set width of a "Position: fixed" div relative to parent div

+0

Giải pháp rất đẹp, thật không may sẽ không hoạt động trong trường hợp này vì khả năng tương thích với trình duyệt với 'width: inherit;' nhưng sẽ ghi nhớ cho tương lai! – user13286

1

Bạn có thể thêm chiều rộng wrapper 100% xung quanh các thùng chứa và có dính đó để thay thế.

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

cập nhật fiddle: https://jsfiddle.net/mileandra/omeegfc7/

+0

Điều này làm việc tốt, cảm ơn! – user13286

Các vấn đề liên quan