Navbar
Dokumentasi dan contoh untuk pengepala navigasi Bootstrap yang berkuasa dan responsif, bar navigasi. Termasuk sokongan untuk penjenamaan, navigasi dan banyak lagi, termasuk sokongan untuk pemalam runtuh kami.
Bagaimana ia berfungsi
Inilah yang anda perlu ketahui sebelum memulakan dengan navbar:
- Navbar memerlukan pembalut
.navbar
untuk kelas skema warna.navbar-expand{-sm|-md|-lg|-xl|-xxl}
dan runtuh responsif . - Navbar dan kandungannya adalah cecair secara lalai. Tukar bekas untuk mengehadkan lebar mendatarnya dengan cara yang berbeza.
- Gunakan kelas utiliti jarak dan fleksibel kami untuk mengawal jarak dan penjajaran dalam bar navigasi.
- Navbars responsif secara lalai, tetapi anda boleh mengubah suainya dengan mudah untuk mengubahnya. Tingkah laku responsif bergantung pada pemalam Runtuhkan JavaScript kami.
- Pastikan kebolehaksesan dengan menggunakan
<nav>
elemen atau, jika menggunakan elemen yang lebih generik seperti<div>
, tambahkan arole="navigation"
pada setiap bar navigasi untuk mengenal pasti secara eksplisit ia sebagai kawasan mercu tanda bagi pengguna teknologi bantuan. - Tunjukkan item semasa dengan menggunakan
aria-current="page"
untuk halaman semasa atauaria-current="true"
untuk item semasa dalam set. - Baharu dalam v5.2.0: Navbar boleh bertemakan dengan pembolehubah CSS yang diskop kepada
.navbar
kelas asas..navbar-light
telah ditamatkan dan.navbar-dark
telah ditulis semula untuk mengatasi pembolehubah CSS dan bukannya menambah gaya tambahan.
prefers-reduced-motion
pertanyaan media. Lihat bahagian
gerakan yang dikurangkan dalam dokumentasi kebolehaksesan kami .
Kandungan yang disokong
Navbar datang dengan sokongan terbina dalam untuk segelintir sub-komponen. Pilih daripada yang berikut mengikut keperluan:
.navbar-brand
untuk syarikat, produk atau nama projek anda..navbar-nav
untuk navigasi berketinggian penuh dan ringan (termasuk sokongan untuk menu lungsur)..navbar-toggler
untuk digunakan dengan pemalam runtuh kami dan gelagat togol navigasi lain.- Utiliti fleksibel dan jarakkan untuk sebarang kawalan dan tindakan bentuk.
.navbar-text
untuk menambah rentetan teks berpusat menegak..collapse.navbar-collapse
untuk mengumpulkan dan menyembunyikan kandungan navbar oleh titik putus induk.- Tambahkan pilihan
.navbar-scroll
untuk menetapkanmax-height
dan tatal kandungan bar navigasi yang dikembangkan .
Berikut ialah contoh semua subkomponen yang disertakan dalam bar navigasi bertema cahaya responsif yang secara automatik runtuh pada lg
titik putus (besar).
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Contoh ini menggunakan kelas utiliti latar belakang ( bg-light
) dan jarak ( me-auto
, mb-2
, mb-lg-0
, ).me-2
Jenama
Ia .navbar-brand
boleh digunakan pada kebanyakan elemen, tetapi sauh berfungsi dengan baik, kerana sesetengah elemen mungkin memerlukan kelas utiliti atau gaya tersuai.
Teks
Tambahkan teks anda dalam elemen dengan .navbar-brand
kelas.
<!-- As a link -->
<nav class="navbar bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
<!-- As a heading -->
<nav class="navbar bg-light">
<div class="container-fluid">
<span class="navbar-brand mb-0 h1">Navbar</span>
</div>
</nav>
Imej
Anda boleh menggantikan teks dalam .navbar-brand
dengan <img>
.
<nav class="navbar bg-light">
<div class="container">
<a class="navbar-brand" href="#">
<img src="/docs/5.2/assets/brand/bootstrap-logo.svg" alt="Bootstrap" width="30" height="24">
</a>
</div>
</nav>
Imej dan teks
Anda juga boleh menggunakan beberapa utiliti tambahan untuk menambah imej dan teks pada masa yang sama. Perhatikan penambahan .d-inline-block
dan .align-text-top
pada <img>
.
<nav class="navbar bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<img src="/docs/5.2/assets/brand/bootstrap-logo.svg" alt="Logo" width="30" height="24" class="d-inline-block align-text-top">
Bootstrap
</a>
</div>
</nav>
Nav
Pautan navigasi bar navigasi membina .nav
pilihan kami dengan kelas pengubah suai mereka sendiri dan memerlukan penggunaan kelas toggler untuk penggayaan responsif yang betul. Navigasi dalam bar navigasi juga akan berkembang untuk menduduki sebanyak mungkin ruang mendatar untuk memastikan kandungan bar navigasi anda sejajar dengan selamat.
Tambahkan .active
kelas .nav-link
untuk menunjukkan halaman semasa.
Sila ambil perhatian bahawa anda juga harus menambah aria-current
atribut pada aktif .nav-link
.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
</div>
</div>
</nav>
Dan kerana kami menggunakan kelas untuk navigasi kami, anda boleh mengelakkan pendekatan berasaskan senarai sepenuhnya jika anda suka.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link active" aria-current="page" href="#">Home</a>
<a class="nav-link" href="#">Features</a>
<a class="nav-link" href="#">Pricing</a>
<a class="nav-link disabled">Disabled</a>
</div>
</div>
</div>
</nav>
Anda juga boleh menggunakan dropdown dalam bar navigasi anda. Menu lungsur turun memerlukan elemen pembalut untuk kedudukan, jadi pastikan anda menggunakan elemen yang berasingan dan bersarang untuk .nav-item
dan .nav-link
seperti yang ditunjukkan di bawah.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown link
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
Borang
Letakkan pelbagai kawalan bentuk dan komponen dalam bar navigasi:
<nav class="navbar bg-light">
<div class="container-fluid">
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</nav>
Elemen anak serta-merta .navbar
menggunakan reka letak fleksibel dan akan lalai kepada justify-content: space-between
. Gunakan utiliti flex tambahan seperti yang diperlukan untuk melaraskan tingkah laku ini.
<nav class="navbar bg-light">
<div class="container-fluid">
<a class="navbar-brand">Navbar</a>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</nav>
Kumpulan input juga berfungsi. Jika bar nav anda ialah keseluruhan borang, atau kebanyakannya borang, anda boleh menggunakan <form>
elemen sebagai bekas dan menyimpan beberapa HTML.
<nav class="navbar bg-light">
<form class="container-fluid">
<div class="input-group">
<span class="input-group-text" id="basic-addon1">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div>
</form>
</nav>
Pelbagai butang disokong sebagai sebahagian daripada borang navbar ini juga. Ini juga merupakan peringatan yang bagus bahawa utiliti penjajaran menegak boleh digunakan untuk menjajarkan elemen bersaiz berbeza.
<nav class="navbar bg-light">
<form class="container-fluid justify-content-start">
<button class="btn btn-outline-success me-2" type="button">Main button</button>
<button class="btn btn-sm btn-outline-secondary" type="button">Smaller button</button>
</form>
</nav>
Teks
Navbar mungkin mengandungi bit teks dengan bantuan .navbar-text
. Kelas ini melaraskan penjajaran menegak dan jarak mendatar untuk rentetan teks.
<nav class="navbar bg-light">
<div class="container-fluid">
<span class="navbar-text">
Navbar text with an inline element
</span>
</div>
</nav>
Campurkan dan padankan dengan komponen dan utiliti lain mengikut keperluan.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar w/ text</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarText">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
</ul>
<span class="navbar-text">
Navbar text with an inline element
</span>
</div>
</div>
</nav>
Skim warna
.navbar-light
telah ditamatkan. Pembolehubah CSS digunakan pada
.navbar
, lalai kepada penampilan "cahaya", dan boleh diganti dengan
.navbar-dark
.
Tema Navbar lebih mudah berbanding sebelum ini terima kasih kepada gabungan pembolehubah Sass dan CSS Bootstrap. Lalai ialah "navbar cahaya" kami untuk digunakan dengan warna latar belakang terang, tetapi anda juga boleh memohon .navbar-dark
untuk warna latar belakang gelap. Kemudian, sesuaikan dengan .bg-*
utiliti.
<nav class="navbar navbar-dark bg-dark">
<!-- Navbar content -->
</nav>
<nav class="navbar navbar-dark bg-primary">
<!-- Navbar content -->
</nav>
<nav class="navbar" style="background-color: #e3f2fd;">
<!-- Navbar content -->
</nav>
Bekas
Walaupun ia tidak diperlukan, anda boleh membungkus bar nav dalam a .container
untuk memusatkannya pada halaman–walaupun ambil perhatian bahawa bekas dalam masih diperlukan. Atau anda boleh menambah bekas di dalam .navbar
untuk hanya memusatkan kandungan bar navigasi atas tetap atau statik .
<div class="container">
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
</div>
Gunakan mana-mana bekas responsif untuk menukar keluasan kandungan dalam bar navigasi anda dipersembahkan.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-md">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
Penempatan
Gunakan utiliti kedudukan kami untuk meletakkan navbar dalam kedudukan bukan statik. Pilih daripada tetap ke atas, tetap ke bawah, melekat pada bahagian atas (tatal dengan halaman sehingga ia mencapai bahagian atas, kemudian kekal di sana) atau melekat pada bahagian bawah (tatal dengan halaman sehingga ia mencapai bahagian bawah, kemudian kekal sana).
Navbar tetap menggunakan position: fixed
, bermakna ia ditarik daripada aliran biasa DOM dan mungkin memerlukan CSS tersuai (cth, padding-top
pada <body>
) untuk mengelakkan pertindihan dengan elemen lain.
<nav class="navbar bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Default</a>
</div>
</nav>
<nav class="navbar fixed-top bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Fixed top</a>
</div>
</nav>
<nav class="navbar fixed-bottom bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Fixed bottom</a>
</div>
</nav>
<nav class="navbar sticky-top bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Sticky top</a>
</div>
</nav>
<nav class="navbar sticky-bottom bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Sticky bottom</a>
</div>
</nav>
Menatal
Tambahkan .navbar-nav-scroll
pada .navbar-nav
(atau sub-komponen navbar lain) untuk mendayakan tatal menegak dalam kandungan boleh togol bar navigasi yang runtuh. Secara lalai, penatalan bermula pada 75vh
(atau 75% daripada ketinggian port pandangan), tetapi anda boleh mengatasinya dengan sifat tersuai CSS tempatan --bs-navbar-height
atau gaya tersuai. Pada port pandangan yang lebih besar apabila bar navigasi dikembangkan, kandungan akan muncul seperti dalam bar navigasi lalai.
Sila ambil perhatian bahawa tingkah laku ini datang dengan potensi kelemahan overflow
—apabila tetapan overflow-y: auto
(diperlukan untuk menatal kandungan di sini), overflow-x
adalah bersamaan dengan auto
, yang akan memangkas beberapa kandungan mendatar.
Berikut ialah contoh navbar menggunakan .navbar-nav-scroll
dengan style="--bs-scroll-height: 100px;"
, dengan beberapa utiliti margin tambahan untuk jarak optimum.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar scroll</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll" aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarScroll">
<ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Link
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled">Link</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Tingkah laku responsif
Navbar boleh menggunakan .navbar-toggler
, .navbar-collapse
, dan .navbar-expand{-sm|-md|-lg|-xl|-xxl}
kelas untuk menentukan masa kandungannya runtuh di belakang butang. Dalam kombinasi dengan utiliti lain, anda boleh dengan mudah memilih masa untuk menunjukkan atau menyembunyikan elemen tertentu.
Untuk bar navigasi yang tidak pernah runtuh, tambahkan .navbar-expand
kelas pada bar navigasi. Untuk bar nav yang sentiasa runtuh, jangan tambah sebarang .navbar-expand
kelas.
Toggler
Togol Navbar dijajarkan ke kiri secara lalai, tetapi sekiranya mereka mengikut elemen adik-beradik seperti a .navbar-brand
, ia akan dijajarkan secara automatik ke hujung kanan. Membalikkan penanda anda akan membalikkan peletakan togol. Di bawah ialah contoh gaya togol yang berbeza.
Tanpa .navbar-brand
ditunjukkan pada titik putus terkecil:
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo01">
<a class="navbar-brand" href="#">Hidden brand</a>
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Dengan nama jenama ditunjukkan di sebelah kiri dan togol di sebelah kanan:
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Dengan togol di sebelah kiri dan nama jenama di sebelah kanan:
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Navbar</a>
<div class="collapse navbar-collapse" id="navbarTogglerDemo03">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Kandungan luaran
Kadangkala anda ingin menggunakan pemalam runtuh untuk mencetuskan elemen bekas untuk kandungan yang secara berstruktur terletak di luar .navbar
. Kerana pemalam kami berfungsi pada id
dan data-bs-target
padanan, itu mudah dilakukan!
<div class="collapse" id="navbarToggleExternalContent">
<div class="bg-dark p-4">
<h5 class="text-white h4">Collapsed content</h5>
<span class="text-muted">Toggleable via the navbar brand.</span>
</div>
</div>
<nav class="navbar navbar-dark bg-dark">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
Apabila anda melakukan ini, kami mengesyorkan memasukkan JavaScript tambahan untuk mengalihkan fokus secara pemprograman ke bekas apabila ia dibuka. Jika tidak, pengguna papan kekunci dan pengguna teknologi bantuan berkemungkinan akan mengalami kesukaran mencari kandungan yang baru didedahkan - terutamanya jika bekas yang dibuka datang sebelum togol dalam struktur dokumen. Kami juga mengesyorkan untuk memastikan bahawa togol mempunyai aria-controls
atribut, menunjuk pada id
bekas kandungan. Secara teorinya, ini membolehkan pengguna teknologi bantuan melompat terus dari togol ke bekas yang dikawalnya–tetapi sokongan untuk perkara ini pada masa ini agak bertompok-tompok.
Luar Kanvas
Ubah navbar anda yang mengembang dan runtuh menjadi laci offcanvas dengan komponen offcanvas . Kami melanjutkan kedua-dua gaya lalai offcanvas dan menggunakan .navbar-expand-*
kelas kami untuk mencipta bar sisi navigasi yang dinamik dan fleksibel.
Dalam contoh di bawah, untuk mencipta navbar offcanvas yang sentiasa runtuh merentas semua titik putus, tinggalkan .navbar-expand-*
kelas sepenuhnya.
<nav class="navbar bg-light fixed-top">
<div class="container-fluid">
<a class="navbar-brand" href="#">Offcanvas navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasNavbarLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</div>
</nav>
Untuk mencipta navbar offcanvas yang berkembang menjadi navbar biasa pada titik putus tertentu seperti lg
, gunakan .navbar-expand-lg
.
<nav class="navbar navbar-expand-lg bg-light fixed-top">
<a class="navbar-brand" href="#">Offcanvas navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarOffcanvasLg" aria-controls="navbarOffcanvasLg">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="navbarOffcanvasLg" aria-labelledby="navbarOffcanvasLgLabel">
...
</div>
</nav>
Apabila menggunakan offcanvas dalam bar navigasi gelap, maklum bahawa anda mungkin perlu mempunyai latar belakang gelap pada kandungan offcanvas untuk mengelakkan teks menjadi tidak terbaca. Dalam contoh di bawah, kami menambah .navbar-dark
dan .bg-dark
pada .navbar
, .text-bg-dark
kepada .offcanvas
, .dropdown-menu-dark
kepada .dropdown-menu
, dan .btn-close-white
kepada .btn-close
untuk penggayaan yang betul dengan offkanvas gelap.
<nav class="navbar navbar-dark bg-dark fixed-top">
<div class="container-fluid">
<a class="navbar-brand" href="#">Offcanvas dark navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasDarkNavbar" aria-controls="offcanvasDarkNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end text-bg-dark" tabindex="-1" id="offcanvasDarkNavbar" aria-labelledby="offcanvasDarkNavbarLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasDarkNavbarLabel">Dark offcanvas</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu dropdown-menu-dark">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-success" type="submit">Search</button>
</form>
</div>
</div>
</div>
</nav>
CSS
Pembolehubah
Ditambah dalam v5.2.0Sebagai sebahagian daripada pendekatan pembolehubah CSS Bootstrap yang berkembang, bar nav kini menggunakan pembolehubah CSS tempatan .navbar
untuk penyesuaian masa nyata yang dipertingkatkan. Nilai untuk pembolehubah CSS ditetapkan melalui Sass, jadi penyesuaian Sass masih disokong juga.
--#{$prefix}navbar-padding-x: #{if($navbar-padding-x == null, 0, $navbar-padding-x)};
--#{$prefix}navbar-padding-y: #{$navbar-padding-y};
--#{$prefix}navbar-color: #{$navbar-light-color};
--#{$prefix}navbar-hover-color: #{$navbar-light-hover-color};
--#{$prefix}navbar-disabled-color: #{$navbar-light-disabled-color};
--#{$prefix}navbar-active-color: #{$navbar-light-active-color};
--#{$prefix}navbar-brand-padding-y: #{$navbar-brand-padding-y};
--#{$prefix}navbar-brand-margin-end: #{$navbar-brand-margin-end};
--#{$prefix}navbar-brand-font-size: #{$navbar-brand-font-size};
--#{$prefix}navbar-brand-color: #{$navbar-light-brand-color};
--#{$prefix}navbar-brand-hover-color: #{$navbar-light-brand-hover-color};
--#{$prefix}navbar-nav-link-padding-x: #{$navbar-nav-link-padding-x};
--#{$prefix}navbar-toggler-padding-y: #{$navbar-toggler-padding-y};
--#{$prefix}navbar-toggler-padding-x: #{$navbar-toggler-padding-x};
--#{$prefix}navbar-toggler-font-size: #{$navbar-toggler-font-size};
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-light-toggler-icon-bg)};
--#{$prefix}navbar-toggler-border-color: #{$navbar-light-toggler-border-color};
--#{$prefix}navbar-toggler-border-radius: #{$navbar-toggler-border-radius};
--#{$prefix}navbar-toggler-focus-width: #{$navbar-toggler-focus-width};
--#{$prefix}navbar-toggler-transition: #{$navbar-toggler-transition};
Beberapa pembolehubah CSS tambahan juga terdapat pada .navbar-nav
:
--#{$prefix}nav-link-padding-x: 0;
--#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
@include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
--#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
--#{$prefix}nav-link-color: var(--#{$prefix}navbar-color);
--#{$prefix}nav-link-hover-color: var(--#{$prefix}navbar-hover-color);
--#{$prefix}nav-link-disabled-color: var(--#{$prefix}navbar-disabled-color);
Penyesuaian melalui pembolehubah CSS boleh dilihat pada .navbar-dark
kelas di mana kami mengatasi nilai tertentu tanpa menambah pemilih CSS pendua.
--#{$prefix}navbar-color: #{$navbar-dark-color};
--#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
--#{$prefix}navbar-disabled-color: #{$navbar-dark-disabled-color};
--#{$prefix}navbar-active-color: #{$navbar-dark-active-color};
--#{$prefix}navbar-brand-color: #{$navbar-dark-brand-color};
--#{$prefix}navbar-brand-hover-color: #{$navbar-dark-brand-hover-color};
--#{$prefix}navbar-toggler-border-color: #{$navbar-dark-toggler-border-color};
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
Pembolehubah Sass
Pembolehubah untuk semua navbar:
$navbar-padding-y: $spacer * .5;
$navbar-padding-x: null;
$navbar-nav-link-padding-x: .5rem;
$navbar-brand-font-size: $font-size-lg;
// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2;
$navbar-brand-height: $navbar-brand-font-size * $line-height-base;
$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5;
$navbar-brand-margin-end: 1rem;
$navbar-toggler-padding-y: .25rem;
$navbar-toggler-padding-x: .75rem;
$navbar-toggler-font-size: $font-size-lg;
$navbar-toggler-border-radius: $btn-border-radius;
$navbar-toggler-focus-width: $btn-focus-width;
$navbar-toggler-transition: box-shadow .15s ease-in-out;
$navbar-light-color: rgba($black, .55);
$navbar-light-hover-color: rgba($black, .7);
$navbar-light-active-color: rgba($black, .9);
$navbar-light-disabled-color: rgba($black, .3);
$navbar-light-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>");
$navbar-light-toggler-border-color: rgba($black, .1);
$navbar-light-brand-color: $navbar-light-active-color;
$navbar-light-brand-hover-color: $navbar-light-active-color;
Pembolehubah untuk navbar gelap :
$navbar-dark-color: rgba($white, .55);
$navbar-dark-hover-color: rgba($white, .75);
$navbar-dark-active-color: $white;
$navbar-dark-disabled-color: rgba($white, .25);
$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>");
$navbar-dark-toggler-border-color: rgba($white, .1);
$navbar-dark-brand-color: $navbar-dark-active-color;
$navbar-dark-brand-hover-color: $navbar-dark-active-color;
Gelung Sass
Kelas pengembangan/runtuhkan bar navigasi responsif (cth, .navbar-expand-lg
) digabungkan dengan $breakpoints
peta dan dijana melalui gelung dalam scss/_navbar.scss
.
// Generate series of `.navbar-expand-*` responsive classes for configuring
// where your navbar collapses.
.navbar-expand {
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
// stylelint-disable-next-line scss/selector-no-union-class-name
&#{$infix} {
@include media-breakpoint-up($next) {
flex-wrap: nowrap;
justify-content: flex-start;
.navbar-nav {
flex-direction: row;
.dropdown-menu {
position: absolute;
}
.nav-link {
padding-right: var(--#{$prefix}navbar-nav-link-padding-x);
padding-left: var(--#{$prefix}navbar-nav-link-padding-x);
}
}
.navbar-nav-scroll {
overflow: visible;
}
.navbar-collapse {
display: flex !important; // stylelint-disable-line declaration-no-important
flex-basis: auto;
}
.navbar-toggler {
display: none;
}
.offcanvas {
// stylelint-disable declaration-no-important
position: static;
z-index: auto;
flex-grow: 1;
width: auto !important;
height: auto !important;
visibility: visible !important;
background-color: transparent !important;
border: 0 !important;
transform: none !important;
@include box-shadow(none);
@include transition(none);
// stylelint-enable declaration-no-important
.offcanvas-header {
display: none;
}
.offcanvas-body {
display: flex;
flex-grow: 0;
padding: 0;
overflow-y: visible;
}
}
}
}
}
}