为什么HTML5无法验证,但也没有给出替代方案?

时间:2014-08-14 14:56:18

标签: html css html5 validation iframe

我不懂HTML 5.验证员说:

  

iframe元素的marginwidth属性已过时。请改用CSS   iframe元素的marginheight属性已过时。改用CSS。

但根据this accepted answer

  

无法在样式表中设置iframe的marginheight,marginwidth和frameborder属性。

他们为什么要我做一些不可能的事情?

要么放在规范中有效的东西,要么提出一个真正的替代品。他们似乎已弃用某些东西而他们的替代方案不起作用。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:3)

HTML5规范确实描述了how the marginheight and marginwidth attributes work.它的含义是:

  

对于下表中的每个属性,给定一个body元素,第一个   存在的属性映射到正文上的像素长度属性   元件。如果找不到属性的任何属性,或者如果找不到属性的属性   找不到的属性值无法成功解析,   那么预期该属性将使用默认值8px   代替。

Property        Source
'margin-top'    body element's marginheight attribute
                The body element's container frame element's marginheight attribute
                body element's topmargin attribute
'margin-right'  body element's marginwidth attribute
                The body element's container frame element's marginwidth attribute
                body element's rightmargin attribute
'margin-bottom' body element's marginheight attribute
                The body element's container frame element's marginheight attribute
                body element's bottommargin attribute
'margin-left'   body element's marginwidth attribute
                The body element's container frame element's marginwidth attribute
                body element's leftmargin attribute
     

如果正文元素的文档浏览上下文是嵌套浏览   上下文,以及嵌套浏览的浏览上下文容器   context是一个frame或iframe元素,然后是容器框架元素   body元素是frame或iframe元素。否则,那里   不是容器框架元素。

因此,要实现相同的效果,必须在包含页面的body元素上设置CSS边距值,而不是iframe元素的CSS边距值。

然后该规范继续解释为什么在浏览器中可能不支持(甚至不应该)支持marginwidth和marginheight:

  

警告!上述要求意味着页面可以使用例如iframe更改其他页面的边距(包括来自其他页面的页边距)。这可能存在安全风险,因为在某些情况下,它可能允许攻击设计页面呈现的情况不是作者的意图,可能是出于网络钓鱼或误导用户的目的。

答案 1 :(得分:0)

我倾向于说你应该始终对W3C保持一些怀疑的信息。

如果你想把它归结为文字 - 它们是正确的 - CSS中没有直接等价物,但CSS确实提供了现有的替代品(这就是为什么这两个属性都不受支持,多余的。)

marginheight是上边距和下边距,因此只需使用margin-topmargin-bottom ...对marginwidth也是如此,使用margin-leftmargin-right(或在margin中一起指定)

至于frameborder - 只需在CSS中设置iFrame的border即可。

<iframe marginheight='10' marginwidth=20' frameborder='0'>

可以在HTML / CSS中完成:

<iframe>

iframe{
  margin:10px 20px;
  border:none;
}