Navbar
Dokumentácia a príklady výkonnej a citlivej navigačnej hlavičky Bootstrap, navigačnej lišty. Zahŕňa podporu pre branding, navigáciu a ďalšie, vrátane podpory pre náš plugin na zbalenie.
Ako to funguje
Tu je to, čo potrebujete vedieť predtým, ako začnete používať navigačný panel:
- Navbary vyžadujú zalomenie
.navbar
s.navbar-expand{-sm|-md|-lg|-xl|-xxl}
pre responzívne zbalenie a triedy farebnej schémy . - Navigačné panely a ich obsah sú v predvolenom nastavení plynulé. Zmeňte kontajner tak, aby ste rôznymi spôsobmi obmedzili ich horizontálnu šírku.
- Na ovládanie rozstupov a zarovnania v rámci navigačných panelov použite naše triedy rozstupov a flex .
- Navigačné panely sú v predvolenom nastavení responzívne, ale môžete ich ľahko upraviť, aby ste to zmenili. Responzívne správanie závisí od nášho doplnku Collapse JavaScript.
- Zabezpečte dostupnosť pomocou
<nav>
prvku alebo, ak používate všeobecnejší prvok, ako napríklad<div>
, pridajte arole="navigation"
na každý navigačný panel, aby ste ho explicitne identifikovali ako orientačný región pre používateľov asistenčných technológií. - Označte aktuálnu položku pomocou
aria-current="page"
pre aktuálnu stránku aleboaria-current="true"
pre aktuálnu položku v skupine. - Novinka vo verzii 5.2.0: Navigačné panely môžu byť tematicky upravené pomocou premenných CSS, ktoré sú v rozsahu
.navbar
základnej triedy..navbar-light
bol zastaraný a.navbar-dark
bol prepísaný tak, aby prepísal premenné CSS namiesto pridávania ďalších štýlov.
prefers-reduced-motion
mediálneho dopytu. Pozrite si
časť so zníženým pohybom v našej dokumentácii o prístupnosti .
Podporovaný obsah
Navigačné panely sa dodávajú so vstavanou podporou pre niekoľko podsúčiastok. Podľa potreby si vyberte z nasledujúcich možností:
.navbar-brand
pre názov vašej spoločnosti, produktu alebo projektu..navbar-nav
pre plnú výšku a ľahkú navigáciu (vrátane podpory rozbaľovacích zoznamov)..navbar-toggler
na použitie s naším zásuvným modulom pre zbalenie a inými spôsobmi prepínania navigácie .- Pomôcky Flex a medzery pre akékoľvek ovládacie prvky formulárov a akcie.
.navbar-text
na pridávanie vertikálne centrovaných reťazcov textu..collapse.navbar-collapse
na zoskupenie a skrytie obsahu navigačnej lišty pomocou nadradeného bodu prerušenia.- Pridajte voliteľnú položku
.navbar-scroll
na nastaveniemax-height
a posúvanie obsahu rozšírenej navigačnej lišty .
Tu je príklad všetkých čiastkových komponentov zahrnutých v responzívnom navigačnom paneli so svetlou tematikou, ktorý sa automaticky zbalí na lg
(veľkom) bode zlomu.
<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>
Tento príklad používa pomocné triedy pozadia ( bg-light
) a medzier ( me-auto
, mb-2
, mb-lg-0
, ).me-2
Značka
Dá .navbar-brand
sa použiť na väčšinu prvkov, ale kotva funguje najlepšie, pretože niektoré prvky môžu vyžadovať pomocné triedy alebo vlastné štýly.
Text
Pridajte svoj text do prvku s .navbar-brand
triedou.
<!-- 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>
Obrázok
Text v rámci súboru môžete nahradiť .navbar-brand
príponou <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>
Obrázok a text
Môžete tiež použiť niektoré ďalšie nástroje na pridanie obrázka a textu súčasne. Všimnite si pridanie .d-inline-block
a .align-text-top
na <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
Navigačné odkazy na navigačnom paneli stavajú na našich .nav
možnostiach s vlastnou triedou modifikátorov a vyžadujú použitie tried prepínačov pre správny responzívny štýl. Navigácia v navigačných paneloch sa tiež rozrastie, aby zaberala čo najviac horizontálneho priestoru, aby bol obsah navigačnej lišty bezpečne zarovnaný.
Pridajte .active
triedu na .nav-link
označenie aktuálnej stránky.
Upozorňujeme, že aria-current
atribút by ste mali pridať aj na aktívny .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>
A pretože používame triedy pre naše navigačné zariadenia, môžete sa úplne vyhnúť prístupu založenému na zoznamoch, ak chcete.
<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>
Môžete tiež použiť rozbaľovacie ponuky na navigačnom paneli. Rozbaľovacie ponuky vyžadujú obalový prvok na umiestnenie, takže sa uistite, že používate samostatné a vnorené prvky pre .nav-item
a .nav-link
ako je uvedené nižšie.
<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>
Formuláre
Umiestnite rôzne ovládacie prvky formulárov a komponenty na navigačnú lištu:
<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>
Okamžité podradené prvky .navbar
používajú flexibilné rozloženie a predvolene sa nastaví na justify-content: space-between
. Na úpravu tohto správania použite podľa potreby ďalšie nástroje Flex .
<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>
Fungujú aj vstupné skupiny. Ak je vaším navigačným panelom celý formulár alebo väčšinou formulár, môžete <form>
prvok použiť ako kontajner a uložiť si nejaké 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>
Ako súčasť týchto formulárov navigačnej lišty sú podporované aj rôzne tlačidlá. Je to tiež skvelá pripomienka, že nástroje na vertikálne zarovnanie možno použiť na zarovnanie prvkov rôznych veľkostí.
<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>
Text
Navigačné panely môžu obsahovať kúsky textu s pomocou .navbar-text
. Táto trieda upravuje vertikálne zarovnanie a horizontálne medzery pre reťazce textu.
<nav class="navbar bg-light">
<div class="container-fluid">
<span class="navbar-text">
Navbar text with an inline element
</span>
</div>
</nav>
Miešajte a kombinujte s ostatnými komponentmi a pomôckami podľa potreby.
<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>
Farebné schémy
.navbar-light
bola zastaraná. Premenné CSS sa aplikujú na
.navbar
, predvolene majú „svetlý“ vzhľad a možno ich prepísať pomocou
.navbar-dark
.
Témy navigačného panela sú jednoduchšie ako kedykoľvek predtým vďaka kombinácii premenných Sass a CSS od Bootstrapu. Predvolená je naša „svetlá navigačná lišta“ na použitie so svetlými farbami pozadia, ale môžete použiť aj .navbar-dark
tmavé farby pozadia. Potom prispôsobte pomocou .bg-*
nástrojov.
<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>
Kontajnery
Aj keď to nie je povinné, môžete zabaliť navigačný panel do a .container
a vycentrovať ho na stranu – aj keď si uvedomte, že vnútorný kontajner je stále potrebný. Alebo môžete pridať kontajner dovnútra, .navbar
aby ste vycentrovali iba obsah pevného alebo statického horného navigačného panela .
<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>
Použite ktorýkoľvek z responzívnych kontajnerov na zmenu toho, ako široký je obsah vo vašom navigačnom paneli prezentovaný.
<nav class="navbar navbar-expand-lg bg-light">
<div class="container-md">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
Umiestnenie
Použite naše nástroje na umiestnenie na umiestnenie navigačných panelov do nestatických pozícií. Vyberte si z možností pevne navrchu, pripevniť na spodok, nalepiť navrch (posúva so stránkou, kým nedosiahne vrch, potom tam zostane) alebo prilepiť nadol (posúva so stránkou, kým nedosiahne spodok, potom zostane tam).
Pevné navigačné panely používajú position: fixed
, čo znamená, že sú vytiahnuté z normálneho toku DOM a môžu vyžadovať vlastný CSS (napr. padding-top
na <body>
), aby sa zabránilo prekrývaniu s inými prvkami.
<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>
Rolovanie
Pridajte .navbar-nav-scroll
do .navbar-nav
(alebo iného podkomponentu navigačnej lišty), aby ste umožnili vertikálne posúvanie v rámci prepínateľného obsahu zbalenej navigačnej lišty. V predvolenom nastavení sa posúvanie začína na 75vh
(alebo 75 % výšky zobrazovanej oblasti), ale môžete to prepísať lokálnou vlastnou vlastnosťou CSS --bs-navbar-height
alebo vlastnými štýlmi. Vo väčších výrezoch po rozbalení navigačnej lišty sa obsah zobrazí ako v predvolenej navigačnej lište.
Upozorňujeme, že toto správanie má potenciálnu nevýhodu overflow
— keď nastavenie overflow-y: auto
(vyžaduje sa na posúvanie obsahu sem), overflow-x
je ekvivalentom auto
, čím sa oreže nejaký horizontálny obsah.
Tu je príklad použitia navigačnej lišty .navbar-nav-scroll
s style="--bs-scroll-height: 100px;"
, s niektorými dodatočnými pomôckami okrajov pre optimálne rozstupy.
<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>
Responzívne správanie
Navigačné panely môžu používať triedy .navbar-toggler
, .navbar-collapse
a .navbar-expand{-sm|-md|-lg|-xl|-xxl}
na určenie, kedy sa ich obsah zbalí za tlačidlo. V kombinácii s inými pomôckami si môžete jednoducho vybrať, kedy sa majú jednotlivé prvky zobraziť alebo skryť.
Pre navigačné lišty, ktoré sa nikdy nezrútia, pridajte .navbar-expand
triedu na navigačnú lištu. Pre navigačné panely, ktoré sa vždy zrútia, nepridávajte žiadnu .navbar-expand
triedu.
Prepínač
Prepínače navigačnej lišty sú v predvolenom nastavení zarovnané doľava, ale ak budú nasledovať po súrodeneckom prvku, ako je .navbar-brand
, budú automaticky zarovnané úplne vpravo. Obrátením značky zmeníte umiestnenie prepínača. Nižšie sú uvedené príklady rôznych štýlov prepínania.
Pri .navbar-brand
najmenšom zlomovom bode nie je zobrazené žiadne:
<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>
S názvom značky vľavo a prepínačom vpravo:
<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>
S prepínačom vľavo a názvom značky vpravo:
<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>
Externý obsah
Niekedy chcete použiť doplnok zbalenia na spustenie prvku kontajnera pre obsah, ktorý sa štrukturálne nachádza mimo súboru .navbar
. Pretože náš doplnok funguje na priraďovaní id
a data-bs-target
porovnávaní, je to jednoduché!
<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>
Keď to urobíte, odporúčame vám zahrnúť ďalší JavaScript, aby ste pri otvorení kontajnera programovo presunuli zameranie. V opačnom prípade používatelia klávesnice a používatelia asistenčných technológií budú mať pravdepodobne problém nájsť novo odhalený obsah – najmä ak kontajner, ktorý bol otvorený, sa nachádza pred prepínačom v štruktúre dokumentu. Odporúčame tiež uistiť sa, že prepínač má aria-controls
atribút, ktorý ukazuje na id
kontajner obsahu. Teoreticky to umožňuje používateľom asistenčných technológií skočiť priamo z prepínača do kontajnera, ktorý ovláda – ale podpora pre toto je v súčasnosti dosť nejednotná.
Offcanvas
Pomocou komponentu offcanvas premeňte svoj rozširujúci sa a stláčajúci navigačný panel na zásuvku offcanvas . Rozširujeme oba predvolené štýly offcanvas a používame naše .navbar-expand-*
triedy na vytvorenie dynamického a flexibilného bočného panela navigácie.
Ak chcete v nižšie uvedenom príklade vytvoriť navigačný panel mimo plátna, ktorý je vždy zbalený vo všetkých bodoch prerušenia, .navbar-expand-*
triedu úplne vynechajte.
<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>
Ak chcete vytvoriť navigačnú lištu mimo plátna, ktorá sa rozšíri na normálnu navigačnú lištu v špecifickom bode prerušenia, ako napríklad lg
, použite .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>
Keď používate offcanvas v tmavom navigačnom paneli, uvedomte si, že možno budete musieť mať tmavé pozadie na obsahu offcanvas, aby sa predišlo nečitateľnosti textu. V nižšie uvedenom príklade pridáme .navbar-dark
a .bg-dark
do .navbar
, .text-bg-dark
do .offcanvas
, .dropdown-menu-dark
do .dropdown-menu
a .btn-close-white
do .btn-close
pre správny štýl s tmavým offcanvasom.
<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
Premenné
Pridané vo verzii 5.2.0Ako súčasť vyvíjajúceho sa prístupu premenných CSS od Bootstrapu, navigačné panely teraz používajú lokálne premenné CSS zapnuté .navbar
na vylepšené prispôsobenie v reálnom čase. Hodnoty pre premenné CSS sa nastavujú cez Sass, takže prispôsobenie Sass je stále podporované.
--#{$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};
Niektoré ďalšie premenné CSS sú tiež prítomné na .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);
Prispôsobenie pomocou premenných CSS je možné vidieť na .navbar-dark
triede, kde prepisujeme konkrétne hodnoty bez pridávania duplicitných selektorov CSS.
--#{$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)};
Sass premenné
Premenné pre všetky navigačné panely:
$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;
Premenné pre tmavý navigačný panel :
$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;
Sass slučka
Responzívne triedy rozbalenia/zbalenia navigačnej lišty (napr. .navbar-expand-lg
) sa kombinujú s $breakpoints
mapou a generujú sa pomocou cyklu v 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;
}
}
}
}
}
}