header , nav e flex

Gae

Utente Attivo
15 Mar 2021
36
2
8
Salve sto imparando l'uso dei css e ho trovato interessante la proprietà flex
Ho un header in cui visualizzo il logo e la scritta del sito uno di fianco all'altro.
Mi serve inserire un menù di navigazione, sempre all'interno dell'header, che però dovrebbe andare a capo sotto l'immagine.
Ho fatto varie prove ma non sono riuscito a farlo.
Quello che serve a me si realizza in maniera diversa ?
Posto il codice

HTML:
<header class='header'>
    <!-- Contenuto dell'intestazione -->
    <a href='BE'> <img src="{% static 'Pale/Img/logo.png' %}" alt="Visualizza" title="Pagina Principale"> </a>
    {% block inte %} Gestione  {% endblock %}
    INTESTAZIONE
<nav class='menuToolBar'>
            <!-- Contenuto del menu di navigazione -->
            <ul>
                <li> <a href='/BE'>Home</a> </li>
                <li> <a href='#'>Servizi</a> </li>
                <li> <a href='#'>Contatti</a> </li>
                <!-- Altri elementi del menu -->
            </ul>
    </nav>
</header>

CSS:
.header {
    display: flex;
    align-items: center;
    color: var(--header-fg);
    background-color: var(--header-bg);
}

.header .menuToolBar {
    display: flex;
    flex-wrap: wrap;
   flex-direction: column; /* Visualizza gli elementi del menuToolBar in una colonna */
    align-items: center; /* Centra gli elementi del menuToolBar orizzontalmente */

 list-style-type: none;
margin: 10px;
}

.header .menuToolBar ul {
    list-style-type: none;
padding: 0;
margin: 0;
}

.header .menuToolBar ul li {
display: inline-block;
    margin-right: 10px;
}

.header .menuToolBar ul li a {
text-decoration: none;
    color: orange;
}
 
Ultima modifica di un moderatore:

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
437
73
28
Ciao, è importante considerare che flexbox è unidimensionale, cioè agisce su una sola dimensione per volta.

Dal momento che vuoi disporre gli elementi sia in orizzontale (logo e scritta) sia in verticale (il menu che deve andare a capo) può essere necessario avvolgerli in contenitori distinti.

Il codice che hai postato non è sufficiente per comprendere come si possa intervenire in maniera precisa,, servirebbe un esempio minimo ma completo con cui poter riprodurre l'esatto scenario.

Ad ogni modo suppongo che sia necessario principalmente avvolgere logo e scritta, assieme, dentro un contenitore (può essere un semplice div). Questo div può essere quindi impostato con flex orizzontalmente, mentre .header dovrà essere impostato con flex verticalmente, in modo che i due elementi (il div e il nav) siano disposti uno sotto l'altro (cioè il nav andrà praticamente a capo).

Partirei da questo principio, eventualmente il resto si potrà valutare meglio.
Fai magari qualche prova e vedi cosa riesci ad ottenere.

Se trovi difficoltà ti invito a postare un esempio completo o il link della pagina in questione così da poter avere un riscontro diretto.
 

Gae

Utente Attivo
15 Mar 2021
36
2
8
Ti ringrazio della spiegazione. In base a quel che mi hai detto farò delle prove
Grazie
 

johnsmith43

Nuovo Utente
13 Feb 2024
6
0
1
Sì, è possibile realizzare quello che hai in mente utilizzando i CSS. Il problema con il tuo codice attuale è che stai usando due proprietà flexbox contrastanti:


  • flex-direction: column sul .menuToolBar fa sì che gli elementi del menu vengano visualizzati uno sopra l'altro in una colonna.
  • align-items: center sul .header centra gli elementi all'interno del contenitore flex, in questo caso sia il logo che il menu.

Per risolvere il problema, devi fare due piccole modifiche:


  1. Applicare flex-direction: row al .menuToolBar: questo imposterà la direzione del flexbox su orizzontale, in modo che gli elementi del menu vengano visualizzati affiancati.
  2. Aggiungere un margine sinistro al .menuToolBar: questo lo sposterà a destra rispetto al logo, creando lo spazio necessario per il menu.

Ecco il codice CSS modificato:


CSS
.header {
display: flex;
align-items: center;
color: var(--header-fg);
background-color: var(--header-bg);
}

.header .menuToolBar {
display: flex;
flex-wrap: wrap;
flex-direction: row; /* Modifica qui */
align-items: center; /* Centra gli elementi del menuToolBar orizzontalmente */
margin-left: 10px; /* Nuovo margine sinistro */

list-style-type: none;
margin: 10px;
}

...

Con queste modifiche, il tuo menu di navigazione dovrebbe apparire correttamente sotto l'immagine del logo, con gli elementi del menu disposti orizzontalmente.


Altri consigli:


  • Puoi utilizzare la proprietà justify-content per allineare gli elementi del menu all'interno del contenitore flex. Ad esempio, justify-content: space-between li distribuirà uniformemente con lo stesso spazio tra loro.
  • Puoi utilizzare la proprietà margin per regolare la spaziatura tra il logo, il menu e i bordi del contenitore .header.
  • Puoi utilizzare media queries per adattare il layout del tuo header a diverse dimensioni dello schermo.

Esempio di utilizzo di justify-content:


CSS
.header .menuToolBar {
...
justify-content: space-between;
}

Esempio di utilizzo di media queries:


CSS
@media (max-width: 768px) {
.header .menuToolBar {
flex-direction: column;
}
}

Spero che questo ti aiuti! Se hai altre domande o dubbi, non esitare a chiedere.
 
Discussioni simili
Autore Titolo Forum Risposte Data
J Inserimento di un header, nav, footer php PHP 0
A Logo si sovrappone all'header HTML e CSS 1
I $header HTML e CSS 0
J Header location PHP 3
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
M [PHP] header (location..) non funzionante dopo login PHP 3
M [HTML] Picture Tag non funziona in header-Element HTML e CSS 0
M [WordPress] Header responsive WordPress 5
M Header responsive Presentati al Forum 0
P [WordPress] header-post-title-class WordPress 7
R [HTML] sfondo header HTML e CSS 0
L [HTML] Flusso contenuti sotto la header HTML e CSS 9
Kolop [WordPress] [HTML] Problema header su mobile WordPress 4
W [XAMPP] File "header.php" non si vede su XAMPP PHP 0
giuseppe_123 [Magento] Creazione modulo statico sotto header Magento 0
G [PHP] Warning: Cannot modify header information - headers already sent by PHP 3
giancadeejay [PHP] Nome utente e Logout nell'header PHP 0
S [PHP] Non mi effettua header PHP 7
E [PHP] No 'Access-Control-Allow-Origin' header is present PHP 1
G php redirect header location pagina bianca PHP 0
gandalf1959 problema con header in area riservata PHP 4
alankanz Header(Location: mailto.... PHP 1
X Problema con header() include() e i siti di hosting PHP 1
enzonero problema immagini header WordPress 1
borgo italia header e meta non più funzionanti PHP 7
M Errore di header se metto include al posto delle istruzioni PHP 2
M Mettere un'immagine come header HTML e CSS 1
N Header fisso HTML e CSS 8
P header fisso HTML e CSS 3
K inserimento immagini tra header e pagine WordPress 4
L problema con la funzione header!!! AIUTO! PHP 24
P problema con header(Location....) PHP 11
F Effetto comparsa header Javascript 2
R Vertex Template (jommla2.5): cambiare colore dell'header Joomla 12
G [VENDO] Banner 125x125 Zona Alta Header - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
R banner in header wordpress WordPress 1
G html problema table scrollable con header fisso HTML e CSS 2
D Help per header in flash Flash 6
lara:) Header sito WordPress 2
S php problemi di funzione header usando la fuzione di jquery post PHP 4
blips Stampare header tabella in funzione di un campo db PHP 4
F Header location $_GET PHP 1
Emix Problema Header location... PHP 15
U distribuire elementi verticalmente tra header e footer HTML e CSS 7
N Header che scorre onclick... forse nulla di nuovo, ma... jQuery 6
H Warning: Cannot modify header information... PHP 6
Fabrizio Fiorita header e session funzionano perfettamente in locale ma creano problemi in remoto PHP 32
F PrestaShop header.tpl CMS (Content Management System) 0
V Header PHP 6
A Errore con header ( Location...) PHP 4

Discussioni simili