Apa sebenarnya perbedaan antara inline
dan inline-block
nilai-nilai CSS display
?
Apa sebenarnya perbedaan antara inline
dan inline-block
nilai-nilai CSS display
?
Jawaban:
Bayangkan sebuah <span>
elemen di dalam a <div>
. Jika Anda memberi <span>
elemen ketinggian 100px dan batas merah misalnya, akan terlihat seperti ini dengan
display: inline
display: inline-block
tampilan: blok
Kode: http://jsfiddle.net/Mta2b/
Elemen dengan display:inline-block
seperti display:inline
elemen, tetapi mereka dapat memiliki lebar dan tinggi . Itu berarti bahwa Anda dapat menggunakan elemen blok-inline sebagai blok saat mengalir dalam teks atau elemen lainnya.
Perbedaan gaya yang didukung sebagai ringkasan:
margin-left
, margin-right
, padding-left
,padding-right
margin
, padding
, height
,width
p
, div
dapatkan garis lebar keseluruhan (force a line break) tetapi hormati lebar / tinggi dan semua bantalan / margin horisontal / vertikal. Elemen blok-inline memiliki perilaku yang sama dengan blok tetapi tanpa seluruh baris (elemen lain dapat ditempatkan di sampingnya)
display: inline;
adalah mode tampilan untuk digunakan dalam kalimat. Misalnya, jika Anda memiliki paragraf dan ingin menyoroti satu kata yang Anda lakukan:
<p>
Pellentesque habitant morbi <em>tristique</em> senectus
et netus et malesuada fames ac turpis egestas.
</p>
The <em>
elemen memiliki display: inline;
secara default, karena tag ini selalu digunakan dalam sebuah kalimat. The <p>
elemen memiliki display: block;
secara default, karena itu bukan sebuah kalimat atau dalam kalimat, itu blok kalimat.
Elemen dengan display: inline;
tidak dapat memiliki a height
atau a width
atau vertikal margin
. Elemen dengan display: block;
dapat memiliki a width
, height
dan margin
.
Jika Anda ingin menambahkan height
ke <em>
elemen, Anda perlu mengatur elemen ini untuk display: inline-block;
. Sekarang Anda dapat menambahkan height
elemen dan setiap gaya blok lainnya ( block
bagian dari inline-block
), tetapi ditempatkan dalam kalimat ( inline
bagian dari inline-block
).
display
nilai.
Satu hal yang tidak disebutkan dalam jawaban adalah elemen inline dapat memecah antar baris sedangkan inline-block tidak dapat (dan jelas memblokir)! Jadi elemen sebaris dapat berguna untuk gaya kalimat teks dan blok di dalamnya, tetapi karena mereka tidak dapat diisi, Anda dapat menggunakan ketinggian garis sebagai gantinya.
<div style="width: 350px">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<div style="display: inline; background: #F00; color: #FFF">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<hr/>
<div style="width: 350px">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<div style="display: inline-block; background: #F00; color: #FFF">
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
Semua jawaban di atas berkontribusi info penting pada pertanyaan asli. Namun, ada generalisasi yang tampaknya salah.
Dimungkinkan untuk mengatur lebar dan tinggi ke setidaknya satu elemen sebaris (yang dapat saya pikirkan) - <img>
elemen.
Keduanya menerima jawaban di sini dan pada duplikat ini menyatakan bahwa ini tidak mungkin tetapi ini sepertinya bukan aturan umum yang valid.
Contoh:
The img
memiliki display: inline
, namun width
dan height
berhasil ditetapkan.
Jawaban splattne mungkin mencakup sebagian besar segalanya jadi saya tidak akan mengulangi hal yang sama, tetapi: inline
dan inline-block
berperilaku berbeda dengan direction
properti CSS.
Di dalam potongan berikutnya Anda melihat one two
(dalam urutan) yang diberikan, seperti di tata letak LTR. Saya menduga browser di sini mendeteksi secara otomatis bagian bahasa Inggris sebagai teks LTR dan mengubahnya dari kiri ke kanan.
body {
text-align: right;
direction: rtl;
}
h2 {
display: block; /* just being explicit */
}
span {
display: inline;
}
<h2>
هذا عنوان طويل
<span>one</span>
<span>two</span>
</h2>
Namun, jika saya melanjutkan dan mengatur display
ke inline-block
, browser muncul untuk menghormati direction
properti dan membuat elemen dari kanan ke kiri secara berurutan, sehingga two one
ditampilkan.
body {
text-align: right;
direction: rtl;
}
h2 {
display: block; /* just being explicit */
}
span {
display: inline-block;
}
<h2>
هذا عنوان طويل
<span>one</span>
<span>two</span>
</h2>
Saya tidak tahu apakah ada keanehan lain dalam hal ini, saya hanya menemukan ini secara empiris di Chrome.