Bootstrap 4 Cambia colore dell'hamburger Toggler


125

Ho un sito Web di bootstrap in cui viene aggiunto il toggler dell'hamburger quando la dimensione dello schermo è inferiore a 992 px. Il codice è così:

<button class="navbar-toggler navbar-toggler-right" 
        type="button" data-toggle="collapse" 
        data-target="#navbarSupportedContent" 
        aria-controls="navbarSupportedContent" 
        aria-expanded="false" 
        aria-label="Toggle navigation"> 
    <span class="navbar-toggler-icon"></span> 
</button>

C'è la possibilità di cambiare il colore del pulsante di commutazione dell'hamburger?


2
Il codice non funziona come in bootply
— Jordan.JD

Non è proprio una risposta, ma puoi giocare con l'icona navbar-toggler su advertentiekracht.nl/togglerIcon.html L'icona toggler bootstraps è usata come elemento di stile esterno invece di riferirsi al foglio di stile bootstrap. Viene anche spiegato come gestirlo.
— Ben Thijssen

Risposte:


245

L ' navbar-toggler-icon(hamburger) in Bootstrap 4 utilizza un SVG background-image. Sono disponibili 2 "versioni" dell'immagine dell'icona di attivazione / disattivazione. Uno per una barra di navigazione chiara e uno per una barra di navigazione scura ...

  • Utilizzare navbar-darkper un commutatore chiaro / bianco su sfondi più scuri
  • Utilizzare navbar-lightper un alternatore scuro / grigio su sfondi più chiari

// this is a black icon with 50% opacity
.navbar-light .navbar-toggler-icon {
  background-image: url("data:image/svg+xml;..");
}
// this is a white icon with 50% opacity
.navbar-dark .navbar-toggler-icon {
  background-image: url("data:image/svg+xml;..");
}

Pertanto, se desideri modificare il colore dell'immagine del commutatore in qualcos'altro, puoi personalizzare l'icona. Ad esempio, qui ho impostato il valore RGB su rosa (255,102,203). Notare il stroke='rgba(255,102,203, 0.5)'valore nei dati SVG:

.custom-toggler .navbar-toggler-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,102,203, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
}

.custom-toggler.navbar-toggler {
  border-color: rgb(255,102,203);
} 

Demo http://www.codeply.com/go/4FdZGlPMNV

OFC, un'altra opzione per utilizzare semplicemente un'icona da un'altra libreria, ad esempio: Font Awesome, ecc.


Aggiorna Bootstrap 4.0.0:

A partire da Bootstrap 4 Beta, navbar-inverseè ora navbar-darkda utilizzare su barre di navigazione con colori di sfondo più scuri per produrre collegamenti più chiari e colori di commutazione.


Come cambiare i colori della barra di navigazione di Bootstrap 4


2
In Bootstrap 4 beta 1 non esiste una .navbar-inverseclasse. puoi scegliere tra due classi: .navbar-lighto .navbar-dark.
— Qrzysio

55

Usa un'icona fantastica per i caratteri come icona predefinita della tua barra di navigazione.

<span class="navbar-toggler-icon">   
    <i class="fas fa-bars" style="color:#fff; font-size:28px;"></i>
</span>

Oppure provalo su vecchie versioni fantastiche di font:

<span class="navbar-toggler-icon">   
    <i class="fa fa-navicon" style="color:#fff; font-size:28px;"></i>
</span>

3
Per fontawesome 5 usa le barre. fontawesome.com/icons/bars?style=solid
— Murtaza Bhurgri

È un'idea molto migliore.
— Shiva Manhar,

7

Puoi creare il pulsante di attivazione / disattivazione con CSS solo in un modo molto semplice, non è necessario utilizzare alcun carattere in SVG o ... foramt.

Il tuo pulsante:

<button 
     class="navbar-toggler collapsed" 
    data-target="#navbarsExampleDefault" 
    data-toggle="collapse">
        <span class="line"></span> 
        <span class="line"></span> 
        <span class="line"></span>
</button>

Il tuo stile pulsante:

.navbar-toggler{
width: 47px;
height: 34px;
background-color: #7eb444;

}

Il tuo stile di linea orizzontale:

.navbar-toggler .line{
width: 100%;
float: left;
height: 2px;
background-color: #fff;
margin-bottom: 5px;

}

dimostrazione

.navbar-toggler{
    width: 47px;
    height: 34px;
    background-color: #7eb444;
    border:none;
}
.navbar-toggler .line{
    width: 100%;
    float: left;
    height: 2px;
    background-color: #fff;
    margin-bottom: 5px;
}
<button class="navbar-toggler" data-target="#navbarsExampleDefault" data-toggle="collapse" aria-expanded="true" >
        <span class="line"></span> 
        <span class="line"></span> 
        <span class="line" style="margin-bottom: 0;"></span>
</button>


5

basta inserire la classe navbar-darko navbar-lightnell'elemento nav:

<nav class="navbar navbar-dark navbar-expand-md">
    <button class="navbar-toggler">
        <span class="navbar-toggler-icon"></span>
    </button>
</nav>

4

Il modo più semplice è sostituire questo codice bootstrap predefinito:

<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
</button>

da questo :

<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="" role="button" ><i class="fa fa-bars" aria-hidden="true" style="color:#e6e6ff"></i></span>
</button>

E non dimenticare di aggiungere questo codice anche al tuo file:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 

Spero che sia d'aiuto!!


3

Se hai scaricato bootstrap, vai a bootstrap-4.4.1-dist / css / bootstrap.min

io. trova il .navbar-light .navbar-toggler-icono il .navbar-dark .navbar-toggler-iconselettore

ii. seleziona l'attributo background-image e il suo valore. Lo snippet ha questo aspetto:

.navbar-light .navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

iii. copia lo snippet e incollalo nel tuo CSS personalizzato

iv. modificare il stroke=’rgba(0,0,0,0.5)’valore con il valore rgba preferito


2

EDIT: il mio male! Con la mia risposta, l'icona non si comporterà come un commutatore In realtà, verrà mostrato anche quando non è compresso ... Sto ancora cercando ...

Questo funzionerebbe:

<button class="btn btn-primary" type="button" data-toggle="collapse" 
    data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
    aria-expanded="false" aria-label="Toggle navigation">
    <span>
        <i class="fas fa-bars"></i>
    </span>
</button>

Il trucco proposto dalla mia risposta è sostituire la navbar-togglercon una classica classe di pulsanti btne quindi, come risposto in precedenza, utilizzare un carattere icona.

Nota che se tieni <button class="navbar-toggler">premuto, il pulsante avrà una forma "strana".

Come affermato in questo post su GitHub , bootstrap utilizza alcuni "trucchi CSS", quindi gli utenti non devono fare affidamento sui caratteri.

Quindi, non usare la "navbar-toggler"classe sul tuo pulsante se vuoi usare un carattere icona.

Saluti.


Questo "funziona" solo se usi Font Awesome che non fa parte di Bootstrap
— Zim

Immagino che sia necessario rimuovere il commento sulla risposta data da Amirreza Mohammadi nell'elenco. Grazie.
— NoChance

2

Ho appena sviluppato una soluzione notevolmente più semplice. (Sì, so che questa è una vecchia domanda, ma qualcuno che sta cercando lo stesso problema potrebbe trovarlo utile.)

Stavo usando un SVG chiamato hamburger.svg. L'ho guardato con un editor di testo e non sono riuscito a trovare nulla che stesse impostando un colore per le tre linee - immagino che sia nero per impostazione predefinita perché questo è certamente il comportamento che ottengo - quindi ho semplicemente aggiunto un parametro "tratto" a la definizione di SVG. Non ha funzionato MOLTO - i bordi delle tre linee erano il colore scelto (bianco) ma il resto della linea era ancora nero, quindi ho aggiunto anche un parametro "riempimento". E questo ha funzionato!

Ecco il codice per l'originale hamburger.svg nella sua interezza:

<?xml version="1.0" ?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg height="32px" id="Layer_1" style="enable-background:new 0 0 32 32;" version="1.1" viewBox="0 0 32 32" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2  s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2  S29.104,22,28,22z"/></svg>

Ed ecco il codice per il nuovo SVG dopo averlo modificato e salvato come hamburger_white.svg:

<?xml version="1.0" ?><!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN'  'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg height="32px" id="Layer_1" style="enable-background:new 0 0 32 32;" version="1.1" viewBox="0 0 32 32" width="32px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2  s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2  S29.104,22,28,22z" stroke="white" fill="white"/></svg>

Come puoi vedere se scorri verso destra, tutto quello che ho fatto è stato aggiungere:

stroke="white" fill="white"

fino alla fine del percorso. L'altra cosa che dovevo fare era cambiare il nome del file dell'hamburger nell'HTML. Nessun problema con il CSS e nessuna necessità di rintracciare un'altra icona.

Easy-peasey! Puoi imitarlo per rendere il tuo hamburger del colore che preferisci.


1

Se lavori con la versione sass di bootstrap _variables.scsspuoi trovare $navbar-inverse-toggler-bgo$navbar-light-toggler-bg dove puoi cambiare il colore e lo stile del tuo pulsante di attivazione / disattivazione.

In html devi usare navbar-inverseoa navbar-lightseconda della versione che vuoi usare.


non funziona in bootstrap 4 per quanto riguarda navbar-light
— botbot

1

In alternativa puoi sempre provare una soluzione più semplice, utilizzando un'altra icona, ad esempio:

<button type="button" style="background:none;border:none">
    <span class="fa fa-reorder"></span>
</button>

rif: https://www.w3schools.com/icons/fontawesome_icons_webapp.asp

<button type="button" style="background:none;border:none">
    <span class="glyphicon glyphicon-align-justify"></span>
</button>

rif: https://www.w3schools.com/icons/bootstrap_icons_glyphicons.asp

In questo modo ottieni il controllo totale sul loro colore e dimensione:

button span {
    /*overwriting*/
    color: white;
    font-size: 25px;
}

inserisci qui la descrizione dell'immagine

( lo stile del pulsante applicato è solo per un rapido test ):


1

Icona predefinita della barra di navigazione bootstrap

<span class="navbar-toggler-icon"></span>

Aggiungi icona Font Awesome e rimuovi class="navbar-toggler-icon"

<span> <i class="fas fa-bars" style="color:#fff; font-size:28px;"></i> </span>


0

Controlla la soluzione migliore per il navigatore hamburger personalizzato.

@import "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css";
.bg-iconnav {
  background: #f0323d;
  /* Old browsers */
  background: -moz-linear-gradient(top, #f0323d 0%, #e6366c 100%);
  /* FF3.6-15 */
  background: -webkit-linear-gradient(top, #f0323d 0%, #e6366c 100%);
  /* Chrome10-25,Safari5.1-6 */
  background: linear-gradient(to bottom, #f0323d 0%, #e6366c 100%);
  /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f0323d', endColorstr='#e6366c', GradientType=0);
  /* IE6-9 */
  border-radius: 0;
  padding: 10px;
}

.navbar-toggler-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
}
<button class="navbar-toggler bg-iconnav" type="button">
<span class="navbar-toggler-icon"></span>
</button>

immagine demo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.