基于JavaScript代碼實(shí)現(xiàn)隨機(jī)漂浮圖片廣告
在網(wǎng)上有很多這樣的代碼,不過(guò)未必符合W3C標(biāo)準(zhǔn),因?yàn)樵陬^部加上<!DOCTYPE html>類(lèi)似標(biāo)簽之后,漂浮效果就會(huì)失效,下面分享一個(gè)符合標(biāo)準(zhǔn)的漂浮代碼,使需要的朋友免去大量改造代碼的繁瑣。
代碼一:
代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>漂浮廣告代碼</title>
<style type="text/css">
#thediv
{
z-index:100;
position:absolute;
top:43px;
left:2px;
height:100px;
width:100px;
background-color:red;
}
</style>
<script type="text/javascript">
var xPos=300;
var yPos=200;
var step=1;
var delay=8;
var height=0;
var Hoffset=0;
var Woffset=0;
var yon=0;
var xon=0;
var pause=true;
var interval;
function changePos()
{
width=document.documentElement.clientWidth;
height=document.documentElement.clientHeight;
Hoffset=thediv.offsetHeight;
Woffset=thediv.offsetWidth;
thediv.style.left=(xPos+document.body.scrollLeft+document.documentElement.scrollLeft)+"px";
thediv.style.top=(yPos+document.body.scrollTop+document.documentElement.scrollTop)+"px";
if(yon)
{
yPos=yPos+step;
}
else
{
yPos=yPos-step;
}
if(yPos<0)
{
yon=1;
yPos=0;
}
if(yPos>=(height-Hoffset))
{
yon=0;
yPos=(height - Hoffset);
}
if(xon)
{
xPos=xPos + step;
}
else
{
xPos=xPos - step;
}
if(xPos < 0)
{
xon = 1;
xPos = 0;
}
if(xPos >= (width - Woffset))
{
xon = 0;
xPos = (width - Woffset);
}
}
function start()
{
thediv.visibility="visible";
interval=setInterval('changePos()',delay);
}
function pause_resume()
{
if(pause)
{
clearInterval(interval);
pause = false;
}
else
{
interval = setInterval(changePos,delay);
pause = true;
}
}
window.onload=function()
{
thediv.style.top=yPos;
start();
}
</script>
</head>
<body>
<div id="thediv"></div>
</body>
</html>
以上代碼實(shí)現(xiàn)了我們的要求,紅色div塊能夠能夠在網(wǎng)頁(yè)中隨機(jī)漂浮,并且兼容各個(gè)瀏覽器。代碼的實(shí)現(xiàn)過(guò)程這里就不多介紹了,如有任何問(wèn)題可以跟帖留言。
代碼二:JS隨機(jī)漂浮廣告代碼具體實(shí)例
代碼如下:
<!--隨機(jī)漂浮廣告開(kāi)始-->
<div id="float" style="position:absolute; z-index:3;(我建議大家把這里設(shè)為100,這樣浮動(dòng)圖就不會(huì)被遮住了) left: 512px; width: 83px; top: 9px; height: 53px;">
<img src="piaofu.gif" width="100" height="50"> </div>
<script type="text/javascript">
<!--隨機(jī)漂浮廣告 -->
var xPos=0,yPos=0;//x,y軸坐標(biāo)
var xon=0;//圖片在x軸移動(dòng)方向
var yon=0;//圖片在y軸移動(dòng)方向
var step=1; //移動(dòng)距離
var img=document.getElementByIdx_x("float");//圖片層
function floatP()
{
var width=document.body.clientWidth;//瀏覽器寬度
var height=document.body.clientHeight;//瀏覽器高度
var Hoffset=img.offsetHeight;//圖片高度
var Woffset=img.offsetWidth;//圖片寬度
img.style.left=xPos+document.body.scrollLeft;//圖片距離瀏覽器左側(cè)位置
img.style.top=yPos+document.body.scrollTop;//圖片距離瀏覽器頂端位置
if(yon==0){
yPos=yPos+step;//圖片在y軸方向上下移動(dòng)
}else{
yPos=yPos-step;
}
if(yPos<0){//飄到頂端,沿y軸向下移動(dòng)
yon=0;
yPos=0;
}
if(yPos>=(height-Hoffset)){//飄到低端,沿y軸向上移動(dòng)
yon=1;
yPos=(height-Hoffset);
}
if(xon==0){//x軸向右移動(dòng)
xPos=xPos+step;
}else{
xPos=xPos-step;//x軸向左移動(dòng)
}
if(xPos<0){//飄到左側(cè)時(shí)沿x軸向右移動(dòng)
xon=0;
xPos=0;
}
if(xPos>=(width-Woffset)){//飄到右側(cè)時(shí)沿x軸向左移動(dòng)
xon=1;
xPos=(width-Woffset);
}
setTimeout("floatP()",30);//定時(shí)調(diào)用。
}
window.onload=floatP();
</script>
代碼如下:
<script>
var x = 50,y = 60 //浮動(dòng)層的初始位置,分別對(duì)應(yīng)層的初始X坐標(biāo)和Y坐標(biāo)
var xin = true, yin = true //判斷層的X坐標(biāo)和Y坐標(biāo)是否在在控制范圍之內(nèi),xin為真是層向右移動(dòng),否則向左;yin為真是層向下移動(dòng),否則向上
var step = 1 //層移動(dòng)的步長(zhǎng),值越大移動(dòng)速度越快
var delay = 10 //層移動(dòng)的時(shí)間間隔,單位為毫秒,值越小移動(dòng)速度越快
var obj=document.getElementByIdx_x("float") //捕獲id為ad的層作為漂浮目標(biāo)
function floatAD() {
var L=T=0 //層移動(dòng)范圍的左邊界(L)和上邊界(T)坐標(biāo)
var R= document.body.clientWidth-obj.offsetWidth //層移動(dòng)的右邊界
var B = document.body.clientHeight-obj.offsetHeight //層移動(dòng)的下邊界
obj.style.left = x + document.body.scrollLeft //更新層的X坐標(biāo),實(shí)現(xiàn)X軸方向上的運(yùn)動(dòng);document.body.scrollLeft為文檔區(qū)域的滾動(dòng)條向右拉的距離,以保證在滾動(dòng)條右拉時(shí)層仍在可見(jiàn)范圍內(nèi)
obj.style.top = y + document.body.scrollTop //更新層的Y坐標(biāo),實(shí)現(xiàn)Y軸方向上的運(yùn)動(dòng);document.body.scrollTop為文檔區(qū)域的滾動(dòng)條向下拉的距離,以保證在滾動(dòng)條下拉時(shí)層仍在可見(jiàn)范圍內(nèi)
x = x + step*(xin?1:-1) //通過(guò)判斷層的范圍決定層在X軸上的運(yùn)動(dòng)方向
if (x < L) { xin = true; x = L} //層超出左邊界時(shí)的處理
if (x > R){ xin = false; x = R} //層超出右邊界時(shí)的處理
y = y + step*(yin?1:-1) //通過(guò)判斷層的范圍決定層在Y軸上的運(yùn)動(dòng)方向
if (y < T) { yin = true; y = T } //層超出上邊界時(shí)的處理
if (y > B) { yin = false; y = B } //層超出下邊界時(shí)的處理
}
var itl= setInterval("floatAD()", delay) //每delay秒執(zhí)行一次floatAD函數(shù)
obj.onmouseover=function(){clearInterval(itl)} //層在鼠標(biāo)移上時(shí)清除上面的間隔事件,實(shí)現(xiàn)層在的鼠標(biāo)移上時(shí)停止運(yùn)動(dòng)的效果
obj.onmouseout=function(){itl=setInterval("floatAD()", delay)} //層在鼠標(biāo)移開(kāi)時(shí)開(kāi)始間隔事件,實(shí)現(xiàn)層在的鼠標(biāo)移開(kāi)時(shí)繼續(xù)運(yùn)動(dòng)的效果
</script>
腳本之家友情提醒大家需要注意事項(xiàng):
在網(wǎng)頁(yè)中插入Flash和浮動(dòng)廣告,你會(huì)發(fā)現(xiàn)在浮動(dòng)廣告浮到Flash處時(shí)會(huì)在下面,我們?nèi)绾谓鉀Q這個(gè)問(wèn)題呢,其它很簡(jiǎn)單
在flash代碼的位置加入下面語(yǔ)句就可以了
<param name="wmode" value="opaque">
例:
如果下面是flash所在位置的代碼:
代碼如下:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="780" height="165"> <param name="movie" value="banner1.swf"> <param name="quality" value="high"> <param name="menu" value="false"> <param name="wmode" value="opaque"><!--主要是這句--> <embed src="banner1.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="780" height="165"></embed> </object>
相關(guān)文章
Javascript使用function創(chuàng)建類(lèi)的兩種方法(推薦)
下面小編就為大家?guī)?lái)一篇Javascript使用function創(chuàng)建類(lèi)的兩種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11
《JavaScript DOM 編程藝術(shù)》讀書(shū)筆記之JavaScript 語(yǔ)法
這篇文章主要介紹了《JavaScript DOM 編程藝術(shù)》讀書(shū)筆記之JavaScript 語(yǔ)法,需要的朋友可以參考下2015-01-01
javascript彈性運(yùn)動(dòng)效果簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了javascript彈性運(yùn)動(dòng)效果簡(jiǎn)單實(shí)現(xiàn)方法,實(shí)例分析了JavaScript實(shí)現(xiàn)彈性運(yùn)動(dòng)的原理,涉及JavaScript數(shù)學(xué)運(yùn)算與時(shí)間函數(shù)的相關(guān)使用技巧,需要的朋友可以參考下2016-01-01
JavaScript輸出所選擇起始與結(jié)束日期的方法
這篇文章主要介紹了JavaScript輸出所選擇起始與結(jié)束日期的方法,涉及javascript結(jié)合HTML5元素操作日期運(yùn)算的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
JS組件Form表單驗(yàn)證神器BootstrapValidator
做Web開(kāi)發(fā)的我們,表單驗(yàn)證是再常見(jiàn)不過(guò)的需求了。友好的錯(cuò)誤提示能增加用戶(hù)體驗(yàn)。今天就來(lái)看看bootstrapvalidator如何使用,感興趣的小伙伴們可以參考一下2016-01-01
微信小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)傳遞參數(shù)(實(shí)體,對(duì)象)
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)頁(yè)面跳轉(zhuǎn)傳遞參數(shù)(實(shí)體,對(duì)象),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08

