Ho diversi DIV visualizzati come blocchi in linea; e sembrano ricevere spaziature automaticamente applicate tra di loro dal browser. Hanno margine/riempimento impostato su 0. C'è un modo per correggere questo senza usare margini negativi?Blocco in linea senza margini?
risposta
Sam, quello spazio che stai vedendo è in realtà spazio bianco. Ecco perché rimuovere i paddings e i margini non fa nulla. Lasciatemi spiegare. Quando hai questo:
HTML
<div>
a
a
a
a
</div>
questo è quel che ne risulta:
a a a a
... giusto?
Quindi, se avete questo:
<div>
<div style="display:inline-block"></div>
<div style="display:inline-block"></div>
<div style="display:inline-block"></div>
</div>
... si otterrà la stessa cosa:
block [space] block [space] block
Ora ... ci sono molte soluzioni differenti a questo problema. Credo che il più comune è commentando fuori gli spazi nel codice HTML:
<div>
<div style="display:inline-block"></div><!--
--><div style="display:inline-block"></div><!--
--><div style="display:inline-block"></div>
</div>
non mi piace, però - io preferisco mantenere il codice HTML più pulito possibile. Il mio modo preferito è impostare la dimensione del carattere del genitore su 0, e quindi impostare la dimensione del carattere desiderata sui blocchi in linea stessi.In questo modo:
div {
font-size: 0; /* removes the whitespace */
}
div div {
display: inline-block;
font-size: 14px;
}
Non è necessario utilizzare margini negativi per compensare i margini originali.
Invece è possibile sovrascrivere con il seguente:
* { margin:0; }
o:
.div { margin:0; }
se si tratta di elemento specifico.
EDIT:
Sembra che il problema potrebbe essere il risultato di spazi bianchi non intenzionale. Ad esempio:
<div style="display:inline-block">
...
</div>
<div style="display:inline-block">
...
</div>
Esiste uno spazio bianco tra i due divisori e il browser stamperà lo spazio bianco come risultato. Per risolvere questo problema, dovrai cambiarlo in:
<div style="display:inline-block">
...
</div><div style="display:inline-block">
...
</div>
Divertiti e buona fortuna!
cosa significa * fare? – Sam
* è un carattere jolly in CSS che rappresenta tutti gli elementi di un determinato documento. –
Questo non sembra risolvere il problema dei margini. Forse "margini" è il termine sbagliato. Ho diversi div uno vicino all'altro e il browser ha una spaziatura predefinita tra di loro; anche se sono impostati su magin 0 e padding 0. – Sam
inline-block è in origine un IE6 incidere
Questo è ciò che la sua utilizzati per:
- Per risolvere il bug doppio margine di IE6 su elementi mobili
- To posizionare più elementi di tipo blocco sulla stessa linea orizzontale senza farli fluttuare (se non è possibile far galleggiare 'casi eccezionali)
- Per consentire un elemen in linea t di avere larghezza e/o altezza, mentre ancora linea
- restante Per consentire un elemento in linea per avere padding o margini
Quindi, se vuoi avere più div accanto a vicenda utilizzate il galleggiante, la sua gonna risolvere molti dei i vostri problemi css che inline-block può causare, in particolare del browser croce emette
più su inline-block here arcticle 9.2.4
migliori saluti SP
Si prega di commento, se in disaccordo
inline-block non è un hack, è per consentire agli elementi di scorrere come se fossero parte del testo. Il tuo consiglio sull'uso di float è sbagliato. L'uso non necessario di float causa problemi di manutenibilità, probabilmente significherà che il tuo sito non risponde alle diverse dimensioni di schermo/finestra, ed è di progettazione scadente. – Jake
Inline-block ha alcuni problemi per cui è un po 'allentato, e sono d'accordo sul fatto che float non è la soluzione ideale ma non avete il blocco inline in IE6 quindi questo è il motivo per cui vorrei andare in float come fallback. –
Un altro modo che ho trovato il metodo di alterare il word-spacing sul contenitore padre per me funziona https://jsfiddle.net/1ex5gpo3/2/
.parent {
word-spacing: -1em;
}
.child {
word-spacing: normal;
display: inline-block;
}
è possibile utilizzare sia display: inline-block
e float: left
per rimuovere quello spazio.
Qui va plunkr: https://plnkr.co/edit/Sn3NG77asiXO8UrrpxWD?p=preview
- 1. Mappe di disegno senza margini in R
- 2. Allineamento del centro blocco in linea
- 3. Blocco scrittura sbloccato senza blocco
- 4. Centratura di un blocco in linea DIV
- 5. scroll orizzontale dell'elemento di blocco in linea
- 6. Margini ListView
- 7. Zoccoli Python senza blocco
- 8. Stampa margini in DOMPDF
- 9. Task exec di MSBuild senza blocco
- 10. Missalignment con blocco in linea (altri elementi premuti in basso)
- 11. Blocco DSL senza argomento in rubino
- 12. Perché l'immagine viene visualizzata: in linea ma si comporta come un elemento di blocco in linea
- 13. Aggiungi layout personalizzato a ActionBar/Barra degli strumenti senza margini
- 14. Più margini a destra in Pycharm
- 15. NSButton senza margini di disattivazione da NSVisualEffectView vibrancy
- 16. Esiste un'implementazione vettoriale senza blocco?
- 17. Come risolvere la visualizzazione: blocco in linea su IE6?
- 18. Sbarazzarsi dello spazio sotto l'immagine del blocco in linea
- 19. Applicazione allineamento verticale a due div utilizzando blocco in linea
- 20. Visualizza blocco in linea con larghezza come percentuale
- 21. Spazio bianco sopra il secondo blocco in linea
- 22. Centrare verticalmente il testo all'interno di un blocco in linea
- 23. Perché c'è spazio bianco dopo il mio blocco in linea?
- 24. File.open con blocco vs senza
- 25. Elemento di blocco sottolineato con dimensioni di carattere diverse senza una linea interrotta
- 26. Perché il mio primo elemento di blocco in linea ha spazio sopra di esso
- 27. Qual è la differenza tra blocco e blocco in linea con larghezza: 100%?
- 28. Utilizzare un blocco 'try-finally' senza blocco 'catch'
- 29. Java Swing - impostazione dei margini su TextArea con il bordo della linea
- 30. Vim senza fine linea ultima linea o eof
+1: entrambe sono buone soluzioni. – Wex