2011-06-19 38 views
16

Tôi đã tạo một tài liệu mới với cả xhtml 1.0 và html 4.01 STRICT chỉ để cô lập điều này. Tất cả những gì tôi có trong nội dung của nó là:Dấu/lề bí ẩn xuất hiện sau khi hình ảnh ở chế độ nghiêm ngặt

<div style="border: blue 3px solid;"> 
<img src="testimage.jpg" width="800" height="400"> 
</div> 

Kết quả là bình thường ngoại trừ khoảng cách 5px bên dưới hình ảnh biến mất nếu tôi thay đổi loại tài liệu thành chuyển tiếp. Nó cũng biến mất nếu tôi đặt hiển thị: chặn hình ảnh.

Bạn có thể xem kết quả mình đây (Tôi biết các khoảng trắng bên phải là bình thường vì một yếu tố khối của nó): http://i52.tinypic.com/2prd1jd.jpg

Tôi đã cố gắng thiết lập lề/padding để 0, ngay cả điều này:

* 
{ 
    margin: 0; padding: 0; 
} 

nhưng vẫn giữ nguyên.

Có ai vui lòng giải thích hành vi này không?

+0

tôi đoán là display: inline được bảo quản khoảng trắng - những gì sẽ xảy ra nếu bạn xóa toàn bộ ngắt dòng từ đánh dấu của bạn? – kinakuta

+0

oops, thuộc tính này không nên có ở đó vì thẻ img là nội tuyến theo mặc định :). Thật không may là không giải quyết được vấn đề. – John

Trả lời

35

Nó phải làm với căn chỉnh hình ảnh theo chiều dọc. Hãy thử điều này:

img{ 
vertical-align: top; 
} 

và không gian sẽ biến mất.

Để làm rõ, nếu bạn đặt một số văn bản bên cạnh hình ảnh, bạn sẽ thấy vấn đề. Hình ảnh được căn chỉnh với phần gốc của văn bản nhưng các chữ cái như y và g sẽ nằm dưới dòng đó. Không gian thêm là dành cho những lá thư nhô ra.

+0

Cảm ơn điều này đã làm các trick! Tôi vẫn không hiểu tuy nhiên tại sao điều này chỉ xảy ra trong các loại tài liệu nghiêm ngặt chứ không phải trong các chuyển tiếp. Ý tôi là logic đằng sau nó là gì? – John

+0

Tôi phải xem xét đặc điểm kỹ thuật nhưng tôi nghi ngờ có một số tiêu chuẩn xung quanh một trong hai hình ảnh hoặc hiển thị: nội tuyến mặc định nó là 'dọc-align: baseline', nó thậm chí có thể là mặc định cho tất cả các phần tử. Nghiêm ngặt tuân thủ các tiêu chuẩn và quirks doesnt. –

+0

Ngạc nhiên rằng trong tất cả các trình duyệt nó đang xảy ra và không ai sửa chữa động cơ của trình duyệt để xử lý hình ảnh như div. "Theo mặc định, hình ảnh được hiển thị nội tuyến" nhưng vẫn còn lý do không gian? dù sao đi nữa, câu trả lời của bạn đã giúp, chúng tôi có thể tiếp tục. Cảm ơn! –

4

Điều này là do, như được đề cập bởi @Pawel, "theo mặc định, hình ảnh được hiển thị nội tuyến". Vì nó là "inline" một số không gian dưới đây sẽ được cung cấp cho các ký tự như 'g, j, q, y' vv enter image description here

Vì vậy, một giải pháp khác là chỉ cần thiết lập các hình ảnh như khối:

img { 
    display:block; 
} 

Một ví dụ là ở đây: https://gist.github.com/MrCoder/450783bc33d6b412075d

Các vấn đề liên quan