我不懂HTML 5.验证员说:
iframe元素的marginwidth属性已过时。请改用CSS iframe元素的marginheight属性已过时。改用CSS。
无法在样式表中设置iframe的marginheight,marginwidth和frameborder属性。
他们为什么要我做一些不可能的事情?
要么放在规范中有效的东西,要么提出一个真正的替代品。他们似乎已弃用某些东西而他们的替代方案不起作用。
我在这里缺少什么?
答案 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-top
和margin-bottom
...对marginwidth
也是如此,使用margin-left
和margin-right
(或在margin
中一起指定)
至于frameborder
- 只需在CSS中设置iFrame的border
即可。
<iframe marginheight='10' marginwidth=20' frameborder='0'>
可以在HTML / CSS中完成:
<iframe>
iframe{
margin:10px 20px;
border:none;
}