iframe是什么意思,iframe詳解用法標(biāo)簽實(shí)例
只要接觸網(wǎng)站的站長,就離不開iframe,因?yàn)閕frame框架能讓網(wǎng)站更規(guī)范,更漂亮,并且iframe框架可以讓我們快速設(shè)計(jì)網(wǎng)站,那么很多新手站長還是對iframe框架不是很了解,我們動(dòng)天數(shù)據(jù)下面來幫助大家來說說這些。iframe是什么,iframe用法以及詳解。
Iframes 阻塞頁面加載
及時(shí)觸發(fā) window 的 onload 事件是非常重要的。onload 事件觸發(fā)使瀏覽器的 “忙” 指示器停止,告訴用戶當(dāng)前網(wǎng)頁已經(jīng)加載完畢。當(dāng) onload 事件加載延遲后,它給用戶的感覺就是這個(gè)網(wǎng)頁非常慢。
window 的 onload 事件需要在所有 iframe 加載完畢后(包含里面的元素)才會觸發(fā)。在 Safari 和 Chrome 里,通過 JavaScript 動(dòng)態(tài)設(shè)置 iframe 的 SRC 可以避免這種阻塞情況。
唯一的連接池
瀏覽器只能開少量的連接到web服務(wù)器。比較老的瀏覽器,包含 Internet Explorer 6 & 7 和 Firefox 2,只能對一個(gè)域名(hostname)同時(shí)打開兩個(gè)連接。這個(gè)數(shù)量的限制在新版本的瀏覽器中有所提高。Safari 3+ 和 Opera 9+ 可同時(shí)對一個(gè)域名打開 4 個(gè)連接,Chrome 1+, IE 8 以及 Firefox 3 可以同時(shí)打開 6 個(gè)。你可以通過這篇文章查看具體的數(shù)據(jù)表:Roundup on Parallel Connections.
有人可能希望 iframe 會有自己獨(dú)立的連接池,但不是這樣的。絕大部分瀏覽器,主頁面和其中的 iframe 是共享這些連接的。這意味著 iframe 在加載資源時(shí)可能用光了所有的可用連接,從而阻塞了主頁面資源的加載。如果 iframe 中的內(nèi)容比主頁面的內(nèi)容更重要,這當(dāng)然是很好的。但通常情況下,iframe 里的內(nèi)容是沒有主頁面的內(nèi)容重要的。這時(shí) iframe 中用光了可用的連接就是不值得的了。一種解決辦法是,在主頁面上重要的元素加載完畢后,再動(dòng)態(tài)設(shè)置 iframe 的 SRC。
美國前 10 大網(wǎng)站都使用了 iframe。大部分情況下,他們用它來加載廣告。這是可以理解的,也是一種符合邏輯的解決方案,用一種簡單的辦法來加載廣告服務(wù)。但請記住,iframe 會給你的頁面性能帶來沖擊。只要可能,不要使用 iframe。當(dāng)確實(shí)需要時(shí),謹(jǐn)慎的使用他們。
iframe用法
第一,什么是iframe呢?
Iframe和FRAME的區(qū)別分析_HTML/Xhtml_網(wǎng)頁制作_腳本之家
提起Iframe,可能你早已將之扔到“被遺忘的角落”了,不過,說起其兄弟Frame就不會陌生了。Frame標(biāo)記即幀標(biāo)記,我們所說的多幀結(jié)構(gòu)就是在一個(gè)瀏覽器窗口中顯示多個(gè)HTML文件?,F(xiàn)在,我們遇到一種很現(xiàn)實(shí)的情況:如有一個(gè)教程,是一節(jié)一節(jié)地上,每頁末尾做一個(gè)“上一節(jié)“、“下一節(jié)“的鏈接,除了每節(jié)教程內(nèi)容不同之外,頁面其它部分內(nèi)容都是相同的,如果一頁一頁地做笨頁面,這似乎太讓人厭煩了,這時(shí)突發(fā)奇想,如果有一種方法讓頁面其它地方不變,只將教程做成一頁一頁的內(nèi)容頁,不含其它內(nèi)容,在點(diǎn)擊上下翻頁鏈接時(shí),只改變教程內(nèi)容部分,其它保持不變,這樣,一是省時(shí),另則以后如教程有個(gè)三長兩短的變動(dòng),也很方便,不致于牽一發(fā)而動(dòng)全軍了;更重要的是將那些廣告Banner、欄目列表、導(dǎo)航等幾乎每頁的都有的東西只下載一次后就不再下載了。
Iframe標(biāo)記,又叫浮動(dòng)幀標(biāo)記,你可以用它將一個(gè)HTML文檔嵌入在一個(gè)HTML中顯示。它不同于Frame標(biāo)記最大的特征即這個(gè)標(biāo)記所引用的HTML文件不是與另外的HTML文件相互獨(dú)立顯示,而是可以直接嵌入在一個(gè)HTML文件中,與這個(gè)HTML文件內(nèi)容相互融合,成為一個(gè)整體,另外,還可以多次在一個(gè)頁面內(nèi)顯示同一內(nèi)容,而不必重復(fù)寫內(nèi)容,一個(gè)形象的比喻即“畫中畫“電視。
現(xiàn)在我們談一下Iframe標(biāo)記的使用。
Iframe標(biāo)記的使用格式是:
<Iframe src="URL" width="x" height="x" scrolling="[OPTION]" frameborder="x"></iframe>
src:文件的路徑,既可是HTML文件,也可以是文本、ASP等;
width、height:"畫中畫"區(qū)域的寬與高;
iframe在布局,無刷新方面都有極其中重要,不可替代的地位。雖然現(xiàn)在流行DIV布局,但是有時(shí)還得用iframe布局;雖然2005年流行使用AJAX進(jìn)行無刷新,但是在特效情況下還得使用iframe;在flash動(dòng)畫內(nèi)嵌html時(shí),iframe更是必不可少。
iframe即內(nèi)聯(lián)框架。對于外圍的頁面,iframe是一個(gè)普通的元素,對于iframe里面的內(nèi)容,又是一個(gè)五臟俱全的頁面。iframe的寫法是:
可以看出,iframe毫無神秘可言,就是一個(gè)普通的元素,與span,div一樣。那么,iframe是內(nèi)聯(lián)元素還是塊元素?第一,iframe可以設(shè)置width,height并且有效。第二,iframe像普通文本一樣不會換行。
iframe是inline-block元素。
iframe的基本屬性與其他元素一樣,有樣式的,也有特有的。其中,關(guān)于樣式的完全可以使用css設(shè)置。有些屬性不建議使用,也沒有必要使用,下面列出iframe的常用屬性:
1.frameborder:是否顯示邊框,yes,no。
2.height:框架作為一個(gè)普通元素的高度,建議在使用css設(shè)置。
3.width:框架作為一個(gè)普通元素的寬度,建議使用css設(shè)置。
4.name:框架的名稱,window.frame[name]時(shí)專用的屬性。
5.scrolling:框架的是否滾動(dòng)。yes,no,auto。
6.src:內(nèi)框架的地址,可以使頁面地址,也可以是圖片的地址。
第二:iframe的用法和詳解,下面一起在來看下:
iframeiframe標(biāo)簽用法詳解(屬性、透明、自適應(yīng)高度)_HTML/Xhtml_網(wǎng)頁制作_腳本之家
1、iframe 定義和用法
iframe 元素會創(chuàng)建包含另外一個(gè)文檔的內(nèi)聯(lián)框架(即行內(nèi)框架)。
HTML 與 XHTML 之間的差異
在 HTML 4.1 Strict DTD 和 XHTML 1.0 Strict DTD 中,不支持 iframe 元素。
提示和注釋:
提示:您可以把需要的文本放置在 <iframe> 和 </iframe> 之間,這樣就可以應(yīng)對無法理解 iframe 的瀏覽器。
iframe標(biāo)簽是成對出現(xiàn)的,以<iframe>開始,</iframe>結(jié)束
iframe標(biāo)簽內(nèi)的內(nèi)容可以做為瀏覽器不支持iframe標(biāo)簽時(shí)顯示
iframe標(biāo)簽用法詳解(屬性、透明、自適應(yīng)高度)_HTML/Xhtml_網(wǎng)頁制作_腳本之家
iframe是迫不得已才使用的,因?yàn)槭褂胕frame會帶來較多的問題,而有的瀏覽器可以設(shè)置將iframe當(dāng)作廣告屏蔽。
在最近的一個(gè)工作內(nèi)容中使用了iframe,開始遇到的問題是iframe高度自適應(yīng)的問題,這問題在口碑網(wǎng)ued團(tuán)隊(duì)博客中找到了解決辦法,后來更遇到一個(gè)iframe透明的問題
通常 iframe底色會是白色,在不同瀏覽器下可能會有不同的顏色
如果主頁面有一個(gè)整體的背景色或者背景圖片的時(shí)候
iframe區(qū)域便會出現(xiàn)一個(gè)白色塊,與主體頁面不協(xié)調(diào),這就需要iframe透明
通過google搜索iframe透明找到了解決辦法
iframe的自適應(yīng)高寬是個(gè)不小的難題。所謂的iframe高度自適應(yīng),一般就是要嵌入的iframe符合以下要求:
1.內(nèi)嵌的iframe,要適應(yīng)父頁面,當(dāng)需要滾動(dòng)條,滾動(dòng)條顯示,不需要時(shí),滾動(dòng)條不顯示。
2.當(dāng)父頁面窗口發(fā)生變化時(shí),iframe也會變化。
3.當(dāng)iframe的內(nèi)容變化時(shí),其滾動(dòng)條也要適應(yīng)。
首先,不要盲目的去關(guān)注這個(gè)命題,而應(yīng)該理解,哪些東西影響了iframe的高寬,iframe在頁面中如何表現(xiàn)。如果對頁面的高度,寬度不不夠了解,經(jīng)常糊涂,請看筆者的另兩篇文章,頁面的高度發(fā)微,頁面的寬度發(fā)微。要是做到高寬自適應(yīng),無非是在父頁面的窗口大小,文檔大小,iframe元素的高寬,子頁面的窗口大小,文檔大小,等方面下功夫。首先,父頁面是我們編寫的,窗口大小由用戶即瀏覽器決定,文檔大小由頁面內(nèi)容決定,而子頁面的文檔大小,我們也許不能決定,如果是跨越的。幸好,iframe的自適應(yīng)高寬無需使用文檔大小。而只需要窗口大小和iframe元素大小,其中窗口大小是只讀的,所以只需要關(guān)心iframe元素大小即可。
一、Iframe標(biāo)記的使用
Iframe標(biāo)記,又叫浮動(dòng)幀標(biāo)記,你可以用它將一個(gè)HTML文檔嵌入在一個(gè)HTML中顯示。
它不同于Frame標(biāo)記最大的特征即這個(gè)標(biāo)記所引用的HTML文件不是與另外的HTML文件
相互獨(dú)立顯示,而是可以直接嵌入在一個(gè)HTML文件中,與這個(gè)HTML文件內(nèi)容相互融合,
成為一個(gè)整體,另外,還可以多次在一個(gè)頁面內(nèi)顯示同一內(nèi)容,而不必重復(fù)寫內(nèi)容,
一個(gè)形象的比喻即“畫中畫“電視。
現(xiàn)在我們談一下Iframe標(biāo)記的使用。
Iframe標(biāo)記的使用格式是:
<Iframe src="URL" width="x" height="x" scrolling="[OPTION]" frameborder="x"></iframe>
src:文件的路徑,既可是HTML文件,也可以是文本、ASP等;
width、height:"畫中畫"區(qū)域的寬與高;
scrolling:當(dāng)SRC的指定的HTML文件在指定的區(qū)域不顯不完時(shí),滾動(dòng)選項(xiàng),
如果設(shè)置為NO,則不出現(xiàn)滾動(dòng)條;如為Auto:則自動(dòng)出現(xiàn)滾動(dòng)條;如為Yes,則顯示;
FrameBorder:區(qū)域邊框的寬度,為了讓“畫中畫“與鄰近的內(nèi)容相融合,常設(shè)置為0。
比如:
<Iframe src="http://www.330518.com/" width="250" height="200" scrolling="no" frameborder="0"></iframe>
二、父窗體與浮動(dòng)幀之間的相互控制
在腳本語言與對象層次中,包含Iframe的窗口我們稱之為父窗體,而浮動(dòng)幀則稱為子窗體,
弄清這兩者的關(guān)系很重要,因?yàn)橐诟复绑w中訪問子窗體或相反都必須清楚對象層次,才能通過程序來訪問并控制窗體。
1、在父窗體中訪問并控制子窗體中的對象
在父窗體中,Iframe即子窗體是document對象的一個(gè)子對象,可以直接在腳本中訪問子窗體中的對象。
現(xiàn)在就有一個(gè)問題,即,我們怎樣來控制這個(gè)Iframe,這里需要講一下Iframe對象。
當(dāng)我們給這個(gè)標(biāo)記設(shè)置了ID 屬性后,就可通過文檔對象模型DOM對Iframe所含的HTML進(jìn)行一系列控制。
比如在example.htm里嵌入test.htm文件,并控制test.htm里一些標(biāo)記對象:
<Iframe src="test.htm" id="test" width="250" height="200" scrolling="no" frameborder="0"></iframe>
test.htm文件代碼為:
<html>
<body>
<h1 id="myH1">hello,my boy</h1>
</body>
</html>
如我們要改變ID號為myH1的H1標(biāo)記里的文字為hello,my dear,則可用:
document.myH1.innerText="hello,my dear"(其中,document可省)
在example.htm文件中,Iframe標(biāo)記對象所指的子窗體與一般的DHTML對象模型一致,對對象訪問控制方式一樣,就不再贅述。
2、在子窗體中訪問并控制父窗體中對象
在子窗體中我們可以通過其parent即父(雙親)對象來訪問父窗口中的對象。
如example.htm:
<html>
<body >
<Iframe name="tt" src="frame1.htm" width="250" height="200" scrolling="no" frameborder="0"></iframe>
<h1 id="myH2">hello,my wife</h1>
</body>
</html>
如果要在frame1.htm中訪問ID號為myH2中的標(biāo)題文字并將之改為"hello,my friend",
我們就可以這樣寫:parent.myH2.innerText="hello,my friend"
這里parent對象就代表當(dāng)前窗體(example.htm所在窗體),要在子窗體中訪問父窗體中的對象,無一例外都通過parent對象來進(jìn)行。
Iframe雖然內(nèi)嵌在另一個(gè)HTML文件中,但它保持相對的獨(dú)立,是一個(gè)“獨(dú)立王國“喲,在單一HTML中的特性同樣適用于浮動(dòng)幀中。
試想一下,通過Iframe標(biāo)記,我們可將那些不變的內(nèi)容以Iframe來表示,這樣,不必重復(fù)寫相同的內(nèi)容,
這有點(diǎn)象程序設(shè)計(jì)中的過程或函數(shù),減省了多少繁瑣的手工勞動(dòng)!另外,至關(guān)重要的是,它使頁面的修改更為可行,
因?yàn)椋槐匾驗(yàn)榘媸降恼{(diào)整而修改每個(gè)頁面,你只需修改一個(gè)父窗體的版式即可了。
有一點(diǎn)要注意,Nestscape瀏覽器不支持Iframe標(biāo)記,但在時(shí)下IE的天下,這似乎也無大礙,廣泛采用Iframe標(biāo)記,
既為自己(網(wǎng)站)著了想,又為網(wǎng)友節(jié)省了網(wǎng)費(fèi),何樂而不為?
窗口與浮動(dòng)幀之間的相互控制
在腳本語言與對象層次中,包含Iframe的窗口我們稱之為父窗體,而浮動(dòng)幀則稱為子窗體,弄清這兩者的關(guān)系很重要,因?yàn)橐诟复绑w中訪問子窗體或相反都必須清楚對象層次,才能通過程序來訪問并控制窗體。
1、在父窗體中訪問并控制子窗體中的對象
在父窗體中,Iframe即子窗體是document對象的一個(gè)子對象,可以直接在腳本中訪問子窗體中的對象。
現(xiàn)在就有一個(gè)問題,即,我們怎樣來控制這個(gè)Iframe,這里需要講一下Iframe對象。當(dāng)我們給這個(gè)標(biāo)記設(shè)置了ID 屬性后,就可通過文檔對象模型DOM對Iframe所含的HTML進(jìn)行一系列控制。
比如在example.htm里嵌入test.htm文件,并控制test.htm里一些標(biāo)記對象:
<Iframe src="test.htm" id="test" width="250" height="200" scrolling="no" frameborder="0"></iframe>
test.htm文件代碼為:
<html>
<body>
<h1 id="myH1">hello,my boy</h1>
</body>
</html>
如我們要改變ID號為myH1的H1標(biāo)記里的文字為hello,my dear,則可用:
document.myH1.innerText="hello,my dear"(其中,document可省)
在example.htm文件中,Iframe標(biāo)記對象所指的子窗體與一般的DHTML對象模型一致,對對象訪問控制方式一樣,就不再贅述。
2、在子窗體中訪問并控制父窗體中對象
在子窗體中我們可以通過其parent即父(雙親)對象來訪問父窗口中的對象。
如example.htm:
<html>
<body onclick="alert(tt.myH1.innerHTML)">
<Iframe name="tt" src="frame1.htm" width="250" height="200" scrolling="no" frameborder="0"></iframe>
<h1 id="myH2">hello,my wife</h1>
</body>
</html>
如果要在frame1.htm中訪問ID號為myH2中的標(biāo)題文字并將之改為"hello,my friend",我們就可以這樣寫:
parent.myH2.innerText="hello,my friend"
這里parent對象就代表當(dāng)前窗體(example.htm所在窗體),要在子窗體中訪問父窗體中的對象,無一例外都通過parent對象來進(jìn)行。
Iframe雖然內(nèi)嵌在另一個(gè)HTML文件中,但它保持相對的獨(dú)立,是一個(gè)“獨(dú)立王國“喲,在單一HTML中的特性同樣適用于浮動(dòng)幀中。
試想一下,通過Iframe標(biāo)記,我們可將那些不變的內(nèi)容以Iframe來表示,這樣,不必重復(fù)寫相同的內(nèi)容,這有點(diǎn)象程序設(shè)計(jì)中的過程或函數(shù),減省了 多少繁瑣的手工勞動(dòng)!另外,至關(guān)重要的是,它使頁面的修改更為可行,因?yàn)椋槐匾驗(yàn)榘媸降恼{(diào)整而修改每個(gè)頁面,你只需修改一個(gè)父窗體的版式即可了。
要注意的是,Nestscape6.0之前版本不支持Iframe標(biāo)記。
例子:
1<iframe src="頁面" width="寬度" height="高度" align="排列可以是left或right,center" scrolling="是否有滾動(dòng)條可以填no或yes"></iframe>
<IFRAME frameBorder=0 frameSpacing=0 height=25 marginHeight=0 marginWidth=0 scrolling=no name=main src="bgm/bgm.html" width=300></IFRAME>
2用了iframe后 發(fā)現(xiàn)滾動(dòng)條不漂亮 想用2個(gè)圖片來代替↑↓
應(yīng)該怎么實(shí)現(xiàn)呢?
回答:
用下列代碼替換網(wǎng)頁的<title>..</title>
<SCRIPT LANGUAGE="javascript">
function scroll(n)
{temp=n;
Out1.scrollTop=Out1.scrollTop+temp;
if (temp==0) return;
setTimeout("scroll(temp)",80);
}
</SCRIPT>
<TABLE WIDTH="330">
<TR>
<TD WIDTH="304" VALIGN="TOP" ROWSPAN="2" >
<DIV ID=Out1 STYLE="width:100%; height:100;overflow: hidden ;border-style:dashed;border-width: 1px,1px,1px,1px;">
文字<BR> 文字<BR>
文字<BR>
文字<BR>
文字
<BR>
<BR>
</DIV>
</TD>
< TD WIDTH="14" VALIGN="TOP"><IMG SRC="photo/up0605.gif" WIDTH="14" HEIGHT ="20" onmouseover="scroll(-1)" onmouseout="scroll(0)" onmousedown="scroll (-3)" BORDER="0" ALT="按下鼠標(biāo)速度會更快!"></TD>
</TR>
<TR>
< TD WIDTH="14" VALIGN="BOTTOM"><IMG SRC="photo/down0605.gif" onmouseover ="scroll(1)" onmouseout="scroll(0)" onmousedown="scroll(3)" BORDER="0" WIDTH ="15" HEIGHT="21" ALT="按下鼠標(biāo)速度會更快!"></TD>
</TR>
</TABLE>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
下面這段代碼可以實(shí)現(xiàn)IFrame自適應(yīng)高度,即隨著頁面的長度,自動(dòng)適應(yīng)以免除頁面和IFrame同時(shí)出現(xiàn)滾動(dòng)條。
源代碼如下
<script type="text/javascript">
//** iframe自動(dòng)適應(yīng)頁面 **//
//輸入你希望根據(jù)頁面高度自動(dòng)調(diào)整高度的iframe的名稱的列表
//用逗號把每個(gè)iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一個(gè)窗體,則不用逗號。
//定義iframe的ID
var iframeids=["test"]
//如果用戶的瀏覽器不支持iframe是否將iframe隱藏 yes 表示隱藏,no表示不隱藏
var iframehide="yes"
function dyniframesize()
{
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++)
{
if (document.getElementById)
{
//自動(dòng)調(diào)整iframe高度
dyniframe[dyniframe.length] = document.getElementById(iframeids);
if (dyniframe && !window.opera)
{
dyniframe.style.display="block"
if (dyniframe.contentDocument && dyniframe.contentDocument.body.offsetHeight) //如果用戶的瀏覽器是NetScape
dyniframe.height = dyniframe.contentDocument.body.offsetHeight;
else if (dyniframe.Document && dyniframe.Document.body.scrollHeight) //如果用戶的瀏覽器是IE
dyniframe.height = dyniframe.Document.body.scrollHeight;
}
}
//根據(jù)設(shè)定的參數(shù)來處理不支持iframe的瀏覽器的顯示問題
if ((document.all || document.getElementById) && iframehide=="no")
{
var tempobj=document.all? document.all[iframeids] : document.getElementById(iframeids)
tempobj.style.display="block"
}
}
}
0 Comments.