Validación del W3C: Lista ordenada elemento dentro de la etiqueta
-
28-09-2019 - |
Pregunta
Teniendo en cuenta el hecho de que <label>
y <span>
son elementos en línea y <ol>
es un elemento de bloque, ¿cuál es la forma correcta de un nido <ol>
dentro de un lapso / etiqueta w / o utilizando un script?
input { vertical-align: top; }
label { display: block; }
label + label { margin-top: 1em; }
ol { padding:0; margin:0; }
<label for="foo">
<input id="foo" type="checkbox" />
<span style="padding-left: 1em; display:inline-block;">
<ol>
<li>Boat</li>
<li>Jet</li>
<li>Chopper</li>
</ol>
</span>
</label>
<label for="bar">
<input id="bar" type="checkbox" />
<span style="padding-left: 1em; display:inline-block;">
<ol>
<li>Car</li>
<li>Auto</li>
</ol>
</span>
</label>
El objetivo es tener una lista ordenada automatizado, que no depende de JavaScript, que también se considera W3C XHTML válido.
Solución
podría usar un mapa de imágenes (map
) para contener su lista, sino que pueden ser abusar de la etiqueta map
.
Lo que estoy diciendo es algo como lo siguiente:
<label for="foo" style="padding:1em;display:inline-block;">
<map id="foolist">
<ol>
<li>1</li>
<li>2</li>
<li>3</li>
</ol>
</map>
</label>
<input name="foo" id="foo" type="checkbox" />
EDIT: estados del W3C que el map
atributo es a nivel de bloque:
El modelo de contenido elemento MAP permite autores combinan a la siguiente:
- Uno o más elementos AREA. Estos elementos no tienen ningún contenido, sino especificar las regiones geométricas de la mapa de imagen y el enlace asociado con cada región. Tenga en cuenta que aplicaciones de usuario lo por lo general no hacen los elementos AREA. Por lo tanto, los autores deben proporcionar texto alternativo para cada zona con la atributo alt (ver más abajo para información sobre cómo especificar texto alternativo).
- a nivel de bloque contenido. Este contenido debe incluir una elementos que especifican el geométrica regiones del mapa de imagen y el enlace asociado con cada región. Tenga en cuenta que el agente de usuario debe hacer contenido en bloque de un elemento de MAP. Los autores deben utilizar este método para crear documentos más accesibles.
Otros consejos
Ya que nadie está contestando Voy a tomar una puñalada:
Crear manualmente la lista, utilizando tramos
<label for="foo">
<span style="padding:1em;display:inline-block;">
<span class="ol">
<br /><span class="li">1. 1</span>
<br /><span class="li">2. 2</span>
<br /><span class="li">3. 3</span>
</span>
</span>
</label>
En cada lugar se ve un ol{...}
o li{...}
en el CSS, tendrá que insertar la clase; ol,.ol{...}
y li,.li{...}
. Además, .ol
probablemente tendría que tener display:block;
Los saltos de línea, probablemente podrían ser reemplazados por un claro, pero esto es todo de la parte superior de mi cabeza, w / o pruebas.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<title>foo</title>
<style type="text/css">
/*<![CDATA[*/
span.c1 {padding:1em;display:inline-block;}
/*]]>*/
</style>
</head>
<body>
<ol>
<li><label for="foo"><span class="c1">1</span></label></li>
<li><label for="foo"><span class="c1">2</span></label></li>
<li><label for="foo"><span class="c1">3</span></label></li>
</ol>
</body>
</html>