Валидация W3C: Указанный элемент списка внутри этикетки
-
28-09-2019 - |
Вопрос
Учитывая тот факт, что <label>
и <span>
встроенные элементы и <ol>
это блок-элемент, какой правильный способ гнездиться <ol>
Внутри диапазона / этикетки с помощью скрипта?
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>
Цель состоит в том, чтобы иметь автоматический заказанный список, который не зависит от JavaScript, который также считается действительным W3C XHTML.
Решение
Ты мог Используйте ImageAmap (map
) Чтобы содержать ваш список, но это может быть злоупотребляет map
ярлык.
Что я говорю, это что-то вроде следующего:
<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" />
Редактировать: W3C утверждает, что map
Атрибут - это уровень блока:
Модель содержимого элемента карты позволяет авторам объединить следующее:
- Один или несколько элементов области. Эти элементы не имеют содержания, но указывают геометрические области карты изображения и ссылку, связанные с каждым регионом. Обратите внимание, что пользовательские агенты обычно не представляют элементы области. Следовательно, авторы должны предоставлять альтернативный текст для каждой области с атрибутом ALT (см. Ниже для получения информации о том, как указать альтернативный текст).
- Контент уровня блока. Этот контент должен включать элементы, указывающие геометрические области карты изображения и ссылку, связанные с каждым регионом. Обратите внимание, что пользовательский агент должен рендерировать контент уровня блока элемента карты. Авторы должны использовать этот метод для создания более доступных документов.
Другие советы
Поскольку никто не отвечает, я сделаю удар:
Вручную создать список, используя пролеты
<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>
Каждое место, которое вы видите ol{...}
или li{...}
В CSS вам придется вставить класс; ol,.ol{...}
и li,.li{...}
. Отказ Кроме того, .ol
вероятно, надо иметь display:block;
Перерывы линий, вероятно, могут быть заменены четкой, но это все в верхней части моей головки, без тестирования.
<!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>