Là <img> cấp khối phần tử hoặc cấp nội tuyến?


163

Tôi đã đọc ở đâu đó <img>yếu tố hành xử như cả hai. Nếu đúng, ai đó có thể vui lòng giải thích với các ví dụ?

Câu trả lời:


189

Đó là sự thật, cả hai đều - hay chính xác hơn, chúng là các yếu tố "khối nội tuyến". Điều này có nghĩa là chúng chảy nội tuyến như văn bản, nhưng cũng có chiều rộng và chiều cao như các phần tử khối.

Trong CSS, bạn có thể đặt một thành phần display: inline-blockđể làm cho nó sao chép hành vi của hình ảnh *.

Hình ảnh và đối tượng còn được gọi là các phần tử "được thay thế", vì chúng không có nội dung theo từng phần, về cơ bản phần tử được thay thế bằng dữ liệu nhị phân.

* Lưu ý rằng các trình duyệt sử dụng kỹ thuật display: inline(như đã thấy trong các công cụ dành cho nhà phát triển) nhưng chúng đang xử lý đặc biệt cho hình ảnh. Họ vẫn theo tất cả các đặc điểm của inline-block.


Tôi luôn đọc rằng hình ảnh là các thành phần nội tuyến, không phải là khối nội tuyến, nhưng điều đó có nghĩa là chúng sẽ là khối nội tuyến, do khả năng thêm chiều rộng và chiều cao.
Donato

22
Câu trả lời này không đúng về mặt kỹ thuật. Nói một cách chính xác, imgcác yếu tố không phải inline-blocknhưng thực sự là inlinecác yếu tố. Bạn có thể kiểm tra điều này trong một trình duyệt hiện đại bằng cách nhấp chuột phải vào hình ảnh, nhấp vào "Kiểm tra phần tử", sau đó xem kiểu được tính toán, sẽ hiển thị display: inline. Không có ngữ cảnh khối xảy ra bên trong thẻ, vì vậy không đúng khi gọi nó inline-block. Để biết thêm thông tin về các yếu tố nội tuyến được thay thế, hãy xem câu trả lời của Quentinbài viết MDN này .
Maximillian Laumeister

@Max liên kết đó không nói gì về các yếu tố thay thế là nội tuyến.
DisgruntledGoat

@DisgruntledGoat Liên kết tôi đã đăng không nói rằng imgcác thành phần là nội tuyến - công cụ phát triển Google Chrome hiển thị imgcác thành phần là nội tuyến. Bài đăng này là nơi duy nhất tôi tìm thấy cho đến nay nói rằng chúng là inline-blockthay thế. Thật thú vị, tôi đã không tìm thấy bất kỳ cơ quan nào nói rằng họ là inlinemột trong hai. Là làm thế nào để điều trị thẻ phụ thuộc vào việc thực hiện, có thể?
Maximillian Laumeister

2
@Max Theo đó , các phần tử được thay thế nằm ngoài phạm vi của mô hình định dạng CSS. Không có gì trong thông số kỹ thuật HTML hoặc CSS xác định rằng hình ảnh là nội tuyến. Vì vậy, bất kể trình duyệt nói gì, hình ảnh được xử lý chính xác như chúng được đặt display:inline-block.
DisgruntledGoat

53

Một imgphần tử là một phần tử nội tuyến được thay thế .

Nó hoạt động như một yếu tố nội tuyến (vì nó là), nhưng một số khái quát về các yếu tố nội tuyến không áp dụng cho imgcác yếu tố.

ví dụ

Khái quát hóa: "Chiều rộng không áp dụng cho các yếu tố nội tuyến"

Thông số kỹ thuật thực sự nói gì : "Áp dụng cho: tất cả các yếu tố ngoại trừ các yếu tố nội tuyến không thay thế, các hàng trong bảng và các nhóm hàng"

Vì một hình ảnh là một yếu tố nội tuyến được thay thế, nên nó được áp dụng.


13

Các phần tử IMG là nội tuyến, nghĩa là trừ khi chúng được thả nổi, chúng sẽ chảy theo chiều ngang với văn bản và các phần tử nội tuyến khác.

Chúng là các phần tử "khối" ở chỗ chúng có chiều rộng và chiều cao. Nhưng họ hành xử giống như "khối nội tuyến" trong khía cạnh đó.


7

Đối với hầu hết tất cả các mục đích, hãy nghĩ về chúng như một yếu tố nội tuyến với tập chiều rộng. Về cơ bản, bạn có thể tự do đưa ra cách bạn muốn hình ảnh hiển thị bằng CSS. Tôi thường đặt một vài lớp hình ảnh như vậy:

img.center {display:block;margin:0 auto;}

img.left {float:left;margin-right:10px;}

img.right  {float:right;margin-left:10px;}

img.border  {border:1px solid #333;}

2

Bất cứ khi nào bạn chèn một hình ảnh, nó chỉ mất chiều rộng mà hình ảnh ban đầu. Bạn có thể thêm bất kỳ phần tử html nào khác bên cạnh nó và bạn sẽ thấy rằng nó sẽ cho phép nó. Điều đó làm cho hình ảnh trở thành một yếu tố "nội tuyến".


0

Đó là sự thật, cả hai đều - hay chính xác hơn, chúng là các yếu tố "khối nội tuyến". Điều này có nghĩa là chúng chảy nội tuyến như văn bản, nhưng cũng có chiều rộng và chiều cao như các phần tử khối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.