Cómo alinear los últimos 3 elementos del menú a la derecha - Menú principal de WordPress
Me gustaría estilizar el menú horizontal principal de WordPress para que los primeros 3 elementos estén alineados a la izquierda y los últimos 3 elementos estén alineados a la derecha.
Esto creará la apariencia de dos menús (con inicio de sesión, etc., a la derecha) pero facilitará reestilizarlo para crear un menú responsivo con los últimos tres elementos en la parte inferior.
MENÚ:
<UL>
<li>1a</li><li>2a</li><li>3a</li> <-izquierda derecha-> <li>4a</li><li>5a</li><li>6a</li>
</UL>
Usar float left y right hace que los últimos 3 elementos cambien de orden, necesito que permanezcan en orden.
Me gustaría una solución que no requiera crear un menú separado o cambiar el orden de los elementos del menú para que el float:right los vuelva a colocar en el orden correcto.
He probado varias combinaciones de display:inline-block y text-align:left/right, sin éxito.
EDICIÓN: Me gustaría hacer esto sin agregar marcado en el menú mismo. (A menos que la respuesta también ilustre cómo agregar marcado en un menú horizontal de WordPress.)

Existe una forma más fácil sin cambios en el marcado y con CSS mínimo. Demo en vivo/fiddle aquí, código abajo:
<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;
}

Necesitas envolver tus dos grupos (elementos alineados a la izquierda y a la derecha) en dos contenedores. Luego estableces float
left
, respectivamente right
en esos contenedores.
<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>
Y asegúrate de que los elementos internos tengan display
establecido como inline-block
. También querrás establecer la propiedad overflow
del elemento ul
como 'hidden', para asegurarte de que se expanda y contenga todos los hijos, ya que ambos están flotando.
.pull-left { float: left; }
.pull-right { float: right; }
.pull-left li, .pull-right li { display: inline-block; }
ul { overflow: hidden; }
Establecer overflow: hidden
para todos los elementos ul
en tu proyecto podría no ser una buena idea, así que quizás quieras encontrar un selector padre de tu ul
y agregarlo delante del selector ul
. (ej: .some-container-class-here ul { overflow: hidden;}
)
