Saat menggunakan inline-block
elemen, akan selalu ada whitespace
masalah di antara elemen tersebut (ruang itu berukuran sekitar ~ 4px lebar).
Jadi, keduanya divs
, yang keduanya memiliki lebar 50%, ditambah dengan whitespace
(~ 4px) lebarnya lebih dari 100%, dan itu rusak. Contoh masalah Anda:
body{
margin: 0;
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
Ada beberapa cara untuk memperbaikinya:
1. Tidak ada spasi di antara elemen-elemen tersebut
body{
margin: 0;
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div><div class="right">bar</div>
2. Menggunakan komentar HTML
body{
margin: 0;
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div><div class="right">bar</div>
3. Atur orang tua font-size
menjadi 0
, dan kemudian tambahkan beberapa nilai pada inline-block
elemen
body{
margin: 0;
}
.parent{
font-size: 0;
}
.parent > div{
display: inline-block;
width: 50%;
font-size: 16px;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="parent">
<div class="left">foo</div>
<div class="right">bar</div>
</div>
4. Menggunakan margin negatif di antara keduanya ( tidak disukai )
body{
margin: 0;
}
div{
display: inline-block;
width: 50%;
margin-right: -4px;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
5. Menjatuhkan sudut penutupan
body{
margin: 0;
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div
><div class="right">bar</div>
<hr>
<div class="left">foo</div><div class="right">
bar</div>
6. Melewati tag penutup HTML tertentu (terima kasih @thirtydot untuk referensinya )
body{
margin: 0;
}
ul{
margin: 0;
padding: 0;
}
li{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<ul>
<li class="left">foo
<li class="right">bar
</ul>
Referensi:
- Memerangi Ruang Antara Elemen Blok Inline pada Trik CSS
- Hapus Spasi Putih Antara Elemen Blok-Inline oleh David Walsh
- Bagaimana cara menghapus spasi di antara elemen blok sebaris?
Seperti @ MarcosPérezGude mengatakan , yang terbaik cara adalah dengan menggunakan rem
, dan menambahkan beberapa nilai default untuk font-size
di html
tag (seperti di HTML5Boilerplate ). Contoh:
html{
font-size: 1em;
}
.ib-parent{
font-size: 0;
}
.ib-child{
display: inline-block;
font-size: 1rem;
}
Pembaruan : karena hampir 2018., gunakan flexbox atau bahkan lebih baik - tata letak kisi CSS .
flexbox
,table/table-row/table-cell
atau menggunakanfloat
.parent { font-size:0; } child {font-size: 1rem; }
. Dengan rem sekarang adalah yang termudahborder
juga mati. Ini dapat menambah ruang jika Anda mengapung div.jawaban yang bagus di css3 adalah:
white-space: nowrap;
di node induk, dan:
white-space: normal; vertical-align: top;
dalam div (atau lainnya) sebesar 50%
contoh: http://jsfiddle.net/YpTMh/19/
EDIT:
ada cara lain dengan:
font-size: 0;
untuk node induk dan menggantinya di node anak
sumber
Itu karena spasi di antara dua div Anda ditafsirkan sebagai spasi. Jika Anda meletakkan
<div>
tag Anda sejajar seperti yang ditunjukkan di bawah, masalah diperbaiki :<div id="left"></div><div id="right"></div>
sumber
Karena ada ruang antar elemen. Jika Anda menghapus semua spasi, mereka akan muat .
<div id="left">Left</div><div id="right">Right</div>
sumber
Buat mereka memblokir, bukan blok sebaris. Ini akan membuat div mengabaikan spasi di antara mereka.
display:block;
atau hapus spasi di antara tag
<div id='left'></div><div id='right'></div>
atau tambahkan
margin: -1en;
ke salah satu div untuk mengurangi ruang yang diambil oleh ruang tunggal yang diberikan.
sumber
Silakan periksa kode di bawah ini:
body { margin: 0; } #left { width: 50%; background: lightblue; display: inline-block; float:left; } #right { width: 50%; background: orange; display: inline-block; float:left; }
<div id="left">Left</div> <div id="right">Right</div>
sumber
Contoh Flexbox - ini akan digunakan untuk kelas induk yang memegang dua elemen berdampingan.
.parentclass { display: flex; justify-content: center; align-items: center; }
Diambil dari memusatkan div secara vertikal di dalam div lain
sumber
Ini bisa dilakukan dengan menambahkan css display: inline ke div yang menyimpan elemen inline.
Saat menghapus ruang putih menggunakan margin dengan nilai negatif, perlu untuk menambahkannya ke elemen khusus ini. Karena menambahkannya ke kelas akan memengaruhi tempat di mana kelas ini telah digunakan.
Jadi akan lebih aman menggunakan display: inline;
sumber
tambahkan float: left; ke kedua tag div.
div { float: left; }
sumber