Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.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 如果一个块元素包含另一个块元素,那么将其更改为与CSS内联是错误的吗?_Html_Css_W3c_Xhtml - Fatal编程技术网

Html 如果一个块元素包含另一个块元素,那么将其更改为与CSS内联是错误的吗?

Html 如果一个块元素包含另一个块元素,那么将其更改为与CSS内联是错误的吗?,html,css,w3c,xhtml,Html,Css,W3c,Xhtml,我知道将块元素放在内联元素中是错误的,但是下面呢 想象一下这个有效的标记: <div><p>This is a paragraph</p></div> 这将创建一种情况,其中内联元素包含一个块元素(默认情况下,div变为内联,p变为块) 页面元素仍然有效吗 在应用CSS规则之前或之后,我们如何以及何时判断HTML是否有效 更新:我后来了解到,在HTML5中,将块级元素放在链接标记中是完全有效的,例如: <a href="#">

我知道将块元素放在内联元素中是错误的,但是下面呢

想象一下这个有效的标记:

<div><p>This is a paragraph</p></div>
这将创建一种情况,其中内联元素包含一个块元素(默认情况下,div变为内联,p变为块)

页面元素仍然有效吗

在应用CSS规则之前或之后,我们如何以及何时判断HTML是否有效

更新:我后来了解到,在HTML5中,将块级元素放在链接标记中是完全有效的,例如:

<a href="#">
      <h1>Heading</h1>
      <p>Paragraph.</p>
</a>


如果您想将一大块HTML作为链接,这实际上非常有用。

我不知道这是否验证了任何规则,但我建议使用和来确定这一点。希望这是有帮助的

我认为,(x)html是有效的,css是有效的。结果有效吗?是的,如果它在浏览器中的显示符合您的要求。

无论它是否有效,元素结构都是错误的。不将块元素放在内联元素中的原因是,浏览器可以以易于预测的方式渲染元素


即使它没有违反HTML或CSS的任何规则,仍然会创建无法按预期呈现的元素。浏览器必须处理元素,就像HTML代码无效一样。

HTML的验证独立于CSS,因此页面仍然有效。我相当肯定CSS规范也没有提到它,但不要引用我的话。不过,我会非常小心地使用这样的技术,因为虽然它可能会在某些浏览器中按预期呈现,但您需要对它们全部进行测试—我看不出有多少保证。

HTML和CSS仍然有效。理想情况下,您不必这样做,但CSS的特定部分实际上是一种方便的方法(在语法上有效,但在语义上无效),用于获取Internet Explorer的双边距bug,而无需求助于条件样式表或使CSS无效的黑客。(X)HTML比CSS有更多的语义价值,因此CSS在语义上是否有效并不重要。在我看来,这是可以接受的,因为它解决了一个恼人的浏览器问题,而不会使代码失效

页面元素仍然有效吗

HTML意义上的“有效”,是的;HTML对CSS一无所知

但是,在浏览器中获得的渲染是CSS规范“未定义”的,因此它看起来可能与任何东西都类似。虽然您可以在针对某个特定浏览器(您知道该浏览器如何呈现这种情况)的CSS攻击中包含此类规则,但一般不应将其提供给浏览器。

来自:

当内联框包含流入块级别框时,内联框(及其在同一行框内的内联祖先)将围绕块级别框(以及任何连续或仅由可折叠空格和/或流出元素分隔的块级别同级)断开,将内联框拆分为两个框(即使任一侧为空),块级别框每侧各一个。中断前和中断后的行框被封闭在匿名块框中,块级别框成为这些匿名框的同级。当此类内联框受相对定位影响时,任何结果转换也会影响内联框中包含的块级别框

如果符合以下规则,此模型将适用于以下示例:

p{display:inline}
span{显示:块}
与此HTML文档一起使用:


被块打断的匿名文本

这是跨度前的匿名文本。 这是SPAN的内容。 这是跨度后的匿名文本。

p元素包含一个匿名文本块(C1),后面是一个块级元素,后面是另一个匿名文本块(C2)。生成的框将是一个表示正文的块框,包含C1周围的匿名块框、SPAN块框和C2周围的另一个匿名块框

匿名框的属性继承自封闭的非匿名框(例如,在标题“匿名块框”下的示例中,DIV的属性)。非继承属性有其初始值。例如,匿名框的字体继承自DIV,但边距为0

在导致生成匿名块框的元素上设置的属性仍然适用于该元素的框和内容。例如,如果在上述示例中在p元素上设置了边框,则边框将围绕C1(在行尾打开)和C2(在行首打开)绘制

一些用户代理以其他方式在包含块的内联线上实现了边框,例如,通过将这些嵌套块包装在“匿名线框”中由于CSS1和CSS2没有定义这种行为,所以只有CSS1和CSS2的用户代理可以实现这种替代模型,并且仍然声称符合CSS 2.1的这一部分。这不适用于本规范发布后开发的UAs


你要怎么做就怎么做。很明显,行为是在CSS中指定的,尽管它是否涵盖了所有情况,或者是在当今的浏览器中一致地实现还不清楚。

不,这不是一个错误的选择。我们可以根据需要使用。

如果你遵循了一个逻辑,并且你最终以这种方式实现它,这是正确的。工作事情并不是因为奇怪就“错”了。是的,这很不寻常,但它有帮助,也不是错误。这是故意的。HTML和CSS应该为你服务,而不是相反,所以永远不要听评论告诉你不要做d
<a href="#">
      <h1>Heading</h1>
      <p>Paragraph.</p>
</a>