好的,我已经多次阅读过内联元素不应包含块级元素的说法。我同意,这会带来一些问题,并且可能变得混乱。但我发现这是实现以下内容的唯一解决方案:
我正在尝试创建一个HTML模板,模仿Metro UI“瓷砖”(是的,就是Windows 8中的那个)。瓷砖使用<li>
元素制作。现在,问题在于我想让整个瓷砖(完整的<li>
标签)可点击,但正确的HTML告诉我不能用内联元素包围块级元素。此外,你也不能用<a>
包围<li>
。有没有不违反HTML规则的方法来实现这个目标?
好的,我已经多次阅读过内联元素不应包含块级元素的说法。我同意,这会带来一些问题,并且可能变得混乱。但我发现这是实现以下内容的唯一解决方案:
我正在尝试创建一个HTML模板,模仿Metro UI“瓷砖”(是的,就是Windows 8中的那个)。瓷砖使用<li>
元素制作。现在,问题在于我想让整个瓷砖(完整的<li>
标签)可点击,但正确的HTML告诉我不能用内联元素包围块级元素。此外,你也不能用<a>
包围<li>
。有没有不违反HTML规则的方法来实现这个目标?
一种合法和清晰的方法是使用 inline-block
样式来设置 A
标签,并让它们填满整个 LI
。
LI > A
{
display: inline-block;
}
或者
LI > A
{
display: block;
}
这将在IE7及以上版本以及最新版本的Firefox,Chrome,Safari,Opera等浏览器中工作。
请注意,在HTML 5的当前“草案”中,放置更多种类的元素到锚点标签中是合法的(参见“允许的内容”和示例):http://dev.w3.org/html5/markup/a.html
>
,而是使用类。最后,<a>
应该具有overflow:hidden
修复程序以填满整个容器。 - Joseph<a>
放置在<li>
内部,将其设置为显示块并给它所需的填充以实现块感觉即可。<li>
中的<a>
标签中的文本,这是完全合法的。然而,在我的情况下,<a>
标签不仅包含文本,还可能包含段落等块级元素。尽管如此,在行内场景中仍然是块级元素。 - Joseph