Home » jQuery 應用

[jQ]用 jQuery 做廣告 – 網頁捲軸滾動式廣告

範例 1
範例 2
範例 3
沒錯!只要 600 元就能獲得我們團隊完整的協助,讓效果能迅速的整合到您的網站,並保證瀏覽器的相容性。
立刻申請!

在網頁及 JavaScript 剛發展的時期,常常看到網頁中都飄浮的五顏六色的廣告圖片。其實這有幾種做法,像是毫無目的的飄來飄去,或是者跟著捲軸滾到那就飄到那。現在還能在大陸的一些網站中看到這樣的內容。



筆者這邊就針對網頁捲軸滾動的方式來做介紹:

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 的高度設的很大:

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 中加入關閉的項目:

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 稍微設定樣式:

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 來實做囉。

範例 1 範例 2 範例 3 範例 4 範例 5

檔案描述
基本的範例檔案(免空) 開始下載
基本的範例檔案 會員限定
到底部時停在底部區塊上方 會員限定

Ext JS 版:

範例 1 範例 2 範例 4

70 筆針對 [jQ]用 jQuery 做廣告 – 網頁捲軸滾動式廣告 的迴響

  1. 老師
    請問一下
    如果在版面上弄個slideDown之類的效果
    點下去會把版面撐開
    再用slideUp收回的話
    浮動的廣告會很慢很慢才跑回定位
    這個問題有辦法解嗎??

  2. 想請教一下,這邊有將廣告代碼用成js的教學嗎?
    因為我的網頁全都是htm 檔,因此廣告代碼都要一頁頁貼上

    不曉得能不能把類似 GOOGLE 廣告代碼貼上就會顯示,直接修改JS檔,不用一頁頁去看。

  3. 請問一下,移動視窗有右上,右下,左上,那左下的程式碼有嘛?我程式語法功力近乎o,可以請男丁大大放上左下的程式語法嘛?有關閉視窗[X]的那種。多謝。

    此外,您的語法
    我是一個很長的區塊 <=====有放錯位置嘛?

    關閉廣告 [X]

    最後一個問題

    如果我插入php繫節的參數

    可以使用嘛?

    • 現在是因為關閉鈕跟整個廣告區塊是在一起,所以一但關閉後就要看不到那個按鈕了
      如果你把按鈕做在其它地方會是外面時,可以使用像是

      檢視原始碼 JavaScript
      1
      
      $ad.toggle();

      來切換控制它!

發表迴響