Básicamente, ha agregado más desorden en su código, lo que está creando más confusión, así que primero trato de eliminar el desorden que dificulta la comprensión del problema real.
Antes que nada tenemos que establecer que ¿cuál es la verdadera pregunta?
Es por eso que el " inline-block
" elemento es empujado hacia abajo.
Ahora comenzamos a entenderlo y eliminamos el desorden primero.
1 -
¿Por qué no dar a los tres divs el mismo ancho de borde?
Vamos a darlo.
2 - ¿El elemento flotante tiene alguna conexión con el elemento de bloque en línea que se empuja hacia abajo? No, no tiene nada que ver con eso.
Entonces, hemos eliminado ese div por completo . Y está presenciando el mismo comportamiento del elemento de bloque en línea empujado hacia abajo.
Aquí llega el turno de un poco de literatura para comprender la idea de los cuadros de línea y cómo están alineados en la misma línea, especialmente leer el último párrafo cuidadosamente porque ahí está la respuesta a su pregunta.
La línea base de un 'bloque en línea' es la línea base de su último cuadro de línea en el flujo normal, a menos que no tenga cuadros de línea en flujo o si su propiedad 'desbordamiento' tiene un valor calculado distinto de 'visible', en en cuyo caso la línea de base es el borde del margen inferior.
Si no está seguro acerca de la línea de base , aquí hay una breve explicación en palabras simples.
Todos los caracteres, excepto 'gjpqy', están escritos en la línea de base. Puede pensar en la línea de base como si dibujara una línea horizontal simple igual que subrayando justo debajo de estos "caracteres aleatorios", entonces será la línea de base, pero ahora si escribe cualquiera de 'gjpqy' los caracteres en la misma línea y luego la parte inferior de estos caracteres caerían debajo de la línea.
Entonces, podemos decir que todos los caracteres, excepto 'gjpqy', se escriben completamente por encima de la línea de base, mientras que parte de estos caracteres se escriben debajo de la línea de base.
3 - ¿Por qué no verificar dónde está la línea de base de nuestra línea? He agregado algunos caracteres que muestran la línea de base de nuestra línea.
4 - ¿Por qué no agregar algunos caracteres en nuestros divs también para encontrar sus líneas de base en el div? Aquí, se agregaron algunos caracteres en divs para aclarar la línea base .
Ahora, cuando comprenda la línea de base, lea la siguiente versión simplificada sobre la línea de base de los bloques en línea.
i) Si el bloque en línea en cuestión tiene su propiedad de desbordamiento establecida en visible (que es por defecto, por lo que no es necesario configurarla). Entonces su línea de base sería la línea de base del bloque contenedor de la línea.
ii) Si el bloque en línea en cuestión tiene su propiedad de desbordamiento establecida en OTRO QUE visible. Entonces su margen inferior estaría en la línea de base de la línea del cuadro contenedor.
Ahora mire esto nuevamente para aclarar su concepto de lo que está sucediendo con el div verde . Si aún hay alguna confusión, aquí se agregan más caracteres cerca del div verde para establecer la línea base del bloque contenedor y la línea base div verde se alinea.
Bueno, ahora estoy afirmando que tienen la misma línea de base? ¿DERECHA?
5 - Entonces, ¿por qué no superponerlos y ver si encajan uno con el otro? Entonces, traigo el tercer div -left: 35px; para verificar si tienen la misma línea de base ahora ?
Ahora, tenemos nuestro primer punto probado.
Bueno, después de la explicación del primer punto, el segundo punto es fácilmente digerible y ve que el primer div que tiene la propiedad de desbordamiento establecida en otra que no sea visible (oculta) tiene su margen inferior en la línea base de la línea.
Ahora, puede hacer un par de experimentos para ilustrarlo más.
- Establezca el primer desbordamiento div: visible (o elimínelo por completo) .
- Establezca el segundo desbordamiento div: que no sea visible .
- Establezca el desbordamiento de ambos divs: otro que no sea visible .
Ahora trae de vuelta tu desorden y mira si todo te parece bien.
- Recupere su div flotante (por supuesto, es necesario
aumentar un poco el ancho del cuerpo) Verá que no tiene ningún efecto.
- Recupere los mismos márgenes impares .
- Establezca div verde en desbordamiento: visible a medida que establece su pregunta (esa desalineación se debe al aumento del ancho del borde de 1px a 5px, por lo que si ajusta el negativo a la izquierda , verá que no hay problema)
- Ahora elimine los caracteres adicionales que agregué para ayudar a comprender . (y, por supuesto, eliminar la izquierda negativa)
- Finalmente, reduzca el ancho del cuerpo porque ya no necesitamos uno más ancho.
Y ahora estamos de vuelta a donde comenzamos.
Espero haber respondido tu pregunta.