Đây là một đơn giản và mạnh mẽ giải pháp:
span.item:empty:before {
content: "\200b"; // unicode zero width space character
}
(Cập nhật 2015/12/18: thay vì sử dụng \00a0
khoảng trắng không bị phá vỡ, sử dụng \200b
, đó là cũng là một không gian không phá vỡ, nhưng với chiều rộng bằng không. Hãy xem câu trả lời khác của tôi tại https://stackoverflow.com/a/29355130/516910)
Bộ chọn CSS này chỉ chọn các khoảng trống "rỗng" và chèn một số nội dung vào không gian trống đó, cụ thể là một ký tự khoảng trắng. Vì vậy, không có vấn đề gì kích thước phông chữ và chiều cao dòng bạn đã đặt, mọi thứ xung quanh rằng <span>
sẽ rơi vào dòng, giống như khi bạn có văn bản trong đó <span>
, có lẽ là những gì bạn muốn.
http://plnkr.co/edit/eXHphA?p=preview
Kết quả trông như thế này:
tôi thấy hai vấn đề với việc sử dụng min-height
:
- nó là dễ bị tổn thương nơi cỡ chữ thay đổi
- đường cơ sở văn bản không có trong địa điểm chính xác
Dưới đây là những gì các phản ví dụ giống như khi mọi thứ đi sai:
thay đổi kích thước
- Phông chữ, và bây giờ bạn phải tay điều chỉnh phút -height một lần nữa. Bạn không thể sử dụng cùng một lớp để hỗ trợ các phần khác nhau của trang web của bạn, nơi kích thước phông chữ khác nhau. Ở đây kích thước phông chữ ở vị trí này là 30, nhưng chiều cao tối thiểu vẫn được đặt thành 20. Vì vậy, các khoảng trống không cao. :-(
http://plnkr.co/edit/zeEvca?p=preview
- khoảng trống của bạn có chiều cao chính xác với min-height, nhưng nó không xếp hàng một cách chính xác với văn bản xung quanh span các cơ sở rơi sai Nhìn vào dòng mà nói dưới đây.. "Huh?":
http://plnkr.co/edit/GGd7mz?p=preview
Mã ví dụ cuối cùng này:
<div class="group">
Hello <span class="item">Text</span>
</div>
<div class="group">
Huh? <span class="item"></span>
</div>
<div class="group">
Yes! <span class="correct"></span>
</div>
css:
.group {
background-color: #f1f1f1;
padding: 5px;
font-size: 20px;
margin-bottom: 20px;
}
.item {
background-color: #d2e3c5;
border-radius: 6px;
padding: 10px;
margin-bottom:5px;
display: inline-block;
min-height: 20px;
}
.correct {
background-color: #d2e3c5;
border-radius: 6px;
padding: 10px;
margin-bottom:5px;
display: inline-block;
}
.correct:empty:before {
content: "\00a0";
}
Nguồn
2015-03-30 19:38:23
Làm thế nào về 'min-height'? Tôi tin rằng nơi sẽ là vấn đề với ie6, nhưng tất cả các trình duyệt khác sẽ hoạt động tốt. – Morpheus
Tôi nên sử dụng giá trị nào cho chiều cao tối thiểu? Làm thế nào để có được chiều cao dòng mặc định? – Roman
chiều cao dòng thường là 1,2em – Loris