2010-07-07 28 views
10

Dường như (nghiêm ngặt) html không cho phép lồng các phần tử không nội tuyến bên trong <p>, nhưng sau đó làm cách nào để hiển thị đoạn có chứa danh sách văn bản tự nhiên). Tôi đã nhìn thấy ba câu trả lời mà tất cả dường như không hài lòng:Danh sách tổ trong các đoạn văn trong html

  • Danh sách không nên xảy ra bên trong đoạn văn. (Tôi sẽ không đi vào một cuộc tranh luận văn hóa, nhưng tôi chắc chắn hy vọng rằng html sẽ không trở thành nơi để đọc viết phong cách.)
  • Phân tách văn bản thành một đoạn, sau đó một danh sách, và sau đó là một giây đoạn với văn bản sau. Điều này có vẻ xấu bởi vì bây giờ tôi có các khối <p>các phần của các đoạn và điều đó có vẻ không tốt đối với đánh dấu đang cố di chuyển theo hướng ngữ nghĩa hơn.
  • Đoạn giả sử dụng một số <div class="mypara"> - trông giống như một cách xấu để bỏ qua toàn bộ nội dung và bỏ qua việc sử dụng đánh dấu với ngữ nghĩa phù hợp cho văn bản.

Có cách nào khác để thực hiện điều này đúng ngữ pháp và hợp lệ không?

+0

+1 để chỉ ra các work- chung xung quanh cho vấn đề này. Vấn đề thậm chí còn rõ hơn, khi bạn sử dụng một danh sách ở giữa một câu để nhấn mạnh cấu trúc của nó, như việc tách một câu trên các đoạn văn khác nhau chắc chắn là không đúng ngữ nghĩa. Ví dụ. „Tôi muốn mua [danh sách] • sữa, • đường, • Apple, và • viola [/ list] ngày hôm nay.” Điều này thường được sử dụng khi sắp xếp văn bản với TeX. – Palec

Trả lời

9

Đoạn trong HTML 5, kể từ bản nháp làm việc mới nhất, được định nghĩa là các phần tử luồng chỉ có thể chứa các phần tử tạo phrasing. Các danh sách cũng được định nghĩa là các phần tử luồng và có thể không được kèm theo trong các đoạn văn. Dù bạn cho rằng định nghĩa của đoạn văn phải là gì, đây là định nghĩa chính thức của thuật ngữ trong HTML, và tôi nghĩ rằng nó không có khả năng thay đổi.

Có hai khả năng mà bạn có thể xem xét bên cạnh hai bạn đã đề cập:

  • Hãy cân nhắc cho một yếu tố dòng chảy rộng đạt hơn đoạn nếu nó được áp dụng, chẳng hạn như section, nav, header, footer hoặc article.
  • Sử dụng phương pháp kết hợp: bọc chuỗi p – ol – p với số div lựa chọn của bạn áp dụng định dạng chung cho bộ này.

As far as div đi, spec HTML 5 rõ ràng khuyến cáo rằng nó phải là một yếu tố "phương sách cuối cùng" bởi vì nó không chịu nghĩa ngữ nghĩa trong cách mà các phần tử HTML khác làm, và có thể không được như thân thiện với người dùng trong các tác nhân người dùng thay thế. Đi theo lời khuyên này, tôi sẽ không sử dụng div với chi phí p cho văn bản nội dung nếu ngữ nghĩa quan trọng đối với bạn. Tuy nhiên, nó có thể hữu ích trong việc đảm bảo rằng việc sử dụng nhiều đoạn văn không bị quá trực quan.

+0

Tình huống mà tôi phải đối mặt là một hệ thống tạo HTML, và có vẻ như tùy chọn tốt nhất trong trường hợp này là do sử dụng 'div'. Ngoài ra, đề xuất sử dụng các thẻ rộng hơn có vẻ như là một ý tưởng hay. – Zee

3

Tôi không nghĩ rằng thẻ html <p> có nghĩa là để kiểm soát các thành ngữ của phong cách viết thực tế. Nó là một cách để hiển thị một đoạn văn bản một cách có trật tự. Tôi không tin rằng nó có nghĩa là để mô phỏng tài liệu in. Bạn sẽ phải sử dụng một Div cho cái này.

+0

Nếu nó chỉ để định dạng, thì có vẻ như có rất ít điểm trong việc sử dụng thẻ 'p' ... Nhưng tôi khá chắc chắn rằng tôi đã thấy một số đề cập đến các trình duyệt xử lý chúng khác nhau - nhưng tôi không ' t nhớ ở đâu. (Có thể một cái gì đó liên quan đến trình đọc màn hình.) – Zee

+0

Một số có thể xử lý nó một cách khác thường, nhưng bạn không bao giờ muốn đặt cược chất lượng công việc của mình lên những ý tưởng đó. Bạn luôn luôn, luôn luôn, muốn bắn cho mặt đất trung bình; càng có nhiều người dùng bạn có thể làm cho hạnh phúc trở nên tốt hơn trên trang web của bạn. – John

+0

Chính xác - và đó là lý do tại sao tôi đã đặt câu hỏi ... – Zee

0

Câu trả lời cho câu hỏi của bạn rõ ràng là không, bởi vì các thông số kỹ thuật cho biết bạn không thể làm điều đó. Giống như bạn, tôi muốn duy trì ngữ nghĩa, vì vậy tôi thường đi với tùy chọn thứ 2 của bạn (đoạn văn, danh sách, một đoạn khác). Tuy nhiên, ngoài đỉnh đầu của tôi, tôi không thể nghĩ ra bất kỳ văn bản nào mà danh sách không thực sự phá vỡ luồng văn bản, vì vậy dường như bắt đầu một đoạn văn mới sau khi danh sách không bị tổn thương.

+0

Nó có lẽ phổ biến hơn cho danh sách là một phần của văn bản trước (và tôi biết rằng sẽ không có bất kỳ sự khác biệt trong cách nó ám, nhưng tôi đang cố gắng tìm ra điều đúng là ...). – Zee

1

Tôi cho rằng nó phụ thuộc vào những gì bạn cho là một "đoạn". Rõ ràng với tôi rằng các nhà thiết kế HTML không hề coi danh sách là một phần của một đoạn văn.Và trong khi tôi nghĩ rằng một lập luận có thể được thực hiện cho một trong hai giải thích, tôi là ý kiến ​​cho rằng spec là chính xác.

Trong khi danh sách không đại diện cho suy nghĩ theo dòng suy nghĩ, nó chắc chắn đại diện cho sự thay đổi về giọng nói hoặc phương pháp suy nghĩ, điều tôi tin tưởng xứng đáng là một container ngữ nghĩa mới.

Trong cùng một dòng, đoạn văn đại diện cho một phân vùng hợp lý trong một đoạn văn bản. Danh sách đại diện cho một chuỗi các phân vùng hợp lý, và trong khi có thể tưởng tượng rằng một phân vùng hợp lý có thể được chia thành nhiều phân vùng hơn, nó có ý nghĩa hơn khi tạo một phân vùng mới (đặc biệt là một khoảng ngắt lớn trong giọng nói/phương pháp).

Ngữ nghĩa học có thể chủ yếu là chủ quan. Và đó là tốt. Tuy nhiên, trong trường hợp này, tôi có ý kiến ​​rằng thông số HTML thể hiện chính xác ngữ nghĩa.

+1

Vâng, tôi đặc biệt tránh thảo luận xem đây có phải là quyết định đúng hay không - nhiều hơn vào vấn đề, tôi * không * nghĩ rằng các tác giả HTML phải ở vị trí mà họ xác định liệu một danh sách trong một đoạn là cái gì đó nên được cho phép hay không. Điều đó đòi hỏi phải nghiên cứu kỹ lưỡng về các công trình đánh máy trên các nền văn hóa khác nhau, và chắc chắn có rất nhiều ví dụ về các hệ thống đánh máy (La/TeX là một hệ thống rõ ràng) cho phép các danh sách lồng nhau trong các đoạn văn. – Zee

+0

Tôi cho rằng, câu trả lời dễ dàng cho câu hỏi của bạn là "không" –

+0

BTW - cá nhân, tôi nghĩ rằng nếu câu trả lời của chính thức là bạn không nên viết một danh sách bên trong một đoạn vì nó sai, và nếu có không có điều tra kỹ lưỡng như vậy (mà các tác giả Unicode đầu tư một tấn thời gian), thì đây chỉ là sự kiêu ngạo đơn giản. Đây là lý do tại sao tôi mong đợi câu trả lời thực tế dựa trên các vấn đề kỹ thuật về dựng hình và trình bày thay vì quyết định cho tôi những gì nên được coi là phong cách tốt. – Zee

3

Có lý do kiểu trực quan nào đằng sau tất cả điều này không? Nói cách khác khi bạn có một cái gì đó như sau, là nó trực quan rendering theo một cách mà bạn không tìm thấy lý tưởng?

<p>Some paragraph text.</p> 
<ul> 
    <li>First list item</li> 
    <li>Second list item</li> 
    <li>Third list item</li> 
</ul> 
<p>Another paragraph.</p> 

Nếu vấn đề là quá nhiêu lợi nhuận sau khi P và trước khi UL, sau đó bạn có thể thử một anh chị em chọn liền kề như thế này để bù đắp:

p + ul { margin-top: -1em; } 
+1

Hiển thị trực quan không phải là vấn đề (divs làm việc tốt anyway) - đó là một nỗ lực để tìm một số "đúng" cách để làm điều này, giữ các thẻ có ý nghĩa. – Zee

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