問題描述
我正在尋找一些替代方法:
<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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。