Chúng ta vẫn cần dấu gạch chéo cuối trong HTML5?


122

Trong HTML5, chúng ta vẫn cần dấu gạch chéo cuối như trong XHTML?

<img src="some_image.png" />

validator.w3.org không phàn nàn nếu tôi đánh rơi nó, thậm chí không có cảnh báo. Nhưng một số tài liệu trực tuyến dường như chỉ ra rằng dấu gạch chéo kết thúc vẫn được yêu cầu cho các thẻ như img, liên kết, meta, br, v.v.


6
Còn nữa? Có bất kỳ phiên bản HTML nào yêu cầu đóng tất cả các thẻ không?
Gabe

9
@Gabe XHTML 1.0 Nghiêm ngặt cần nó. Ý tôi là, các trang web thường tải tốt, nhưng nó được coi là không hợp lệ.
CaptSaltyJack

3
Có, nhưng X không chỉ ở đó vì X rất tuyệt, có một khoảng cách khá xa giữa HTML và XHTML.

1
@Capt: Bạn nói đúng, nhưng đó chỉ là vấn đề nếu loại tài liệu của bạn chỉ ra XHTML.
Gabe

Câu trả lời:


80

img các thẻ là Phần tử Void nên chúng không cần thẻ kết thúc.

Khu vực phần tử trống, cơ sở, br, col, lệnh, nhúng, hr, img, đầu vào, keygen, liên kết, meta, param, nguồn, theo dõi, wbr

...

Phần tử trống chỉ có thẻ bắt đầu; thẻ kết thúc không được chỉ định cho các phần tử void.

W3C | CÁI GÌ

Điều đó được cho là nó không phân tích cú pháp nghiêm ngặt trong HTML5 vì vậy nó sẽ không gây hại gì lớn.


Tôi chỉ tò mò, vì trình soạn thảo của tôi (Komodo) thụt lề nếu tôi nhập '<img src = "x">' và nhấn enter. Nó mong đợi dấu gạch chéo ở chế độ HTML5 và tôi muốn đảm bảo rằng đây là hành vi chính xác.
CaptSaltyJack

5
Đây là HTML, không phải XHTML, vì vậy nó không bắt buộc. May mắn thay, các trình phân tích cú pháp vẫn hiểu rõ các dấu gạch chéo cuối kiểu XHTML, vì vậy không có hại gì khi để nó ở đó. Có nghĩa là dễ dàng chuyển đổi ngược sang XHTML, nếu cần thiết vì bất kỳ lý do gì.
Nightfirecat

4
@FreeRadical: Dấu gạch chéo ở cuối là tùy chọn cho phần tử void, nhưng thẻ kết thúc sẽ không hợp lệ.
Ry-

26
Trong khi câu hỏi là về dấu gạch chéo cuối (ví dụ <br/), câu trả lời này chỉ đề cập đến thẻ kết thúc (ví dụ <br></br>).
Miễn phí Radical

12
@FreeRadical là đúng. Câu trả lời này là không chính xác về mặt kỹ thuật, bởi vì nó lẫn lộn an ending slashvới an end tag, và do đó hiểu lầm đoạn spec mà nó trích dẫn. Điều này dẫn đến sự nhầm lẫn của @ YannisDran. @minitech nói đúng điều gì là đúng.
ToolmakerSteve

94

Trong HTML 5, dấu gạch chéo đóng là tùy chọn trên các phần tử void nhưimg (Tôi đang thêm điều này vì câu trả lời được chấp nhận hiện tại chỉ cho biết: "thẻ kết thúc không được chỉ định cho phần tử void" và không giải quyết dấu gạch chéo đóng trong phần tử void).

Trích dẫn từ http://www.w3.org/TR/html5/syntax.html#start-tags (số 6):

Sau đó, nếu phần tử là một trong các phần tử void, hoặc nếu phần tử là phần tử nước ngoài, thì có thể có một ký tự "/" (U + 002F). Ký tự này không ảnh hưởng đến các phần tử void, nhưng đối với các phần tử nước ngoài, nó đánh dấu thẻ bắt đầu là tự đóng.


Đây không phải là một thứ HTML5. Trên thực tế, trong các Phiên bản HTML trước đó <br/>hoặc <img ... />là lỗi.
jj

@jj Tôi trích dẫn tài liệu HTML5, vì vậy tôi không hiểu tại sao không nghĩ rằng nó không phải là HTML5. Và thực sự, trong các phiên bản khác, những dấu gạch chéo như vậy là lỗi.
Miễn phí Radical

Chắc chắn, tôi muốn nói "chúng ta vẫn cần dấu gạch chéo cuối trong HTML5" là một câu hỏi sai. Có thể tôi sẽ viết một câu trả lời đầy đủ với một số liên kết bí ẩn vào một ngày nào đó. IIRC, đó là một quyết định khó khăn đối với Ian Hickson (người biên tập HTML) khi cho phép dấu gạch chéo trong HTML5.
jj

2

Không. HTML chưa bao giờ yêu cầu nó, ngay cả trước HTML5. Nếu bạn định sử dụng XHTML với các tính năng HTML, thì có, nó là cần thiết.


1
XHTML không giống HTML5, đúng không? Nếu DOCTYPE của tôi chỉ là "html", tôi không cần dấu gạch chéo ở cuối, đúng không?
CaptSaltyJack

@CaptSaltyJack: Đúng.
Ry-

1
@CaptSaltyJack - HTML5 bao gồm cả HTML thông thường và XHTML. XHTML yêu cầu đóng tất cả các phần tử, nhưng đối với trình duyệt, loại tài liệu không ảnh hưởng đến tình huống. Để có lời giải thích đầy đủ hơn, hãy xem stackoverflow.com/questions/2662508/…
Alohci


1

Dấu gạch chéo cuối cho các phần tử void là tùy chọn.

Cả hai đều là HTML5 hợp lệ:

<img src="some_image.png" />

<img src="some_image.png">

Phần tử Void là:

  • area
  • base
  • br
  • col
  • embed
  • hr
  • img 👍
  • input
  • link
  • meta
  • param
  • source
  • track
  • wbr

Ngoài thú vị:

Phần tử rỗng không được có bất kỳ nội dung nào (vì không có thẻ kết thúc, không thể đặt nội dung nào giữa thẻ bắt đầu và thẻ kết thúc).

Thêm chi tiết tại: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Xem thêm câu hỏi SO tại đây:
Thẻ tự đóng (phần tử void) trong HTML5

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.