在網頁及 JavaScript 剛發展的時期,常常看到網頁中都飄浮的五顏六色的廣告圖片。其實這有幾種做法,像是毫無目的的飄來飄去,或是者跟著捲軸滾到那就飄到那。現在還能在大陸的一些網站中看到這樣的內容。
筆者這邊就針對網頁捲軸滾動的方式來做介紹:
檢視原始碼 HTML
1 2 3 4 5 6 7 8 9 | <body> <div class="bigDiv">我是一個很長的區塊</div> <div id="abgne_float_ad" > <a href="http://www.flycan.com.tw/course/course_javascript.php"> <img src="course_javascript.gif" title="JavaScript & CSS 互動程式入門班" /> </a> </div> </body> |
為了模擬出很長很的的網頁,因此筆者就把 div.bigDiv 的高度設的很大:
檢視原始碼 CSS
1 2 3 4 5 6 7 8 9 10 | #abgne_float_ad { display: none; position: absolute; } #abgne_float_ad img { border: none; } div.bigDiv { height: 3000px; } |
既然廣告要能浮動的話,它的 position 就得要設成 absolute 才能比較方便。接著筆者再針對網頁捲軸的時的 scroll 及視窗大小改變時的 resize 事件中來控制廣告圖片的位置:
檢視原始碼 JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | // 當網頁載入完 $(window).load(function(){ var $win = $(window), $ad = $('#abgne_float_ad').css('opacity', 0).show(), // 讓廣告區塊變透明且顯示出來 _width = $ad.width(), _height = $ad.height(), _diffY = 20, _diffX = 20, // 距離右及下方邊距 _moveSpeed = 800; // 移動的速度 // 先把 #abgne_float_ad 移動到定點 $ad.css({ top: $(document).height(), left: $win.width() - _width - _diffX, opacity: 1 }); // 幫網頁加上 scroll 及 resize 事件 $win.bind('scroll resize', function(){ var $this = $(this); // 控制 #abgne_float_ad 的移動 $ad.stop().animate({ top: $this.scrollTop() + $this.height() - _height - _diffY, left: $this.scrollLeft() + $this.width() - _width - _diffX }, _moveSpeed); }).scroll(); // 觸發一次 scroll() }); |
為了避免廣告圖片太大還沒載完時會取不到寬高,因此筆者這邊是把整個動作延遲到當網頁都載入完時才開始動作。且如果不使用 animate() 來變更位置的話,整個廣告移動會變的很彆扭的唷。若沒問題的話~只要簡單的語法就能做出一個跟屁蟲的廣告囉:
各位也能在瀏覽時試著去縮放瀏覽器的視窗大小,相信各位會看到浮動廣告的變化的。
另外我們也能在廣告旁邊加上個可以控制廣告關閉的鈕,讓使用者可以選擇要不要看到這跟屁蟲廣告。先在 #abgne_float_ad 中加入關閉的項目:
檢視原始碼 HTML
1 2 3 4 5 6 7 8 9 10 | <body> <div class="bigDiv">我是一個很長的區塊</div> <div id="abgne_float_ad" > <span class="abgne_close_ad">關閉廣告 [X]</span> <a href="http://www.flycan.com.tw/course/course_javascript.php"> <img src="course_javascript.gif" title="JavaScript & CSS 互動程式入門班" /> </a> </div> </body> |
接著用 CSS 稍微設定樣式:
檢視原始碼 CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #abgne_float_ad { display: none; position: absolute; } #abgne_float_ad .abgne_close_ad { display: block; text-align: right; cursor: pointer; font-size: 12px; } #abgne_float_ad a img { border: none; } div.bigDiv { height: 3000px; } |
再來就是當按下關閉鈕時,只要把整個廣告區塊隱藏起來就可以囉:
檢視原始碼 JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | // 當網頁載入完 $(window).load(function(){ var $win = $(window), $ad = $('#abgne_float_ad').css('opacity', 0).show(), // 讓廣告區塊變透明且顯示出來 _width = $ad.width(), _height = $ad.height(), _diffY = 20, _diffX = 20, // 距離右及下方邊距 _moveSpeed = 800; // 移動的速度 // 先把 #abgne_float_ad 移動到定點 $ad.css({ top: $(document).height(), left: $win.width() - _width - _diffX, opacity: 1 }); // 幫網頁加上 scroll 及 resize 事件 $win.bind('scroll resize', function(){ var $this = $(this); // 控制 #abgne_float_ad 的移動 $ad.stop().animate({ top: $this.scrollTop() + $this.height() - _height - _diffY, left: $this.scrollLeft() + $this.width() - _width - _diffX }, _moveSpeed); }).scroll(); // 觸發一次 scroll() // 關閉廣告 $('#abgne_float_ad .abgne_close_ad').click(function(){ $ad.hide(); }); }); |
多了那個鈕就能讓使用者自行決定看不看浮動廣告囉!啥~要記錄使用者的選擇來決定下次進來要不要顯示廣告?這就要請各位試著用 Cookie 來實做囉。
Ext JS 版:
老師
請問一下
如果在版面上弄個slideDown之類的效果
點下去會把版面撐開
再用slideUp收回的話
浮動的廣告會很慢很慢才跑回定位
這個問題有辦法解嗎??
想請教一下,這邊有將廣告代碼用成js的教學嗎?
因為我的網頁全都是htm 檔,因此廣告代碼都要一頁頁貼上
不曉得能不能把類似 GOOGLE 廣告代碼貼上就會顯示,直接修改JS檔,不用一頁頁去看。
基本上是不行的
請問一下,移動視窗有右上,右下,左上,那左下的程式碼有嘛?我程式語法功力近乎o,可以請男丁大大放上左下的程式語法嘛?有關閉視窗[X]的那種。多謝。
此外,您的語法
我是一個很長的區塊 <=====有放錯位置嘛?
關閉廣告 [X]
最後一個問題
如果我插入php繫節的參數
可以使用嘛?
有些程式語法被遮蔽了
左上就是 left 為 0, top 為 0
左下就是 left 為 0, top 就用範例中的語法
廣告內容用 php 程式加入是沒問題的, 就是只要是正確的語法就可以
請問一下如何改變浮動視窗的大小,
我改div的CSS 高跟寬都沒反應耶~!
您好 想請教關閉廣告的開關
是否可以讓他再次打開? 除了按 f5 重整外@@
現在是因為關閉鈕跟整個廣告區塊是在一起,所以一但關閉後就要看不到那個按鈕了
如果你把按鈕做在其它地方會是外面時,可以使用像是
來切換控制它!
老師請教一下,可以讓滑動廣告置於左側停留於畫面中間嗎? 該如何設定?
想請問一下我置入後 可以使用 但是會被BANNER擋在後面 該怎麼辦