目錄
HTML
CSS
jQuery
首頁 web前端 H5教程 hwSlider-內容滑動切換效果(一)

hwSlider-內容滑動切換效果(一)

Mar 24, 2017 am 10:40 AM

內容滑動切換應用程式非常廣,常見的有幻燈片焦點圖、畫廊切換等。隨著WEB前端技術的廣泛應用,內容滑動切換效果佔據著web頁面重要地位,因此本站Helloweba特別為廣大前端愛好者安排了淺顯易懂的內容滑動切換效果的開發教程。


hwSlider-內容滑動切換效果(一)
查看示範下載原始碼


          本教學課程分三個部分:1、使用jQuery開發基本的內容滑動切換效果,2、支援行動端觸控自適應的內容滑動切換效果,3、封裝內容滑動切換效果jQuery插件。本文講解第一部分,後面兩部分會在接下來的文章中陸續發布,敬請關注。

本文將結合實例實現內容滑動切換的基本效果,包括:

左右箭頭切換

# 無限無縫滾動

圓點按鈕切換

動畫效果

自動切換

HTML

首先準備HTML結構,整個滑動區域用#hwslider包裹,包括滑桿內容,滑桿使用ul li組織內容,滑桿內容可以是圖片、文字等任意HTML內容。 #dots即圓點切換導航,由多個小圓點組成,對應滑桿數量,一般位於滑動區域的下方。 .arr則是由兩個左右方向鍵組成。

[code=html]
<p id="hwslider">
	<ul>
		<li class="active"><a href="#"><img src="images/s1.jpg" alt="1"></a></li>
		<li><a href="#"><img src="images/s2.jpg" alt="2"></a></li>
		<li>Helloweba</li>
	</ul>
	<p id="dots">
		<span data-index="1" class="active"></span>
		<span data-index="2"></span>
		<span data-index="3"></span>
	</p>
	<a href="javascript:;" id="prev" class="arr"><</a>
	<a href="javascript:;" id="next" class="arr">></a>
</p>
登入後複製

CSS

使用CSS完成滑動區域各組件的佈局,注意其中#hwslider需要設定position: relative以及寬度和高度,那麼滑桿#hwslider ul li設定position :absolute,預設只顯示.active的滑桿,超出尺寸部分會被隱藏。而圓點導航#dots和箭頭導航.arr都要設定position: absolute,箭頭導航預設不顯示,當滑鼠滑向滑桿區域時才顯示。再一個要注意的是#dots和.arr的z-index設定成2,即都應該顯示在滑塊上面。您可以修改css樣式以滿足各種需求,請看以下程式碼:

[code=css]
#hwslider{width: 600px;height: 320px;margin:40px auto; position: relative; overflow: hidden;}
#hwslider ul{width: 600px; height: 320px; position: absolute; z-index: 1}
#hwslider ul li{display:none;position:absolute; left:0; top:0; width: 600px;height: 320px; overflow: hidden;}
#hwslider ul li.active{display: block;}
#dots{position: absolute; bottom:20px; left:270px; width: 60px; height: 12px; z-index: 2;}
#dots span{float: left; width:12px;height: 12px; border: 1px solid #fff; border-radius: 50%; background: #333; margin-right: 8px; cursor: pointer;}
#dots span.active{background: orangered}
.arr{display:none;position: absolute; top: 140px; z-index: 2;width: 40px; height: 40px; line-height: 38px; text-align: center;; font-size: 36px; background: rgba(0,0,0,.3); color: #fff; text-decoration: none}
.arr:hover{background: rgba(0,0,0,.7); text-decoration: none;}
#hwslider:hover .arr{display: block; text-decoration: none;color: #fff}
#prev{left: 20px}
#next{right: 20px}
登入後複製

jQuery

我們使用jQuery來實現滑動切換的各種效果,首先我們引入百度CDN提供的jQuery函式庫和hwslider.js。

[code=html]
<script src="http://apps.bdimg.com/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="js/hwslider.js"></script>
登入後複製


接著我們在hwslider.js中預先定義變數參數:

[code=js]
$(function(){
	var slider = $("#hwslider");
	var dots = $("#dots span"),
		prev = $("#prev"),next = $("#next");
	var sliderInder = slider.children(&#39;ul&#39;)
	var hwsliderLi = sliderInder.children(&#39;li&#39;);
	var hwsliderSize = hwsliderLi.length;  //滑块的总个数
	var index = 1; //初始显示第一个滑块
	var speed = 400; //滑动速度
	var interval = 3000; //间隔时间
	var autoPlay = false; //是否支持自动滑动
	var clickable = true; //是否已经点击了滑块在做滑动动画

});
登入後複製

以上定義了各種需要的變數,其中clickable用於限制點擊滑桿動畫,因為滑桿滑動過程需要時間完成,如果連續點擊箭頭的話,正常情況如果不限制點擊,則會在滑動動畫未完成的情況下又進行下一個滑動動畫,這樣可能會導致頁面卡住的情況。
接下來我們來寫移動動畫函數moveTo()。接受兩個參數,index即要滑動的目標滑塊,dir是滑動方向,有next和prev。我們實現滑動動畫的原理是,當前滑桿向左或向右移動的距離剛好是滑桿的寬度,我們把這個寬度看作可視區,滑動時,當前滑桿會向左或向右移出可視區,而緊接著下一個滑桿從左或從右側進入可視區。我們使用jQuery的animate()方法來實現動畫效果,兩個滑桿的運動速度speed保持一致,就實現了無縫滾動的效果。另外當滑動完成時,及時變換圓點切換的樣式。

[code=js]
	var moveTo = function(index,dir){ 
		if(clickable){
			clickable = false;

			//位移距离
			var offset = slider.width();
			if(dir == &#39;prev&#39;){
				offset = -1*offset;
			}

			//当前滑块动画
			sliderInder.children(&#39;.active&#39;).stop().animate({
				left: -offset},
				speed,
				 function() {
				 	$(this).removeClass(&#39;active&#39;);
			});
			//下一个滑块动画
			hwsliderLi.eq(index-1).css(&#39;left&#39;, offset + &#39;px&#39;).addClass(&#39;active&#39;).stop().animate({
				left: 0}, 
				speed,
				function(){
					clickable = true;
			});

			dots.removeClass(&#39;active&#39;);
			dots.eq(index-1).addClass(&#39;active&#39;);

		}else{
			return false;
		}
	}
登入後複製

綁定左右箭頭的點擊事件,當點擊箭頭時,判斷當前滑桿是否是第一個滑桿或最後一個滑桿,並重新定義index,從而實現無線滾動效果,然後分別呼叫moveTo()函數,實現滑動動畫效果。

[code=js]
	next.on(&#39;click&#39;, function(event) {
		event.preventDefault();
		if(clickable){
			if(index >= hwsliderSize){
				index = 1;
			}else{
				index += 1;
			}
			moveTo(index,&#39;next&#39;);
		}
	});

	prev.on(&#39;click&#39;, function(event) {
		event.preventDefault();
		if(clickable){
			if(index == 1){
				index = hwsliderSize;
			}else{
				index -= 1;
			}

			moveTo(index,&#39;prev&#39;);
		}
		
	});
登入後複製

接著,綁定圓點導航的點擊事件,當點擊小圓點時,獲取當前點擊的圓點序號,即點擊的是第幾個圓點,就對應的第幾個滑桿,然後呼叫moveTo()完成切換動畫。

[code=js]
	dots.on(&#39;click&#39;,  function(event) {
		event.preventDefault();
		
		if(clickable){
			var dotIndex = $(this).data(&#39;index&#39;);
			if(dotIndex > index){
				dir = &#39;next&#39;;
			}else{
				dir = &#39;prev&#39;;
			}
			if(dotIndex != index){
				index = dotIndex;
				moveTo(index, dir);
			}
		}
	});
登入後複製


自動切換,首先我們要定義一個定時器,每隔一定的時間setInterval執行play(),play()每執行一次就會變化index參數,呼叫moveTo實現切換效果。最後當滑鼠滑上滑桿時清除定時器timer,滑鼠移開滑桿時又重新啟動定時器自動切換。

[code=js]
	if(autoPlay){
		var timer;
		var play = function(){
			index++;
			if(index > hwsliderSize){
				index = 1;
			}
			moveTo(index, &#39;next&#39;);
		}
		timer = setInterval(play, interval); //设置定时器

		//鼠标滑上时暂停
		slider.hover(function() {
			timer = clearInterval(timer);
		}, function() {
			timer = setInterval(play, interval);
		});
	};
登入後複製


最後將程式碼整理後,你將可以看到一個基本的滑動切換效果,你也可以下載原始碼測試。

 以上是hwSlider-內容滑動切換效果(一) 的內容,更多相關內容請關注PHP中文網(www.php.cn)!

相關文章:

#實例幫助你了解HTML5滑動區域選擇元素Slider element

hwSlider-內容滑動切換效果(二):響應式可觸控滑動

#微信小程式slider元件詳細介紹

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
H5指的是什麼?探索上下文 H5指的是什麼?探索上下文 Apr 12, 2025 am 12:03 AM

H5referstoHTML5,apivotaltechnologyinwebdevelopment.1)HTML5introducesnewelementsandAPIsforrich,dynamicwebapplications.2)Itsupportsmultimediawithoutplugins,enhancinguserexperienceacrossdevices.3)SemanticelementsimprovecontentstructureandSEO.4)H5'srespo

H5:網絡標準和技術的發展 H5:網絡標準和技術的發展 Apr 15, 2025 am 12:12 AM

Web标准和技术从HTML4、CSS2和简单的JavaScript演变至今,经历了显著的发展。1)HTML5引入了Canvas、WebStorage等API,增强了Web应用的复杂性和互动性。2)CSS3增加了动画和过渡功能,使页面效果更加丰富。3)JavaScript通过Node.js和ES6的现代化语法,如箭头函数和类,提升了开发效率和代码可读性,这些变化推动了Web应用的性能优化和最佳实践的发展。

H5代碼:Web開發人員的最佳實踐 H5代碼:Web開發人員的最佳實踐 Apr 16, 2025 am 12:14 AM

H5代碼的最佳實踐包括:1.使用正確的DOCTYPE聲明和字符編碼;2.採用語義化標籤;3.減少HTTP請求;4.使用異步加載;5.優化圖像。這些實踐能提升網頁的效率、可維護性和用戶體驗。

H5是HTML5的速記嗎?探索細節 H5是HTML5的速記嗎?探索細節 Apr 14, 2025 am 12:05 AM

H5不僅僅是HTML5的簡稱,它代表了一個更廣泛的現代網頁開發技術生態:1.H5包括HTML5、CSS3、JavaScript及相關API和技術;2.它提供更豐富、互動、流暢的用戶體驗,能在多設備上無縫運行;3.使用H5技術棧可以創建響應式網頁和復雜交互功能。

H5和HTML5:網絡開發中常用的術語 H5和HTML5:網絡開發中常用的術語 Apr 13, 2025 am 12:01 AM

H5與HTML5指的是同一個東西,即HTML5。 HTML5是HTML的第五個版本,帶來了語義化標籤、多媒體支持、畫布與圖形、離線存儲與本地存儲等新功能,提升了網頁的表現力和交互性。

了解H5代碼:HTML5的基本原理 了解H5代碼:HTML5的基本原理 Apr 17, 2025 am 12:08 AM

HTML5是構建現代網頁的關鍵技術,提供了許多新元素和功能。 1.HTML5引入了語義化元素如、、等,增強了網頁結構和SEO。 2.支持多媒體元素和,無需插件即可嵌入媒體。 3.表單增強了新輸入類型和驗證屬性,簡化了驗證過程。 4.提供了離線和本地存儲功能,提升了網頁性能和用戶體驗。

解構H5代碼:標籤,元素和屬性 解構H5代碼:標籤,元素和屬性 Apr 18, 2025 am 12:06 AM

HTML5代碼由標籤、元素和屬性組成:1.標籤定義內容類型,用尖括號包圍,如。 2.元素由開始標籤、內容和結束標籤組成,如內容。 3.屬性在開始標籤中定義鍵值對,增強功能,如。這些是構建網頁結構的基本單位。

H5:如何增強網絡上的用戶體驗 H5:如何增強網絡上的用戶體驗 Apr 19, 2025 am 12:08 AM

H5通過多媒體支持、離線存儲和性能優化提升網頁用戶體驗。 1)多媒體支持:H5的和元素簡化開發,提升用戶體驗。 2)離線存儲:WebStorage和IndexedDB允許離線使用,提升體驗。 3)性能優化:WebWorkers和元素優化性能,減少帶寬消耗。

See all articles