Khi sử dụng inline-block
các phần tử, sẽ luôn có whitespace
vấn đề giữa các phần tử đó (không gian đó rộng khoảng ~ 4px).
Vì vậy, hai của bạn divs
, cả hai đều có chiều rộng 50%, cộng với whitespace
(~ 4px) có chiều rộng hơn 100%, và do đó, nó bị hỏng. Ví dụ về vấn đề của bạn:
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>
Có một số cách để khắc phục điều đó:
1. Không có khoảng trống giữa các phần tử đó
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. Sử dụng nhận xét 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. Đặt cha mẹ font-size
thành 0
, sau đó thêm một số giá trị vào inline-block
các phần tử
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. Sử dụng một biên âm giữa chúng ( không thích hợp )
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. Góc đóng cửa giảm
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. Bỏ qua một số thẻ đóng HTML nhất định (cảm ơn @thirtydot đã tham khảo )
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>
Người giới thiệu:
- Chống lại khoảng trống giữa các phần tử khối nội tuyến trên thủ thuật CSS
- Xóa khoảng trắng giữa các phần tử khối nội tuyến bởi David Walsh
- Làm thế nào để loại bỏ khoảng cách giữa các phần tử khối nội tuyến?
Như @ MarcosPérezGude đã nói , cách tốt nhất là sử dụng rem
và thêm một số giá trị mặc định font-size
vào html
thẻ (như trong HTML5Boilerplate ). Thí dụ:
html{
font-size: 1em;
}
.ib-parent{
font-size: 0;
}
.ib-child{
display: inline-block;
font-size: 1rem;
}
Cập nhật : gần đến năm 2018, hãy sử dụng flexbox hoặc thậm chí tốt hơn - bố cục lưới CSS .