日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zepto不支持animate({scrollTop:100px})的解决办法

發布時間:2025/3/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zepto不支持animate({scrollTop:100px})的解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  在移動web項目的開發中,遇到一個通過點擊頁面自動到相應的樓層處的需求,最初的想法就是使用html的target屬性進行切換,但實際效果十分死板,顯得毫無交互性。該前端架構采用zepto這個輕庫進行開發,它具有類似jQuery的語法,之后采用了animate({scrollTop:"100px"})這個函數進行頁面的動畫滾動,結果就是毫無效果。

  通過查詢zepto fx包的源碼

transform = prefix + 'transform'cssReset[transitionProperty = prefix + 'transition-property'] =cssReset[transitionDuration = prefix + 'transition-duration'] =cssReset[transitionDelay = prefix + 'transition-delay'] =cssReset[transitionTiming = prefix + 'transition-timing-function'] =cssReset[animationName = prefix + 'animation-name'] =cssReset[animationDuration = prefix + 'animation-duration'] =cssReset[animationDelay = prefix + 'animation-delay'] =cssReset[animationTiming = prefix + 'animation-timing-function'] = ''

  發現zepto的animate()源碼采用css3的方式進行,而scrollTop屬性不在css3的動畫屬性中,所以沒有生效。接下來的方法就是自己寫一個滾動條上下滾動的方法。初步的代碼如下:

$.fn.scrollTo =function(options){var defaults = {toT : 0, //滾動目標位置durTime : 500, //過渡動畫時間delay : 30, //定時器時間callback:null //回調函數};var opts = $.extend(defaults,options),timer = null,_this = this,curTop = _this.scrollTop(),//滾動條當前的位置subTop = opts.toT - curTop, //滾動條目標位置和當前位置的差值index = 0,dur = Math.round(opts.durTime / opts.delay),smoothScroll = function(t){index++;var per = Math.round(subTop/dur);if(index >= dur){_this.scrollTop(t);window.clearInterval(timer);if(opts.callback && typeof opts.callback == 'function'){opts.callback();}return;}else{_this.scrollTop(curTop + index*per);}};timer = window.setInterval(function(){smoothScroll(opts.toT);}, opts.delay);return _this;};

采用原型函數的方式,制做一個scrollTo方,效果還不錯~~哈哈

?

調用方式為 :$("body").scrollTo( {toT : 0} );  這就是最簡單的回到頂部

具體demo如下

<!DOCTYPE html> <html><head><meta charset="UTF-8"><title>測試</title><style>body{background: red;height: 3000px;text-align: center;}#clickToBack{position: fixed;left: 0;bottom: 0;width: 100%;height: 40px;line-height: 40px;background: white;}</style></head><body><h1>我是頭頂</h1><div id="clickToBack">go back</div><script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js" ></script><script>$.fn.scrollTo =function(options){var defaults = {toT : 0, //滾動目標位置 durTime : 500, //過渡動畫時間 delay : 30, //定時器時間 callback:null //回調函數 };var opts = $.extend(defaults,options),timer = null,_this = this,curTop = _this.scrollTop(),//滾動條當前的位置 subTop = opts.toT - curTop, //滾動條目標位置和當前位置的差值 index = 0,dur = Math.round(opts.durTime / opts.delay),smoothScroll = function(t){index++;var per = Math.round(subTop/dur);if(index >= dur){_this.scrollTop(t);window.clearInterval(timer);if(opts.callback && typeof opts.callback == 'function'){opts.callback();}return;}else{_this.scrollTop(curTop + index*per);}};timer = window.setInterval(function(){smoothScroll(opts.toT);}, opts.delay);return _this;};</script><script>//調用 $("#clickToBack").click(function() {$("body").scrollTo({toT: 0});})</script></body> </html>

?

?

?

(PS:本菜鳥注冊博客園已經有一段時間了,這還是第一次發博客記錄自己的學習,希望大家請多指教~~)

轉載于:https://www.cnblogs.com/skyHF/p/4720308.html

總結

以上是生活随笔為你收集整理的zepto不支持animate({scrollTop:100px})的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。