Рассмотрим следующий HTML-код:
<ul>
<li>
<h2>Item 1</h2>
<p class="subline">Meta information bla bla</p>
<div class="description">
<p>Paragraph one</p>
<p>Paragraph two</p>
</div>
</li>
<!-- More ... -->
</ul>
Я хотел бы связать каждую из li
с ссылкой.В качестве подтверждения концепции я даю вам этот недопустимый код:
<ul>
<li>
<a href="http://www.google.com/search?q=test+1">
<h2>Item 1</h2>
<p class="subline">Meta information bla bla</p>
<div class="description">
<p>Paragraph one</p>
<p>Paragraph two</p>
</div>
</a>
</li>
<!-- More ... -->
</ul>
Очевидно, это не будет проверяться, потому что я не могу иметь элементы уровня блока внутри встроенных элементов.
РЕДАКТИРОВАТЬ: Оказывается, приведенный выше код действителен в HTML5.Проблема решена.
Мне нужно найти другое решение:
Вставить тег a
в каждый элемент уровня блока
Я рассмотрел добавление идентичных *Теги 1021 *, p.subline > a
и div > p > a
, но мне бы хотелось иметь состояние наведения с использованием :hover
, которое влияет на всю область ссылки, поэтому оно не будет работать.
Использованиесобытие onclick
Я использовал Javascript для решения этой проблемы раньше (li.onclick = function() { window.location.href = ...
), но тогда я не могу использовать среднюю клавишу мыши, чтобы открыть в новом окне.Это влияет на удобство использования, зависит от Javascript и, честно говоря, очень раздражает.
Включение элементов уровня блока в строку:
<ul>
<li>
<a href="http://www.google.com/search?q=test+1">
<span class="title">Item 1</span>
<span class="subline">Meta information bla bla</span>
<span class="description">
<span>Paragraph one</span>
<span>Paragraph two</span>
</span>
</a>
</li>
<!-- More ... -->
</ul>
Скорее всего, display: block
потребуетсяк некоторым или всем этим промежуткам, чтобы заставить их вести себя.
Это действительный HTML, но он действительно ужасен.
Кто-нибудь знает лучший способ решения этой проблемы?