jQuery圖片切換動(dòng)畫(huà)效果
最近在寫(xiě)前端頁(yè)面,作為只寫(xiě)過(guò)兩個(gè)月前端的人來(lái)說(shuō),感覺(jué)用jq什么的寫(xiě)出來(lái)自己想要的效果真的是太棒了,剛好今天花了一下午完成了一個(gè)圖片切換的特效:
效果圖:

jq 代碼,都是自己寫(xiě)出來(lái)的,弄了一下午完成的,初學(xué)者,整理以后留著用。
直接上代碼:
//////
// 2017-2-27 //
//////
$(function(){
var num = 0;
var divStr = '#imageShowSmallAnchor'; // 移動(dòng) div
var s = 300;
$('.imgNum').click(function(){
var _this = $(this);
var status = _this.attr('data-status');
var total_num = _this.parent().find('ul li').length;
var numSPic = 4;//最多顯示的小圖的個(gè)數(shù)
var src;
if(status == 'left'){
if(num <= 0){
num = total_num-1;
}else{
num--;
}
}else{
if(num >= total_num-1){
num = 0;
}else{
num++;
}
}
// 4 一次做多顯示四張小圖 $("#div").stop(false, true);//讓當(dāng)前動(dòng)畫(huà)直接到達(dá)末狀態(tài) ,繼續(xù)下一個(gè)動(dòng)畫(huà)
// 第一種情況 當(dāng)小圖數(shù)量小于5時(shí), 直接進(jìn)行右移。
if (total_num <= numSPic) {$(divStr).stop(true,false).animate(
{left:num*106+39+"px"},s);
} else{
////////
// 圖片左移 //
////////
if (status == 'left') {
if (num < total_num - numSPic) {
_this.parent().find('ul li').eq(num).show();
} else{
// 特殊情況 左移時(shí),從第一張圖切換到最后一張圖時(shí)
// if判斷 當(dāng)前是否顯示最后張圖,如果不是最后一張圖 則當(dāng)變成右移時(shí),無(wú)需刷新小圖的顯示狀態(tài)。
// 左移時(shí),需要將李 全部隱藏后, 再將最后的 numSPice 張圖顯示出來(lái),
if (num == total_num - 1) {
_this.parent().find('ul li').hide();
for (var x = total_num-1; x >= total_num - numSPic; x--) {
_this.parent().find('ul li').eq(x).show();
}
}
}
} else{
////////
// 圖片右移 //
////////
if (num >= numSPic) {
_this.parent().find('ul li').eq(num-numSPic).hide();
} else{
// 特殊情況 右移時(shí),從最后一張圖切換到第一張圖時(shí)
// 判斷 是否是第一張圖, 如果不是則再變成左移時(shí),無(wú)需刷新小圖的顯示狀態(tài)
if (num == 0) {
for (var x = 0; x < numSPic; x ++) {
_this.parent().find('ul li').eq(x).show();
}
}
}
}
// 快速點(diǎn)擊切換時(shí)嗎,動(dòng)畫(huà)出現(xiàn)滯后和反復(fù)問(wèn)題,
// 讓當(dāng)前動(dòng)畫(huà)直接到達(dá)末狀態(tài) ,繼續(xù)下一個(gè)動(dòng)畫(huà) $('#div').stop(false, ture); $('#div').stop().animate(); 集合使用效果更佳。
$(divStr).stop(false, true);
////////
// 樣式左移 //
////////
if (status == 'left') {
// 39 定位divStr 的left距離 父級(jí)元素的像素距離
// 等樣式移動(dòng)到最右邊時(shí),樣式位置固定
// $(divStr).position().left 獲取定位元素 left值。
if ($(divStr).position().left <= 39 ) {
$(divStr).stop().animate({left:"39px"});
// 當(dāng)從第一張切換到最后一張時(shí),樣式應(yīng)在最右邊。
if (num==total_num-1) {
$(divStr).stop().animate({left:3 * 106 + 39 + "px"},s);
}
} else{
$(divStr).stop().animate({left:"-=106px"},s);
}
} else{
////////
// 樣式右移 //
////////
if ($(divStr).position().left >= 357) {
$(divStr).stop().animate({left:"357px"});
// 當(dāng)從最后一張切換到第一張時(shí),樣式應(yīng)在最左邊。
if (num==0) {
$(divStr).stop().animate({left:"39px"},s);
}
} else{
$(divStr).stop().animate({left:"+=106px"},s);
}
}
}
src = _this.parent().find('ul li').eq(num).find('img').attr('src');
_this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
});
// 點(diǎn)擊小圖切換 大圖 和小圖上的樣式。
$('.imgSW-bt li').click(function(){
var _this = $(this);
var src;
num = _this.index();
// parseInt(10/3); 整除
// 獲取點(diǎn)擊的位置,來(lái)計(jì)算 樣式的位置。
var X = parseInt(_this.position().left/106);
$(divStr).stop().animate({left:X*106+39+"px"},s);
src = _this.find('img').attr('src');
_this.parents('.xq-imgSW').find('.imgSW-top li img').attr('src',src);
});
});
HTML 界面代碼:
<div class="xq-imgSW">
<div class="imgSW-top">
<ul>
<li><img src="images/xq-img1.png" alt=""></li>
</ul>
</div>
<div class="clear"></div>
<div class="imgSW-bt">
<input class="imgSW-zuo imgNum" type="button" data-status="left">
<div id="imageShowSmallAnchor"></div>
<ul>
<li class="imgSW-xz"><img class="imgex" src="images/xq-img-s1.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型1</div>
</li>
<li><img src="images/xq-img-s2.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型2</div>
</li>
<li><img src="images/xq-img-s3.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型3</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型4</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型5</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型6</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型7</div>
</li>
<li><img src="images/xq-img-s4.png" style="width:90px;height:60px;" alt="">
<div class="imgSW-bot">戶型8</div>
</li>
</ul>
<input class="imgSW-you imgNum" data-status="right" type="button">
</div>
</div>
<div id="imageShowSmallAnchor"></div> 是定位上去的
另外:
快速點(diǎn)擊是會(huì)出現(xiàn)動(dòng)畫(huà)延遲現(xiàn)象,影響體驗(yàn),處理動(dòng)畫(huà)延遲jQuery stop()語(yǔ)法:
$("#div").stop();//停止當(dāng)前動(dòng)畫(huà),繼續(xù)下一個(gè)動(dòng)畫(huà)
$("#div").stop(true);//清除元素的所有動(dòng)畫(huà)
$("#div").stop(false, true);//讓當(dāng)前動(dòng)畫(huà)直接到達(dá)末狀態(tài) ,繼續(xù)下一個(gè)動(dòng)畫(huà)
$("#div").stop(true, true);//清除元素的所有動(dòng)畫(huà),讓當(dāng)前動(dòng)畫(huà)直接到達(dá)末狀態(tài)
在jq中有用到并有注釋。
// 讓當(dāng)前動(dòng)畫(huà)直接到達(dá)末狀態(tài) ,繼續(xù)下一個(gè)動(dòng)畫(huà) $('#div').stop(false, ture); $('#div').stop().animate(); 集合使用效果更佳。
作為前端新手,記錄下,以后可能會(huì)用到。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 基于Jquery的簡(jiǎn)單圖片切換效果
- jQuery 一個(gè)圖片切換的插件
- 一個(gè)基于jquery的圖片切換效果
- jQuery簡(jiǎn)單實(shí)現(xiàn)banner圖片切換
- JQuery頁(yè)面圖片切換和新聞列表滾動(dòng)效果的具體實(shí)現(xiàn)
- 基于jquery實(shí)現(xiàn)左右按鈕點(diǎn)擊的圖片切換效果
- jquery仿QQ商城帶左右按鈕控制焦點(diǎn)圖片切換滾動(dòng)效果
- jQuery插件Slider Revolution實(shí)現(xiàn)響應(yīng)動(dòng)畫(huà)滑動(dòng)圖片切換效果
- jQuery圖片切換插件jquery.cycle.js使用示例
- jQuery插件slick實(shí)現(xiàn)響應(yīng)式移動(dòng)端幻燈片圖片切換特效
相關(guān)文章
jQuery時(shí)間驗(yàn)證和轉(zhuǎn)換為標(biāo)準(zhǔn)格式的時(shí)間格式
本篇文章主要介紹了jQuery時(shí)間驗(yàn)證和轉(zhuǎn)換為標(biāo)準(zhǔn)格式的時(shí)間示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-03-03
jQuery實(shí)現(xiàn)大轉(zhuǎn)盤(pán)抽獎(jiǎng)活動(dòng)仿QQ音樂(lè)代碼分享
這篇文章主要展示了jQuery實(shí)現(xiàn)大轉(zhuǎn)盤(pán)抽獎(jiǎng)活動(dòng)仿QQ音樂(lè)實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-08-08
jquery.tableSort.js表格排序插件使用方法詳解
這篇文章主要為大家詳細(xì)介紹了jquery.tableSort.js表格排序插件使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
jQuery綁定事件-多種實(shí)現(xiàn)方式總結(jié)
下面小編就為大家?guī)?lái)一篇jQuery綁定事件-多種實(shí)現(xiàn)方式總結(jié)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05

