问题描述
我正在寻找一些替代方法:
<iframe transparency=true ...
当我做 W3C 验证时,我得到错误:
Column 31: there is no attribute "allowtransparency"
如果使用这个 CSS,
.iframe-trans-fix{
opacity: 0;
filter:alpha(opacity=0);
}
对于上面的代码段,我得到一个空白的 iframe 。
最佳解决思路
虽然 W3C 的 HTML 规范没有定义它,但是它有一个 allowTransparency 属性,所有现代浏览器 (和 Internet Explorer) 都支持它。正如 HTML5 教过我们的,车应该在马之前。
假设你的主页上有这个 HTML,index.html:
<html>
<body>
<iframe src="source.html"
allowTransparency="true"
style="background-color:lightgreen;"
width="400" height="200">
</iframe>
</body>
</html>
你的 source.html 看起来像这样:
<html>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin gravida, magna
id bibendum sollicitudin, tellus tortor consequat enim, et mollis mauris
augue et dui. </p>
</body>
</html>
当您在浏览器中打开主页面 (index.html) 时,您将在 iframe 中看到 source.html 中的文本,但它将具有浅绿色背景。
(在 Mac OS X 和 Internet Explorer 8 上使用 Safari,Firefox 和 Chrome 测试,Windows XP 上的 Chrome)
编辑:关键是:源页面不能设置自己的背景。如果是,它会忽略透明背景。
次佳解决思路
我不知道你在这里做什么,但这应该是你正在寻找的:
iframe {
background-color: transparent;
}
这当然是假设你想要 iframe
的背景是透明的。
第三种解决思路
有一种方法可以使用 jQuery,如果你已经包括了 jQuery 文件 –
<!--[if lt IE 9]><script> $(".classname").attr("allowTransparency", "true"); </script><![endif]-->
将.classname 更改为您的 iframe 的名称,或者如果没有,请将其更改为。 (从 iframe 中取出属性) 在 iframe 关闭标记之后,将它放在 IE9 之前的浏览器中添加所需的 allowTransparency 标签。因为它是在 IE 条件语句内,它不会被 W3C 验证器读取。它还消除了跨浏览器兼容性和内容隐藏问题,添加了所有已经提到的 CSS,如果您仍然使用最新的 jQuery 版本。 allowTransparency 属性是以明确定义的目的创建的,因此当您只需静默插入时,就无需尝试使用 CSS 重新创建它。希望这有助于某人!
(此方法假定您已经有 iframe {background-color:transparent}
,它不适用于较旧的 IE 版本)
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。