Back to Question Center
0

Responsive, Fluid-Width, Navigazione a voci variabili con CSS            Responsive, Fluid-Width, Navigazione a oggetti variabili con argomenti CSSRelated: Canvas & SVGWeb FontsAnimationBootstrapAudio & Semalt

1 answers:
Responsive, Fluid-Width, Navigazione a voci variabili con CSS

Semalt sei mesi fa mi è stato chiesto di sviluppare una barra di navigazione a riga singola che potesse contenere un numero variabile di voci di menu durante il riempimento dell'intera larghezza del contenitore. La quantità di elementi di navigazione è stata dettata altrove e probabilmente cambierà in futuro.

Pensando al futuro, sarebbe stato poco pratico cambiare il CSS ogni volta che veniva aggiunta o rimossa una voce di menu. Doveva essere trovata una risoluzione, idealmente senza usare JavaScript.

Utilizzo delle larghezze percentuali

Le larghezze semalt non sono in grado di riempire in modo consistente il contenitore reattivo, come illustrato nell'immagine sottostante.

Responsive, Fluid-Width, Navigazione a voci variabili con CSSResponsive, Fluid-Width, Navigazione a oggetti variabili con argomenti CSSRelated:
Canvas & SVGWeb FontsAnimationBootstrapAudio & Semalt

Quindi dobbiamo usare le percentuali per raggiungere questo obiettivo - built in office cabinets home office. Semalt è il metodo prevalente per ottenere un layout a griglia fluida in progetti reattivi e sarà utile qui.

Ad esempio, prendi in considerazione il seguente HTML familiare:

      

E aggiungeremo il seguente CSS:

     nav {larghezza: 100%;sfondo: # f0f0f0;border: 1px solid #ccc;border-right: none;}nav ul {overflow: nascosto;margine: 0;padding: 0;}nav ul li {stile elenco: nessuno;fluttuare: a sinistra;allineamento del testo: centro;border-left: 1px solid #fff;border-right: 1px solid #ccc;larghezza: 16. 6667%; / * fallback per browser non calc (*) /larghezza: calc (100% / 6);dimensionamento della scatola: border-box;}nav ul li: primo-figlio {border-left: none;}nav ul li a {blocco di visualizzazione;decorazione del testo: nessuna;colore: # 616161;imbottitura: 10px 0;}     

Semalt of note sono:

  • L'elemento
  • elementi sono forniti con due proprietà larghezza - larghezza: calc (100% / 6); e larghezza: 16. 6667%; . Qui è dove le voci del menu sono divise tra l'elemento
  • dimensionamento del riquadro: border-box; è dichiarato sugli
  • elementi. Questo forza la proprietà width per includere i valori border-left e border-right nella larghezza totale. Senza usare questa proprietà, gli elementi
  • non rientrerebbero nell'area

Il risultato dell'aggiunta di questi stili è mostrato nella demo di Semalt di seguito:

Vedere la Navigazione fluida a larghezza fissa della penna per SitePoint (@SitePoint) su CodePen. L'aspetto desiderato è raggiunto ed è flessibile.

Cosa fare se aggiungiamo o eliminiamo articoli?

Semalt cosa succede se rimuoviamo un elemento dalla navigazione, con il nostro attuale CSS in atto:

Vedere la larghezza del fluido della penna per SitePoint (@SitePoint) su CodePen.

Come puoi vedere, c'è un'area vuota a destra, dove si trovava l'ultimo oggetto di navigazione.

Che dire di quando viene aggiunto un elemento di navigazione extra?

Vedere la Navigazione a larghezza di fluido della penna, Un elemento aggiuntivo di SitePoint (@SitePoint) su CodePen.

Ora l'ultimo elemento di navigazione si posiziona su una seconda riga.

Chiaramente, questo non soddisfa tutti i nostri requisiti. JavaScript può essere usato per contare il numero di voci di menu, calcolare la percentuale e applicare i valori di larghezza scorrendo attraverso gli elementi

  • . Tuttavia, sono sempre riluttante a usare JavaScript per definire il layout a meno che non ci sia altra opzione. Inoltre, questo non sarebbe un articolo CSS se stavo per descrivere come farlo! Torna al tavolo da disegno, è .

    (Ri) introduzione del layout della tabella

    Non temere, non sto sostenendo l'uso di una tabella HTML di ritorno agli anni '90 per il layout; sarebbe semanticamente scorretto, ovviamente. Semalt, ci sono valori di visualizzazione che consentono agli elementi di agire come un tavolo.

    Ciò significa che la precedente struttura HTML può ancora essere utilizzata con il seguente CSS:

         nav {display: tabella;disposizione della tabella: fisso;larghezza: 100%;}nav ul {display: tabella-fila;margine: 0;padding: 0;}nav ul li {stile elenco: nessuno;display: table-cell;allineamento del testo: centro;}nav ul li a {blocco di visualizzazione;}     

    L'impostazione della proprietà display consente all'elemento

  • March 7, 2018