Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 可点击<;李>;使用<;a>;标记-没有要使用的JS。这合法吗?_Html_Css - Fatal编程技术网

Html 可点击<;李>;使用<;a>;标记-没有要使用的JS。这合法吗?

Html 可点击<;李>;使用<;a>;标记-没有要使用的JS。这合法吗?,html,css,Html,Css,好的,我已经读过很多次了,内联元素不应该包含块元素。我同意,这是有问题的,它可能会变得混乱后。但我发现这是唯一的解决方案,可以做到以下几点: 我正在尝试创建一个HTML模板,它模仿Metro UI的“tiles”(是的,就是Windows8中的那个)。瓷砖是使用元素制作的。现在,问题是我希望平铺(整个标记)是可点击的,但是正确的HTML告诉我不能用内联元素包围块元素。此外,不能用包围。有没有什么方法可以在不违反html规则的情况下做到这一点?合法且干净的方法是对A标记使用inline block

好的,我已经读过很多次了,内联元素不应该包含块元素。我同意,这是有问题的,它可能会变得混乱后。但我发现这是唯一的解决方案,可以做到以下几点:


我正在尝试创建一个HTML模板,它模仿Metro UI的“tiles”(是的,就是Windows8中的那个)。瓷砖是使用
  • 元素制作的。现在,问题是我希望平铺(整个
  • 标记)是可点击的,但是正确的HTML告诉我不能用内联元素包围块元素。此外,不能用
    包围
  • 。有没有什么方法可以在不违反html规则的情况下做到这一点?

    合法且干净的方法是对
    A
    标记使用
    inline block
    样式,并让它们填充整个
    LI

    LI > A
    {
        display: inline-block;
    }
    

    这将适用于IE7+,以及所有最新版本的Firefox、Chrome、Safari、Opera等

    请注意,在当前的HTML5草案中,将更多种类的元素放在锚标记中是合法的(请参阅“允许的内容”和示例):


    附加文章:

    如果您查看stackoverflow菜单,您会发现它非常简单。将
    放在
  • 内,将其放在显示块中,并为其提供想要达到块感的填充。

    您介意共享代码吗?如果我这样做,将块元素放在标记中是否合法?是内联元素。@fskreuz-请参阅我的更新答案。总之,是的,它在HTML5中是合法的。在较旧的浏览器中仔细测试。确保它在HTML5中是合法的。对旧版浏览器有什么建议吗?@fskreuz-我在IE7和IE8中的锚中使用了块内容,没有问题。然而,我注意到了在IE7中使用HTML5 doctype的问题。我建议您尝试一下,如果遇到问题,可以用您的特定代码打开另一个问题。这很有效!尽管验证是不允许的(我使用的是xhtml strict)。我不是为了IE6兼容性而使用
    ,而是使用类。最后,
    应该有
    溢出:隐藏
    修复程序来填充整个容器。与stack菜单的区别在于,它只包含
  • 中的文本,这是完全合法的。然而,在我的例子中,
    将不仅仅包含文本。例如,它可以包含段落,这是一个块元素。仍然,在内联场景中阻塞。
    LI > A
    {
        display: block;
    }