Come allineare gli ultimi 3 elementi del menu a destra - Menu principale WordPress
Vorrei stilizzare il menu orizzontale principale di WordPress in modo che i primi 3 elementi siano allineati a sinistra e gli ultimi 3 elementi siano allineati a destra.
Questo creerà l'aspetto di due menu (con login, ecc., sulla destra) ma renderà facile ristilizzarlo per creare un menu responsive con gli ultimi tre elementi in basso.
MENU:
<UL>
<li>1a</li><li>2a</li><li>3a</li> <-sinistra destra-> <li>4a</li><li>5a</li><li>6a</li>
</UL>
Usando float left e right gli ultimi 3 elementi cambiano ordine, ho bisogno che rimangano nell'ordine corretto.
Vorrei una soluzione che non richieda la creazione di un menu separato o il cambiamento dell'ordine degli elementi del menu per far sì che il float:right li rimetta nell'ordine giusto.
Ho provato varie combinazioni di display:inline-block e text-align:left/right, senza successo.
MODIFICA: Vorrei fare questo senza aggiungere markup nel menu stesso. (A meno che la risposta non illustri anche come aggiungere markup in un menu orizzontale WordPress.)

C'è un modo più semplice senza modifiche al markup e con CSS minimo. Demo live/fiddle qui, codice qui sotto:
<ul>
<li>1a</li><li>2a</li><li>3a</li><li>4a</li><li>5a</li><li>6a</li>
</ul>
ul {
list-style: none;
margin: 0;
padding: 0;
text-align: right;
}
li {
float: left;
}
li:nth-last-child(1), li:nth-last-child(2), li:nth-last-child(3) {
float: none;
display: inline-block;
}

Devi raggruppare i tuoi due gruppi (elementi allineati a sinistra e a destra) in due contenitori. Successivamente imposti float
left
, rispettivamente right
su questi contenitori.
<UL>
<div class="pull-left"><li>1a</li><li>2a</li><li>3a</li></div>
<div class="pull-right"><li>4a</li><li>5a</li><li>6a</li></div>
</UL>
E assicurati che gli elementi interni abbiano display
impostato su inline-block
. Inoltre, dovresti impostare la proprietà overflow
dell'elemento ul
su 'hidden', per assicurarti che si espanda per contenere tutti i figli, visto che entrambi sono fluttuanti.
.pull-left { float: left; }
.pull-right { float: right; }
.pull-left li, .pull-right li { display: inline-block; }
ul { overflow: hidden; }
Impostare overflow: hidden
per tutti gli elementi ul
nel tuo progetto potrebbe non essere una buona idea, quindi potresti voler trovare un selettore genitore del tuo ul
e aggiungerlo davanti al selettore ul
. (es: .some-container-class-here ul { overflow: hidden;}
)
