Dokumentasi bootstrap tentang topik itu sedikit membingungkan saya. Saya ingin mencapai perilaku serupa seperti di dokumen dengan bilah navigasi tambahan: Navbar berada di bawah judul paragraf / halaman, dan setelah menggulir ke bawah, itu harus digulirkan terlebih dahulu hingga mencapai bagian atas halaman, dan kemudian tetap di sana untuk scrolldown lebih lanjut .
Karena jsFiddle tidak bekerja dengan konsep navbar, saya telah menyiapkan halaman terpisah untuk digunakan sebagai contoh minimal: http://i08fs1.ira.uka.de/~s_drr/navbar.html
Saya menggunakan ini sebagai navbar saya:
<div class="navbar affix-top" data-spy="affix" data-offset-top="50">
<div class="navbar-inner">
<div class="container">
<div class="span12">
<a class="brand" href="#">My Brand</a>
This is my navbar.
</div>
</div> <!-- container -->
</div> <!-- navbar-inner -->
</div> <!-- navbar -->
Saya rasa saya ingin data-offset-top
memiliki nilai 0 (karena bilah harus "menempel" ke bagian paling atas "tetapi dengan 50 setidaknya ada beberapa efek yang dapat ditonton.
Jika juga letakkan kode javascript di tempatnya:
<script>
$(document).ready (function (){
$(".navbar").affix ();
});
</script>
Setiap bantuan dihargai.
sumber
.navbar-fixed-top
daripada menggunakan affix ()?.navbar-fixed-top
akan menempatkan bilah navigasi ke atas sepanjang waktu . Saya ingin tajuk halaman DI ATAS navbar, dan ketika menggulir ke bawah (dan dengan demikian bilah navigasi akan digulirkan) itu harus tetap di atas - kemudian dan hanya kemudian. Dokumen bootstrap menggunakan mekanisme yang sama dengan subnav di dokumen sebelumnya, sayangnya mereka telah menghapusnya untuk dokumen 2.1.0.)};
harus});
Jawaban:
Saya mengalami masalah serupa, dan saya yakin saya menemukan solusi yang lebih baik.
Jangan repot-repot menentukan
data-offset-top
dalam HTML Anda. Sebagai gantinya, tentukan saat Anda memanggil.affix()
:Keuntungannya di sini adalah Anda dapat mengubah tata letak situs Anda tanpa perlu memperbarui
data-offset-top
atribut. Karena ini menggunakan posisi elemen yang dihitung sebenarnya, ini juga mencegah inkonsistensi dengan browser yang membuat elemen pada posisi yang sedikit berbeda.Anda masih perlu menjepit elemen ke atas dengan CSS. Selain itu, saya harus mengatur
width: 100%
elemen nav karena.nav
elemenposition: fixed
berperilaku tidak baik karena beberapa alasan:Satu hal terakhir: Saat elemen yang ditempelkan menjadi tetap, elemennya tidak lagi menggunakan ruang di halaman, mengakibatkan elemen di bawahnya menjadi "melompat". Untuk mencegah keburukan ini, saya membungkus navbar
div
dengan ketinggian yang saya setel agar sama dengan navbar saat runtime:.
Inilah jsFiddle wajib untuk melihatnya beraksi .
sumber
Baru saja menerapkan ini untuk pertama kalinya, dan inilah yang saya temukan.
The
data-offset-top
nilai adalah jumlah piksel yang harus Anda gulir agar efek pembubuhan ke tempat take. Dalam kasus Anda, setelah di50px
-scroll, kelas item Anda diubah dari.affix-top
menjadi.affix
. Anda mungkin ingin mengaturdata-offset-top
tentang130px
dalam kasus penggunaan Anda.Setelah perubahan kelas ini terjadi, Anda harus memposisikan elemen Anda di css dengan memberi gaya pada posisi untuk kelas
.affix
. Bootstrap 2.1 sudah mendefinisikan.affix
sebagaiposition: fixed;
sehingga semua yang perlu Anda lakukan adalah menambahkan nilai-nilai posisi Anda sendiri.Contoh:
sumber
.navbar
kelas tersebut dipertahankan - apakah Anda yakin?Untuk memperbaiki masalah ini saya telah memodifikasi plugin affix untuk mengeluarkan acara jQuery ketika sebuah objek ditempelkan atau tidak.
Berikut ini permintaan pull: https://github.com/twitter/bootstrap/pull/4712
Dan kodenya: https://github.com/corbinu/bootstrap/blob/master/js/bootstrap-affix.js
Dan kemudian lakukan ini untuk memasang bilah navigasi:
sumber
Anda perlu menghapus
.affix()
dari skrip Anda.Bootstrap memberikan opsi untuk menyelesaikan hal-hal baik melalui
data-attributes
atau JavaScript langsung hampir sepanjang waktu.sumber
Saya mendapatkan ini dari kode sumber twitterbootstrap dan bekerja dengan cukup baik:
HTML:
CSS:
JS:
sumber
Anda hanya perlu menghapus skrip. Inilah contoh saya:
sumber
Terima kasih kepada namuol dan Dave Kiss untuk solusinya. Dalam kasus saya, saya memiliki masalah kecil dengan tinggi dan lebar navbar saat saya menggunakan plugin afflix dan collapse bersamaan. Masalah dengan lebar dapat dengan mudah diselesaikan dengan mewarisinya dari elemen induk (wadah dalam kasus saya). Juga saya bisa membuatnya runtuh dengan lancar dengan sedikit javascript (sebenarnya coffeescript). Triknya adalah menyetel tinggi pembungkus ke
auto
sebelum toggle runtuh terjadi dan memperbaikinya kembali setelahnya.Markup (haml):
CSS:
Coffeescript:
sumber
Solusi saya untuk memasang bilah navigasi:
sumber
Mirip dengan jawaban yang diterima, Anda juga dapat melakukan sesuatu seperti berikut untuk melakukan semuanya sekaligus:
Ini tidak hanya memanggil
affix
plugin, tetapi juga akan membungkus elemen yang ditempelkan dalam div yang akan mempertahankan tinggi asli navbar.sumber