Fondamentalmente hai aggiunto più disordine nel tuo codice che sta creando più confusione, quindi prima provo a rimuovere il disordine che ostacola la comprensione del vero problema.
Prima di tutto dobbiamo stabilire che qual è la vera domanda?
È per questo che " inline-block
" l'elemento viene spinto verso il basso.
Ora iniziamo a capirlo e rimuovere prima il disordine.
1 -
Perché non dare a tutte e tre le div la stessa larghezza del bordo?
Diamo.
2 - L'elemento mobile ha qualche connessione con l'elemento di blocco inline che viene spinto verso il basso? No, non c'entra niente.
Quindi, abbiamo rimosso del tutto quel div . E stai assistendo allo stesso comportamento dell'elemento di blocco inline che viene spinto verso il basso.
Arriva il turno di alcune pubblicazioni per cogliere l'idea delle caselle di riga e di come sono allineate nella stessa riga esp leggere attentamente l'ultimo paragrafo perché sta la risposta alla tua domanda.
La linea di base di un 'blocco inline' è la linea di base della sua ultima casella di linea nel flusso normale, a meno che non abbia né caselle di linea in-flow o se la sua proprietà 'overflow' abbia un valore calcolato diverso da 'visibile', in in tal caso la linea di base è il margine inferiore.
Se non sei sicuro della linea di base, ecco una breve spiegazione in parole semplici.
Tutti i caratteri tranne 'gjpqy' sono scritti sulla linea di base che puoi pensare alla linea di base come se disegnassi una linea orizzontale semplice come quella sottolineata proprio sotto questi "caratteri casuali", allora sarà la linea di base ma ora se scrivi una qualsiasi di "gjpqy" i personaggi sulla stessa linea, quindi la parte inferiore di questi caratteri cadrebbe sotto la linea.
Quindi, possiamo dire che tutti i caratteri tranne 'gjpqy' sono scritti completamente sopra la linea di base mentre alcune parti di questi caratteri sono scritte sotto la linea di base.
3 - Perché non controllare dove si trova la linea di base della nostra linea? Ho aggiunto alcuni caratteri che mostrano la linea di base della nostra linea.
4 - Perché non aggiungere anche alcuni personaggi nei nostri div per trovare le loro basi nel div? Qui, alcuni personaggi aggiunti in div per chiarire la linea di base .
Ora, quando capisci la baseline, leggi la seguente versione semplificata sulla baseline dei blocchi inline.
i) Se il blocco inline in questione ha la proprietà di overflow impostata su visibile (impostazione predefinita, quindi non è necessario impostarla). Quindi la sua linea di base sarebbe la linea di base del blocco contenitore della linea.
ii) Se il blocco inline in questione ha la proprietà di overflow impostata su ALTRO DI QUELLO visibile. Quindi il suo margine inferiore sarebbe sulla linea di base della riga della casella di contenimento.
Ora guarda di nuovo questo per chiarire il tuo concetto che cosa sta succedendo con div verde . Se ancora qualche confusione, qui vengono aggiunti più caratteri vicino al div verde per stabilire la linea di base del blocco contenitore e la linea di base del div verde è allineata.
Bene, ora sto sostenendo che hanno la stessa base? GIUSTO?
5 - Allora perché non sovrapporli e vedere se sono adatti l'uno sull'altro? Quindi, porto il terzo div-a sinistra: 35px; controllare se hanno la stessa linea di base ora ?
Ora, abbiamo dimostrato il nostro primo punto.
- Secondo punto in dettaglio
Bene, dopo la spiegazione del primo punto, il secondo punto è facilmente digeribile e vedi che il primo div che ha la proprietà di overflow impostata su diverso da visibile (nascosto) ha il suo margine inferiore sulla linea di base della linea.
Ora puoi fare un paio di esperimenti per illustrarlo ulteriormente.
- Imposta il primo overflow del div: visibile (o rimuovilo del tutto) .
- Imposta il secondo overflow del div: diverso da quello visibile .
- Imposta l' overflow di entrambi i div: diverso da quello visibile .
Ora riporta il tuo disordine e vedi se tutto ti sta bene.
- Riporta il tuo div fluttuante (ovviamente c'è bisogno di
aumentare un po 'di larghezza del corpo) Vedi che non ha alcun effetto.
- Riporta gli stessi margini dispari .
- Imposta div verde su overflow: visibile mentre imposti la tua domanda (quel disallineamento è dovuto all'aumento della larghezza del bordo da 1px a 5px, quindi se regola il negativo a sinistra vedrai che non c'è problema)
- Ora rimuovi i caratteri aggiuntivi che ho aggiunto per aiutare a capire . (e ovviamente rimuovi la sinistra negativa)
- Riduci infine la larghezza del corpo perché non ne abbiamo più bisogno.
E ora siamo tornati da dove siamo partiti.
Spero di aver risposto alla tua domanda.