国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

移動(dòng)端用下拉刷新的方式實(shí)現(xiàn)上拉加載

FrozenMap / 1854人閱讀

摘要:樣式最外面的盒子設(shè)置中間盒子不設(shè)置高度,靠子盒子撐起。

實(shí)現(xiàn)上拉加載最普遍的方式就是監(jiān)聽滾動(dòng)條的滾動(dòng)事件,而移動(dòng)端的下拉刷新利用的是transform屬性來進(jìn)行位移,那用下拉刷新的方式實(shí)現(xiàn)上拉加載怎么樣?

html結(jié)構(gòu)

</>復(fù)制代碼

這里我們做了兩個(gè)主要的盒子,在兩個(gè)盒子內(nèi)實(shí)現(xiàn)上拉加載。結(jié)構(gòu)很簡(jiǎn)單。

css樣式

</>復(fù)制代碼

  1. * {
  2. margin: 0;
  3. padding: 0;
  4. }
  5. .main-box {
  6. background: skyblue;
  7. width: 100%;
  8. height: 300px;
  9. overflow: hidden;
  10. }
  11. .popup-box {
  12. width: 100%;
  13. }
  14. .item {
  15. width: 100%;
  16. line-height: 40px;
  17. text-align: center;
  18. padding: 20px;
  19. box-sizing: border-box;
  20. }
  21. .tips{
  22. text-align: center;
  23. }
  24. #box2 {
  25. margin-top: 50px;
  26. }

最外面的盒子設(shè)置overflow: hidden;中間盒子不設(shè)置高度,靠子盒子item撐起。

js代碼

</>復(fù)制代碼

  1. /*下拉加載*/
  2. function tDscroll(obj) {
  3. this.key = true; //防止重復(fù)的請(qǐng)求
  4. this.dom = obj.dom; //傳入的dom
  5. this.fn = obj.fn; //回調(diào)函數(shù)
  6. this.outDom = this.dom.querySelector(".popup-box"); //獲取內(nèi)容盒子
  7. this.showHeight = dom.offsetHeight; //顯示的高度
  8. this.actualHeight = this.outDom.offsetHeight; //獲取實(shí)際高度的內(nèi)容
  9. this.startY = 0; //起始點(diǎn)擊位置
  10. this.changedY = 0; //手指移動(dòng)的距離
  11. this.originY = 0; //偏移量
  12. var that = this;
  13. this.dom.addEventListener("touchstart",function (ev) {
  14. that.onStart(ev);
  15. });
  16. this.dom.addEventListener("touchmove",function (ev) {
  17. that.onMove(ev);
  18. });
  19. this.dom.addEventListener("touchend",function (ev) {
  20. that.onEnd(ev);
  21. });
  22. this.fn.call(this,this.outDom);
  23. };
  24. tDscroll.prototype.onStart = function (ev) {
  25. this.startY = ev.targetTouches[0].clientY;
  26. var tempArr = window.getComputedStyle(this.outDom).transform.split(",");
  27. if (tempArr.length > 2) {
  28. this.originY = parseInt(tempArr[tempArr.length - 1]) || 0;
  29. }
  30. };
  31. tDscroll.prototype.onMove = function (ev) {
  32. this.changedY = ev.touches[0].clientY - this.startY;
  33. var changNum = (this.originY + this.changedY);
  34. var scrollHeight = -changNum + this.showHeight;
  35. if (changNum > 50)return;
  36. if (scrollHeight > this.actualHeight + 50)return;
  37. if (scrollHeight > this.actualHeight - 50 && this.key) {
  38. this.fn.call(this,this.outDom);
  39. }
  40. this.outDom.style.cssText = "transform: translateY(" + changNum + "px);";
  41. };
  42. tDscroll.prototype.onEnd = function() {
  43. if ((this.originY + this.changedY) > 50 ) {
  44. this.outDom.style.cssText = "transform: translateY(0px);transition:all .3s";
  45. }
  46. if (-(this.originY + this.changedY) + this.showHeight > this.actualHeight + 50) {
  47. this.outDom.style.cssText = "transform: translateY(-"+(this.actualHeight - this.showHeight)+"px);transition:all .3s";
  48. }
  49. };
  50. var dom = document.querySelector("#box1"); //獲取dom
  51. var dom2 = document.querySelector("#box2"); //獲取dom
  52. var obj = {
  53. dom : dom,
  54. fn : add
  55. };
  56. var obj2 = {
  57. dom : dom2,
  58. fn : add
  59. };
  60. new tDscroll(obj);
  61. new tDscroll(obj2);
  62. var page = 0; //當(dāng)前的頁數(shù)(模擬用)
  63. // 模擬ajax
  64. function add(outDom) {
  65. var that = this;
  66. this.key = false;
  67. var str = "";
  68. for (var i = 1;i < 11;i++) {
  69. str+="
    "+(i+((page)*10))+"
    "
  70. }
  71. page++;
  72. setTimeout(function () {
  73. var tips = outDom.querySelector(".tips"); //獲取提升
  74. tips && outDom.removeChild(tips); //如果不是第一次 添加
  75. str += "
    加載更多
    ";
  76. outDom.innerHTML += str;
  77. that.actualHeight = outDom.offsetHeight;
  78. that.key = true;
  79. },2000)
  80. }

原理也是很簡(jiǎn)單,監(jiān)聽手勢(shì)事件判斷是否距離足夠,足夠就可以添加數(shù)據(jù)啦~~~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53421.html

相關(guān)文章

  • 移動(dòng)端用下拉刷新方式實(shí)現(xiàn)拉加

    摘要:樣式最外面的盒子設(shè)置中間盒子不設(shè)置高度,靠子盒子撐起。 實(shí)現(xiàn)上拉加載最普遍的方式就是監(jiān)聽滾動(dòng)條的滾動(dòng)事件,而移動(dòng)端的下拉刷新利用的是transform屬性來進(jìn)行位移,那用下拉刷新的方式實(shí)現(xiàn)上拉加載怎么樣? html結(jié)構(gòu) 這里我們做了兩個(gè)主要的盒子,在兩個(gè)盒子內(nèi)實(shí)現(xiàn)上拉加載。結(jié)構(gòu)很簡(jiǎn)單。 css樣式 * { ...

    haitiancoder 評(píng)論0 收藏0
  • 移動(dòng)端用下拉刷新方式實(shí)現(xiàn)拉加

    摘要:樣式最外面的盒子設(shè)置中間盒子不設(shè)置高度,靠子盒子撐起。 實(shí)現(xiàn)上拉加載最普遍的方式就是監(jiān)聽滾動(dòng)條的滾動(dòng)事件,而移動(dòng)端的下拉刷新利用的是transform屬性來進(jìn)行位移,那用下拉刷新的方式實(shí)現(xiàn)上拉加載怎么樣? html結(jié)構(gòu) 這里我們做了兩個(gè)主要的盒子,在兩個(gè)盒子內(nèi)實(shí)現(xiàn)上拉加載。結(jié)構(gòu)很簡(jiǎn)單。 css樣式 * { ...

    cod7ce 評(píng)論0 收藏0
  • listloading 一個(gè)移動(dòng)拉、下拉更多組件

    摘要:是一個(gè)移動(dòng)端的上拉下拉加載更多的組件。因?yàn)樵诠?jié)點(diǎn)元素創(chuàng)建之前,必須先設(shè)定高度,否則會(huì)導(dǎo)致無法滾動(dòng)創(chuàng)建完畢是指定給第一個(gè)子元素滾動(dòng),所以的上拉和下拉刷新也是追加到第一個(gè)子元素里面,其實(shí)把第一個(gè)子元素想象成為里面的就可以了。 listloading.js listloading是一個(gè)移動(dòng)端的上拉、下拉加載更多的組件。主要依賴于iscroll.js v5.1.2基礎(chǔ)上開發(fā)的組件,基礎(chǔ)庫可以使...

    jeyhan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<