elementos flexibles CSS3 y la red se supone que deben hacer frente a estos problemas, pero sigue siendo irregular soporte estándar a partir de 2013.
Volver al mundo real. No creo que sea posible hacerlo solo en CSS2.1 (IE8 +) sin hacks de píxeles. El asunto es que la alineación del texto está controlada por el elemento padre, y dado que los dos anclajes comparten su elemento primario, ambos se alinean a la izquierda o a la derecha. Y justificar no funciona en la última línea.
Si puede sufrir un poco de HTML adicional, hay dos enfoques:
1) Añade otra línea que está garantizado para envolver la línea y, a continuación, tratar de ocultar la línea de vacío. Esto le permite usar text-align justify en el elemento primario.
<p>
<a href="#" class="link">link</a>
<a href="#" class="link link-alt">link alt</a>
<span class="boom"></span>
</p>
<style type="text/css">
p {
padding: 20px;
background: #eee;
text-align: justify
}
.link {
display: inline-block;
padding: 10px;
background: #ddd;
}
.link-alt {
padding: 20px;
}
span {
display: inline-block;
height: 0;
width: 100%
}
</style>
Pros: funciona en cualquier número de bloques en línea, no solo en dos. Solo se requiere un poco de HTML adicional.
Contras: requiere un esfuerzo extra para ocultar la última línea de texto vacía (configurar el bloque en línea dentro de la altura 0 no le ayudará), y tendrá que jugar con los márgenes o algo más para que realmente funcione Discusión adicional: How do I *really* justify a horizontal menu in HTML+CSS?
2) Agregue otra capa de bloques en línea sobre sus etiquetas de anclaje y mida el tamaño al 50%. Luego puede aplicar texto-alinear por separado para obtener el diseño final que solicitó. Es importante que no se permita el espacio en blanco entre dos bloques en línea de un tamaño del 50%, o se ajustará la línea.
<p>
<span class="left">
<a href="#" class="link">link</a>
</span><span class="right">
<a href="#" class="link link-alt">link alt</a>
</span>
</p>
<style type="text/css">
p {
padding: 20px;
background: #eee;
}
.link {
display: inline-block;
padding: 10px;
background: #ddd;
}
.link-alt {
padding: 20px;
}
span {
display: inline-block;
width: 50%
}
.left {
text-align: left
}
.right {
text-align: right
}
</style>
Pros: produce el diseño exacto que ha solicitado sin contaminar el modelo de la caja exterior.
Contras: solo funciona para dos bloques en línea (puede intentar ampliarlo, pero se vuelve realmente complicado). Se basa en no tener espacios en blanco adicionales, lo que podría poner en peligro su marcado con formato agradable.
¿por qué se verá obligado a calcular nada? Flota a la derecha y dales el mismo relleno. – thenetimp
demasiado fácil, una restricción que no había mencionado anteriormente es que quiero mantener la alineación vertical predeterminada (centro) incluso si mis enlaces no tienen el mismo relleno. – inwpitrust
¿Estás contento de utilizar CSS3 o necesitas compatibilidad con IE anterior? – Petah