2013-07-28 19 views

Trả lời

59

Hình ảnh (và các phần tử khối nội tuyến nói chung) được coi như một ký tự.

Như vậy, chúng tuân theo quy tắc của đường cơ sở.

Trong văn bản thông thường, đường cơ sở là dòng trên dưới cùng của hầu hết các chữ cái, chẳng hạn như trong câu này.

Nhưng một số chữ cái, chẳng hạn như p, q, j và cứ như vậy, có đuôi rơi xuống dưới đường cơ sở. Để ngăn các đuôi này va chạm với các chữ cái trên dòng tiếp theo, khoảng trống được đặt giữa đường cơ sở và dòng dưới cùng.

Biểu đồ này minh họa các dòng khác nhau được sử dụng bởi văn bản:

WHATWG's baseline diagram (Hình ảnh từ WHATWG)

Vì vậy, hình ảnh được liên kết với đường cuối sân, thậm chí nếu không có văn bản. May mắn thay, sửa chữa rất đơn giản:

img {vertical-align:bottom} 

Điều này sẽ căn chỉnh hình ảnh ở cuối dòng, cũng loại bỏ không gian bí ẩn.

Hãy cẩn thận, nếu hình ảnh của bạn nhỏ (nhỏ hơn chiều cao dòng), bạn có thể bắt đầu thấy không gian bí ẩn xuất hiện phía trên hình ảnh thay thế. Để khắc phục điều này, hãy thêm line-height:1px vào phần tử vùng chứa.

Hy vọng điều này sẽ giúp nhiều người tôi nhìn thấy hỏi về vấn đề này và các vấn đề tương tự!

+0

Câu trả lời hoàn hảo .... Tôi đã bối rối vì điều này là tốt. NICE :) –

+1

@tman Cảm ơn - lần đầu tiên viết câu trả lời tham khảo, vì vậy hãy lo lắng! Nhiều người cần biết về điều này. –

+0

Tuyệt. Tại sao công việc 'line-height: 1px' lại hoạt động? Đó là một hack, vì vậy có một giá trị hợp lý hơn một chút chúng ta có thể sử dụng? –

4

Thay đổi img đến một yếu tố mức khối

img { 
    display: block; 
} 

cũng sẽ loại bỏ các khoảng trống bên dưới hình ảnh.

+0

Nhưng nó ngăn bạn có nhiều hình ảnh song song. –

+1

Liên kết [trình diễn] (http://jsfiddle.net/cLETP/) trong câu hỏi hiển thị phần tử 'img' được bao bọc trong phần tử' div'. Một 'div' là mức khối theo mặc định, do đó, điều này trong chính nó sẽ ngăn chặn nhiều trường hợp của' div' + 'img' hiển thị song song. Nếu các hình ảnh tiếp giáp trong đánh dấu, thì 'display: inline-block' sẽ loại bỏ cả khoảng trống bên dưới và hiển thị các phần tử song song. – Astrotim

+1

@Astrotim - Điều đó không chính xác. 'display: inline-block' sẽ không loại bỏ không gian bên dưới. – Alohci

0

séc ra CSS này jsfiddle CSS

div {border:1px solid red;width:100px;line-height:0} 
img {width:100px;}