2016-07-12 18 views
0

Nehmen wir an, ich möchte eine ToDo-Liste, wie dies vorstellen:Welcher HTML-Tag eignet sich semantisch für eine "alternierende" Liste mit "Intervallen"?

8:00 
    Walk the dog! 
8:30 
    Clean the car! 
9:20 
    Rob the bank! 
9:21 
    Run the dog! 
22:00 
    Have a beer! 
22:05 

Mein erster war allerdings, eine Definitionsliste zu verwenden, aber es ist nicht eine gute Passform:

<dl> 
    <dt>8:00</dt> 
    <dd>Walk the dog!</dd> 
    <dt>8:30</dt> 
    <dd>Clean the car!</dd> 
    <dt>9:20</dt> 
    <dd>Rob the bank!</dd> 
    <dt>9:21</dt> 
    <dd>Run the dog!</dd> 
    <dt>22:00</dt> 
    <dd>Have a beer!</dd> 
    <dt>22:05</dt> 
    <!--<dd>Missing element???</dd>--> 
</dl> 

AFAIK, a <dt> müssen eine oder mehrere <dd> Tags folgen. Aber das letzte Mal (22:05) hat kein (nicht leeres) Element, um ihm zu folgen.

Weiterhin sollten die semantisch gegebenen Zeitpunkte genauso dem davor liegenden Element entsprechen, aber auch hier verliert sich die Beziehung.

Gibt es eine andere Kombination von HTML-Tags, die besser zu diesen Daten passen?

+0

Eine gute alte Tabelle könnte auch hier tun - schließlich haben Sie zwei _columns_, eine mit Zeiten, wenn Zeug beginnt, und die zweite mit dem Zeug. Wenn nach dem letzten Zeitpunkt nichts mehr passiert, kann die entsprechende Stuff-Zelle leer bleiben. (Accessibility-weise können Sie auch einen Text dort für Screen-Reader-Benutzer, wie "nichts mehr" oder "Aktivitäten des Tages enden hier" - und verstecken es für die Nutzer.) – CBroe

+0

@CBroe Ich denke schon, aber die Sache ist dass ich nicht möchte, dass Zeiten und Aufgaben in derselben Zeile stehen (weder semantisch noch visuell) - der Interleaving-Aspekt ist mir wichtig. Dafür könnte ich * noch * eine Tabelle verwenden, aber dann müsste ich die Hälfte aller ihrer Zellen leer lassen, was ein wenig grausam erscheint ... – Will

+0

Aber sie gehören semantisch zusammen - oder wie geht das nicht? – CBroe

Antwort

1

HTML kann dies nicht vermitteln. Sie müssen die Dauern/Intervalle explizit machen (d. H. Mit natürlicher Sprache).

Während the time element can be used for durations hat die Dauer kein bestimmtes Datum als Start/Ende. So können Sie sagen, dass das Gehen des Hundes 30 Minuten dauert, aber nicht, dass Sie den Hund von 8:00 bis 8:30 Uhr gehen. Durch die Verschachtelung von time Elementen können Sie (höchstens) darauf hinweisen.

Das Äquivalent für nicht zeitbezogene Werte ist die data element, aber es gibt keine standardisierten Formate, so dass Sie nicht vermitteln können, dass ein Wert die Meerestiefe oder ein Meerestiefenintervall darstellt.

So mit dl könnte es so aussehen:

<dl> 
    <dt><time datetime="12h 39m"><time>09:21</time> to <time>22:00</time></time></dt> 
    <dd>Run the dog!</dd> 
    <dt><time datetime="5m"><time>22:00</time> to <time>22:05</time></time></dt> 
    <dd>Have a beer!</dd> 
</dl> 

(Dies würde auch erlauben, mal zu überspringen, beispielsweise im Fall, dass Sie nicht wirklich den Hund von 9.21 bis 22.00 Uhr liefen .

semantisch schwächere Variante (zB

), wenn Sie so etwas wie diese nicht zur Verfügung stellen wollen würde die Endzeit im selben Elemente):

<dt><time datetime="5m"><time>22:00</time></time></dt> 

, würden Sie in diesem Fall hav e zum letzten Mal ein leeres dd Element zur Verfügung zu stellen (oder was auch immer in Ihrem Fall Sinn macht).

+1

Ein vernünftiger Ansatz, danke. Ich bin mittlerweile zu einem ähnlichen Schluss gekommen, da ich zustimme, dass der beste Kompromiss darin besteht, sowohl die Start- als auch die Endzeit für jeden Listenpunkt anzugeben. Wann immer die Endzeit eines Gegenstands zufällig mit der Startzeit des nächsten Gegenstands zusammenfällt, gibt es die Möglichkeit, ein wenig CSS und Javascript zu verwenden, um eines der beiden zu verbergen - aus Gründen der kosmetischen Attraktivität. (Danke auch, dass Sie meine Frage aus dem -1-Punkt, aus dem es bestand, aus Gründen, die ich nicht verstehen kann, aufgewertet haben.) – Will