Nên ol / ul bên trong <p> hay bên ngoài?


292

Đó là tiêu chuẩn tuân thủ giữa hai?

<p>Text text text ...
    <ol>
        <li>First element</li>
    </ol>
</p>
<p>
    Other text text ...
</p>

HOẶC LÀ

<p>
    Text text text ...
</p>
<ol>
    <li>First element</li>
</ol>
<p>
    Other text text ...
</p>

40
@oding: bối cảnh có vấn đề?
năng động

Câu trả lời:


422

Câu trả lời ngắn gọn là olcác yếu tố không được phép hợp pháp bên trongp các yếu tố.

Để xem tại sao, hãy đi đến thông số kỹ thuật ! Nếu bạn có thể cảm thấy thoải mái với thông số HTML, nó sẽ trả lời nhiều câu hỏi và sự tò mò của bạn. Bạn muốn biết nếu một olcó thể sống bên trong a p. Vì thế…

4.5.1 Phần ptử :

Thể loại: Nội dung dòng chảy , nội dung Palpable .
Mô hình nội dung: Phrasing nội dung .


4.5.5 Phần oltử :

Thể loại: Nội dung dòng chảy .
Mô hình nội dung : Không hoặc nhiều licác yếu tố hỗ trợ tập lệnh .

Phần đầu tiên nói rằng pcác phần tử chỉ có thể chứa nội dung phrasing (đó là các phần tử dòng nội tuyến trực tuyến như spanstrong ).

Phần thứ hai nói ols là nội dung dòng chảy (khối chặn các yếu tố như pdiv). Vì vậy, chúng không thể được sử dụng bên trong a p.


ols và khác flow contentcó thể được sử dụng trong một số yếu tố khác như div:

4.5.13 Phần divtử :

Thể loại: Nội dung dòng chảy , nội dung Palpable .
Mô hình nội dung: Lưu lượng nội dung .


9
@link: Có, w3.org là một chút kỹ thuật. Tuy nhiên, không có nghi ngờ gì về những gì chính xác khi nào và nếu bạn hiểu chúng.
nyson

5
Tôi nghĩ rằng @Sid giải thích thông số kỹ thuật và một số thuật ngữ của nó chắc chắn là hữu ích. Nếu anh ấy đi xa hơn một chút thì đó sẽ là một câu trả lời tuyệt vời. Ông cũng có thể trả lời rõ ràng câu hỏi :). Tôi đã thêm một chỉnh sửa cho điều đó.
studgeek

1
khủng khiếp để đọc? đừng nghĩ như vậy, hãy đến 4.4.1 The p element, tác giả thậm chí nói về fantastic sentencesđiều gì đó tương tự
Jaime Hablutzel

1
@dynamic Tôi luôn truy cập tài liệu tham khảo HTML của MDN để dễ đọc tài liệu hơn.
Bonk

1
@AaronLS Loại! Khi trình duyệt trả lại cho bạn HTML (ví dụ: trong các công cụ dành cho nhà phát triển hoặc từ .innerHTML), nó sẽ được tạo lại từ cây phần tử. Vì vậy, Chrome không điều chỉnh HTML nhiều như tạo một cây hợp lệ từ HTML gốc, sau đó tạo HTML mới từ cây đó.
s4y

40

Thư hai. Đầu tiên là không hợp lệ.

  • Một đoạn văn không thể chứa một danh sách.
  • Một danh sách không thể chứa một đoạn trừ khi đoạn đó được chứa hoàn toàn trong một mục danh sách.

Một trình duyệt sẽ xử lý nó như vậy:

<p>tetxtextextete 
<!-- Start of paragraph -->
<ol>
<!-- Start of ordered list. Paragraphs cannot contain lists. Insert </p> -->
<li>first element</li></ol>
<!-- A list item element. End of list -->
</p>
<!-- End of paragraph, but not inside paragraph, discard this tag to recover from the error -->
<p>other textetxet</p>
<!-- Another paragraph -->


7

thực ra bạn chỉ nên đặt các phần tử nội tuyến bên trong p, vì vậy trong trường hợp của bạn oltốt hơn bên ngoài


2
Đây là câu trả lời giống như câu trả lời của @David Dorward, mà bạn không thích.
ceejayoz

5
<p>tetxetextex</p>
<ol><li>first element</li></ol>
<p>other textetxeettx</p>

Bởi vì cả hai <p><ol>là phần tử được kết xuất dưới dạng 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.