HTML iç içe liste yapmak için doğru yolu?


500

W3 belgelerinde önek bulunan bir iç içe liste örneği vardırDEPRECATED EXAMPLE: , ancak hiçbir zaman kullanımdan kaldırılmamış bir örnekle düzeltilmemiş veya örnekle ilgili sorunun tam olarak ne olduğu açıklanmamıştır.

Peki bir HTML listesi yazmanın doğru yolu bu yollardan hangisidir?

Seçenek 1 : Yuvalanmış <ul>ebeveynin bir alt öğesidir<ul>

<ul>
    <li>List item one</li>
    <li>List item two with subitems:</li>
    <ul>
        <li>Subitem 1</li>
        <li>Subitem 2</li>
    </ul>
    <li>Final list item</li>
</ul>

Seçenek 2 : Yuvalanmış <ul>, <li>ait olduğu bir çocuktur

<ul>
    <li>List item one</li>
    <li>List item two with subitems:
        <ul>
            <li>Subitem 1</li>
            <li>Subitem 2</li>
        </ul>
    </li>
    <li>Final list item</li>
</ul>

Yanıtlar:


509

Seçenek 2 doğrudur.

İç içe liste, iç içe olduğu listenin bir <li>öğesinin içinde olmalıdır .

Listelerdeki W3C Wiki'sine bağlantı (aşağıdaki yorumdan alınmıştır): HTML Wiki Listeleri .

HTML5 W3C ulspesifikasyonuna bağlantı: HTML5ul . Bir ulöğenin tam olarak sıfır veya daha fazla liöğe içerebileceğini unutmayın . Aynısı HTML5 için deol geçerlidir . Açıklama listesi ( HTML5dl ) benzer, ancak her ikisi de sağlar dtve ddelemanları.

Diğer Notlar:

  • dl = tanım listesi.
  • ol = sıralı liste (numaralar).
  • ul = sırasız liste (madde işaretleri).

41
İşte resmi W3C bilgisi, w3.org/wiki/HTML_lists#Nesting_lists , Seçenek 2 doğru yoldur
Jose Elera

Geçerli HTML5 ile oluşturmak imkansız gibi görünen bir durumda koştu: bir üst liste öğesi olmayan bir iç içe liste öğesi (bir kelime işlemci bir liste öğesinin başında girinti için SEKME basarak düşünün). Soruma buradan bakın: stackoverflow.com/questions/61094384/…
Mark


33

Seçenek 2 doğrudur: Yuvalanmış <ul>, <li>ait olduğu bir alt öğedir.

Eğer varsa doğrulamak , seçenek 1 html 5'de hata olarak çıkageldi - Kredi: user3272456


Doğru: <ul>çocuğu olarak<li>

HTML iç içe listesi oluşturmanın uygun yolu, ait olduğu <ul>alt öğe olarak iç içe <li>geçmiştir. Yuvalanmış liste, içinde <li>bulunduğu liste öğesinin içinde olmalıdır .

<ul>
    <li>Parent/Item
        <ul>
            <li>Child/Subitem
            </li>
        </ul>
    </li>
</ul>

Yuvalama Listeleri için W3C Standardı

Liste öğesi başka bir listenin tamamını içerebilir - bu listeye "iç içe yerleştirme" olarak bilinir. Bu makalenin başındaki gibi içindekiler gibi şeyler için kullanışlıdır:

  1. Birinci bölüm
    1. Bölüm Bir
    2. İkinci Bölüm
    3. Üçüncü Bölüm
  2. İkinci bölüm
  3. Üçüncü bölüm

Yuva listelerinin anahtarı, yuvalanmış listenin belirli bir liste öğesiyle ilgili olması gerektiğini hatırlamaktır. Bunu kodda yansıtmak için iç içe liste bu liste öğesinin içinde bulunur. Yukarıdaki listenin kodu şuna benzer:

<ol>
  <li>Chapter One
    <ol>
      <li>Section One</li>
      <li>Section Two </li>
      <li>Section Three </li>
    </ol>
  </li>
  <li>Chapter Two</li>
  <li>Chapter Three  </li>
</ol>

İç içe listenin <li>ve içerdiği liste öğesinin metninden sonra nasıl başladığına dikkat edin (“Birinci Bölüm”); ardından </li>içeren liste öğesinden önce biter . Yuvalanmış listeler, web sitesinin hiyerarşik yapısını tanımlamanın iyi bir yolu olduğu için genellikle web sitesi gezinme menülerinin temelini oluşturur.

Teorik olarak istediğiniz sayıda listeyi iç içe yerleştirebilirsiniz, ancak pratikte listeleri çok derinlere yerleştirmek kafa karıştırıcı olabilir. Çok büyük listeler için, içeriği bunun yerine başlıkları olan birkaç listeye ayırmak, hatta ayrı sayfalara bölmek daha iyi olabilir.


7

Doğrularsanız, seçenek 1, html 5'te hata olarak görünür, bu nedenle seçenek 2 doğrudur.


6

İkinci seçeneği tercih ediyorum, çünkü liste öğesini o iç içe listenin sahibi olarak açıkça gösteriyor. Her zaman anlamsal olarak sağlam HTML'ye yaslanırım.


2

Yuvalama listeleri için "ul" yerine TAG "dt" yi kullanmayı düşündünüz mü? Stil ve yapı devralma, bölüm başına bir başlık almanıza izin verir ve içeri giren içeriği otomatik olarak tablo haline getirir.

<dl>
  <dt>Coffee</dt>
    <dd>Black hot drink</dd>
  <dt>Milk</dt>
    <dd>White cold drink</dd>
</dl>

VS

<ul>
   <li>Choice A</li>
   <li>Choice B
      <ul>
         <li>Sub 1</li>
         <li>Sub 2</li>
      </ul>
   </li>
</ul>

2
Örnekleriniz aynı değil. "Seçenek A", "Seçim B", "Alt 1", "Alt 2" ile ikinci örnek , eşleşen dt/ ddetiketleri için çalışmaz . Ayrıca içsel stil (ve şüphelendiğim tablolama) sadece varsayılan tarayıcı stil sayfasından geliyor, bu çok fazla şey söylemiyor. Semantik bir unsur gibi davranırdım; bir tanım listeniz varsa veya belki sadece başlık / açıklama verisi çiftleriniz varsa, dliyi bir seçim olabilir.
Ricket

Yorumunuzu, eşdeğer örnekler vermek üzere düzenleyebilir misiniz - örneğin, hem Seçenek A hem de Seçenek B için Sub 1 ve Sub 2 alt girişleri olan seçim B'yi içermek için?
Zlatin Zlatev

-5

Burada belirtilmeyen, seçenek 1'in listelerin keyfi olarak iç içe yerleştirilmesine izin vermesidir.

İçeriği / css'yi kontrol etmeniz önemli değildir, ancak zengin bir metin düzenleyicisi oluşturuyorsanız kullanışlı olur.

Örneğin, gmail, gelen kutusu ve evernote gibi tüm listelerin oluşturulmasına izin verilir:

keyfi olarak iç içe liste

Seçenek 2 ile bunu yapamazsınız (ekstra bir liste öğeniz olacak), seçenek 1 ile yapabilirsiniz.


2
Seçenek 1 geçersiz HTML üretir. Beş yıl önce bu soru sorulduğunda, durum böyle olmayabilir ama şimdi.
j08691

Evet, kesinlikle geçersiz HTML. Ancak hala kullanılmaktadır ve uyumluluk için hala yararlıdır. Alternatif, bir e-posta oluştururken istediğiniz şey olmayabilir kenar boşlukları ve madde işaretleri ile uğraşmaktır.
Ibash

1
Neden yanlış hizalanmış bir şey istediğimi anladığımdan emin değilim. Bunun için daha anlamlı bir kullanım sağlamak üzere yorumunuzu düzenleyebilir misiniz?
Zlatin Zlatev

Daha da önemlisi bu, bir grup mermi için serbest form düzenlemesine izin vererek daha sezgisel bir his verir. Bir kullanıcı olarak, bir madde işaretler listem varsa bunları girintili hale getirmek ve yeni bir madde işareti altına yerleştirmek isteyebilirim. İsteğe bağlı olarak girintileme yeteneği olmadan, kullanıcının önce başlık mermisini yerleştirmesi ve daha sonra her mermiyi girintiye alması gerekir. Kullanıcı keyfi olarak girintileme özelliğiyle, mermi grubunu girintili hale getirebilir ve daha sonra yeni bir başlık mermisi ekleyebilir.
Ibash
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.