js實(shí)現(xiàn)手機(jī)web圖片左右滑動(dòng)效果
最近在做一個(gè)手機(jī)端web站點(diǎn),里面有一個(gè)圖片展示效果:
1、點(diǎn)擊任意圖片時(shí)圖片全屏展示,左右滑動(dòng)能展示其他的圖片。
2、滑動(dòng)超過一定范圍自動(dòng)滑到下一張圖片,不超過則回退到當(dāng)前照片位置。此處的滑動(dòng)要帶動(dòng)畫效果
實(shí)現(xiàn):
每張圖片外面一個(gè)div,將其寬度設(shè)置為100%,最外層有一個(gè)div[命名為outerDiv],其寬度設(shè)為:總圖片數(shù)量*100+‘%'。給最外層div設(shè)置touchstart,touchmove,touchend事件監(jiān)聽處理函數(shù),在touchmove中根據(jù)移動(dòng)的x軸距離動(dòng)態(tài)改變outerDiv的x軸距離即可實(shí)現(xiàn)圖片滑動(dòng)效果,在touchend中根據(jù)當(dāng)前滑動(dòng)的距離判斷滑動(dòng)到下一張還是回退當(dāng)前圖片位置。
之前我們可以通過設(shè)置outerDiv的position屬性,然后改變left值實(shí)現(xiàn)移動(dòng)效果,這里我用的是css3的動(dòng)畫函數(shù)transform,簡單,且可以實(shí)現(xiàn)動(dòng)畫效果
transform參數(shù):
-webkit-transform:translate(100px,200px) tr //可以設(shè)置x、y軸方向移動(dòng)距離 -webkit-transform:translateX(100px) translateY(200px) translateZ(3000px) //可以設(shè)置x、y、z軸方向移動(dòng)距離.3D效果 -webkit-transition:.4s ease;//設(shè)置動(dòng)畫時(shí)間
定義動(dòng)畫時(shí)間:
.transition { -webkit-transition:.4s ease; -moz-transition:.4s ease; -ms-transition:.4s ease; -o-transition: .4s ease; transition:.4s ease; }
關(guān)鍵代碼:
var touchOption={touchStartX:0,startTranslateX:0,moveDistance:0};
1、touchstart
outerDiv.addEventListener('touchstart',function(){ $(this).removeClass('transition');//移除動(dòng)畫效果,否則移動(dòng)時(shí)圖片會(huì)顫動(dòng) touchOption.touchStartX = e.touches[0].clientX; if ($(this).css("-webkit-transform") == 'none') { touchOption.startTranslateX = 0; } else { //css-webkit-transform屬性值格式:matrix(1, 0, 0, 1, -4140, 0) var transfrom_info = $('.sourcePhotoDiv').css("-webkit-transform").split(',')[4];//獲取當(dāng)前outerDiv的x軸坐標(biāo) touchOption.startTranslateX = parseInt(transfrom_info); } },false);
2、touchmove
outerDiv.addEventListener('touchmove',function(){ touchOption.moveDistance = (e.touches[0].clientX - touchOption.touchStartX); var TranslateX = touchOption.startTranslateX + touchOption.moveDistance; $(this).css('-webkit-transform', 'translateX('+ TranslateX +'px) translateZ(0)'); //移動(dòng)圖片 },false);
3、touchend
outerDiv.addEventListener('touchend',function(){ $(this).addClass('transition);//添加動(dòng)畫效果 var moveX=100;//此處計(jì)算移動(dòng)移動(dòng)下一張圖片還是退貨當(dāng)前圖片代碼省略 $(this).css('-webkit-transform', 'translateX('+ moveX +'px) translateZ(0)'); //移動(dòng)圖片 },false);
總結(jié):
1、outerDiv的動(dòng)畫參數(shù)和效果都是js動(dòng)態(tài)添加的,不需要事先定義
2、用translate(x,y)這種參數(shù)時(shí),圖片移動(dòng)時(shí)會(huì)顫動(dòng)
3、用translateX() 且?guī)ranslateZ(0)時(shí)圖片移動(dòng)正常,不帶translateZ(0)同樣出現(xiàn)顫動(dòng)
4、如果用的是translateX(moveX) ranslateZ(0)這種格式,如果moveX用的是百分比值,如‘50%',在android手機(jī)自動(dòng)瀏覽器和uc瀏覽器中則沒有動(dòng)畫效果,用px單位值則正常
為防止圖片移動(dòng)過程顫動(dòng)和保證動(dòng)畫效果,建議大家用translateX(100px) ranslateZ(0)這種參數(shù),且移動(dòng)距離用px值
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS手機(jī)端touch事件計(jì)算滑動(dòng)距離的方法示例
- JS實(shí)現(xiàn)自動(dòng)輪播圖效果(自適應(yīng)屏幕寬度+手機(jī)觸屏滑動(dòng))
- JS實(shí)現(xiàn)PC手機(jī)端和嵌入式滑動(dòng)拼圖驗(yàn)證碼三種效果
- js仿小米手機(jī)上下滑動(dòng)效果
- javascript Slip.js實(shí)現(xiàn)整屏滑動(dòng)的手機(jī)網(wǎng)頁
- js實(shí)現(xiàn)支持手機(jī)滑動(dòng)切換的輪播圖片效果實(shí)例
- wap手機(jī)圖片滑動(dòng)切換特效無css3元素js腳本編寫
相關(guān)文章
JavaScript結(jié)合Bootstrap仿微信后臺(tái)多圖文界面管理
這篇文章主要為大家詳細(xì)介紹了js結(jié)合Bootstrap仿微信后臺(tái)多圖文界面管理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07JavaScript頁面模板庫handlebars的簡單用法
本文主要是給大家分享的一個(gè)javascript頁面模板庫Handlebars的簡單用法,可以幫助大家輕松的構(gòu)建語義化模板,非常的實(shí)用,推薦給大家。2015-03-03javascript 動(dòng)態(tài)樣式添加的簡單實(shí)現(xiàn)
下面小編就為大家?guī)硪黄猨avascript 動(dòng)態(tài)樣式添加的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10JavaScript+Canvas實(shí)現(xiàn)彩色圖片轉(zhuǎn)換成黑白圖片的方法分析
這篇文章主要介紹了JavaScript+Canvas實(shí)現(xiàn)彩色圖片轉(zhuǎn)換成黑白圖片的方法,結(jié)合實(shí)例形式分析了javascript結(jié)合HTML5相關(guān)函數(shù)修改頁面圖片元素顯示效果相關(guān)操作技巧,需要的朋友可以參考下2018-07-07利用原生js和jQuery實(shí)現(xiàn)單選框的勾選和取消操作的方法
下面小編就為大家?guī)硪黄迷鷍s和jQuery實(shí)現(xiàn)單選框的勾選和取消操作的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09原生JS版和jquery版實(shí)現(xiàn)checkbox的全選/全不選/點(diǎn)選/行內(nèi)點(diǎn)選(Mr.Think)
腳本之家小編之前整理不少checkbox全選全不選這方便的文章,但看了這篇以后發(fā)現(xiàn)實(shí)現(xiàn)方法更好2016-10-10JavaScript中遍歷跳出循環(huán)方法總結(jié)
這篇文章主要給大家介紹了關(guān)于JavaScript中遍歷跳出循環(huán)方法的相關(guān)資料,一想到想到循環(huán)的跳出,立馬就會(huì)想到三個(gè)關(guān)鍵,break、return、continue,在業(yè)務(wù)中也會(huì)需要在遍歷的時(shí)候退出循環(huán),需要的朋友可以參考下2023-12-12echarts餅圖自定義設(shè)置顏色的3種實(shí)現(xiàn)方式
ECharts餅圖的顏色可以通過多種方式進(jìn)行設(shè)置,下面這篇文章主要給大家介紹了關(guān)于echarts餅圖自定義設(shè)置顏色的3種實(shí)現(xiàn)方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02