前言

初学iscroll这个控件,给我的一个感觉还是蛮不错的。

什么是iScroll:是目前最成熟的自定义滚动解决方案之一,在移动端和PC有很好的兼容性。iScroll官方提供了5个不同的版本

  • iscroll.js 通用版 包含了大部分公共特性
  • iscroll-lite.js 缩减版 削减了一些功能特性,例如:滚动条,鼠标滚轮等等
  • iscroll-probe.js 探索版 此版本可以满足你获取滚动条位置的需求。
  • iscroll-zoom.js 滚动缩放版
  • iscroll-infinite.js 无限制版

使用

代码思路:利用监听滚动条的scroll事件,判断下拉或者上拉的距离,做上触发距离标记,当scrollEnd事件触发时,执行数据加载

这里自己要去引用<script src="js/iscroll-probe.js"></script>

html整个贴图代码

<!DOCTYPE html>
<html>
<head>
  <title>pull to refresh</title>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
  <script src="js/iscroll-probe.js"></script>
</head>

<style>
  body{
    overflow: :hidden;
  }
  body,ul{
    padding: 0;
    margin: 0;
  }
  .main {
    position: relative;
    width: 100%;
    height: 100%;
  }
  .main .warpper{
    position: absolute;
    width: 100%;
  }

  .scroller-pullDown, .scroller-pullUp {
    width: 100%;
    height: 30px;
    padding: 10px 0;
    text-align: center;
  }
  .dropdown-list {
    padding: 0;
    margin: 0;
  }
  .dropdown-list li {
    width: 100%;
    background: #ddd;
    line-height: 45px;
    text-align: center;
    color: #FFF;
    border-bottom: 1px solid #FFF;
  }
</style>
<script>
  //模拟数据
  var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 ,19 , 20];
  function getContents() {
    var li = "";
    for (var i = 0; i < arr.length; i++) {
      li += "<li>Item" + arr[i] + "</li>";
    }
    return li;
  }
  function appendContent(content) {
    var ul = document.getElementById('Content');
    ul.innerHTML = ul.innerHTML + content;
  }
  //返回文档中匹配指定 CSS 选择器的一个元素
  var pullDown = document.querySelector("#PullDown");
  var pullUp = document.querySelector("#PullUp");
  var isPulled = false; // 拉动标记

  window.onload = function(){
    document.body.style.height = Math.max(document.documentElement.clientHeight,window.innerHeight||0)+'px';
    appendContent(getContents());
    //实例IScroll对象
    var myScroll = new IScroll('#MyScroller', {
      //probeType:
      // 1 滚动不繁忙的时候触发
      // 2 滚动时每隔一定时间触发
      // 3 每滚动一像素触发一次
      probeType: 3,
      //是否监听鼠标滚轮事件
      mouseWheel: true,
      //是否显示默认滚动条
      scrollbars: true,
      //是否屏蔽默认事件
      preventDefault: false,
      //是否渐隐滚动条,关掉可以加速
      fadeScrollbars: true
    });

    myScroll.on('scroll',function(){
      var height = this.y;
      var bottomHeight = this.maxScrollY - height;
      //控制下拉显示
      console.log('height',height);
      if(height>=60){
        PullDown.style.display = "block";
        isPulled = true;
        return;
      }else if(height < 60 && height >= 0){
        PullDown.style.display = "none";
        return;
      }
      //控制上拉显示
      if(bottomHeight >= 60){
        PullUp.style.display = "block";
        isPulled = true;
        return;
      }else if (bottomHeight < 60 && bottomHeight >= 0) {
        PullUp.style.display = "none";
        return;
      }
    })
    myScroll.on('scrollEnd', function() { // 滚动结束
      if (isPulled) { // 如果达到触发条件,则执行加载
        isPulled = false;
        appendContent(getContents());
        myScroll.refresh();
      }
    });
  }
</script>
<body>
<div id="MyScroller" class="main">
  <div class="warpper">
    <div id="PullDown" class="scroller-pullDown" style="display: none;">
      <img style="width: 20px; height: 20px;" src="img/HBuilder.png" />
      <span id="pullDown-msg" class="pull-down-msg">下拉刷新</span>
    </div>
    <ul id="Content" class="dropdown-list">
    </ul>
    <div id="PullUp" class="scroller-pullUp" style="display: none;">
      <img style="width: 20px; height: 20px;" src="img/HBuilder.png" />
      <span id="pullUp-msg" class="pull-up-msg">上拉刷新</span>
    </div>
  </div>
</div>
</body>
</html>

参考博客:http://imziv.com/blog/article/read.htm?id=73

iScroll实现下拉刷新上拉加载的更多相关文章

  1. Android 下拉刷新上啦加载SmartRefreshLayout + RecyclerView

    在弄android刷新的时候,可算是耗费了一番功夫,最后发觉有现成的控件,并且非常好用,这里记录一下. 原文是 https://blog.csdn.net/huangxin112/article/de ...

  2. SwipeRefreshLayout实现下拉刷新上滑加载

    1. 效果图 2.RefreshLayout.java package myapplication.com.myapplication; import android.content.Context; ...

  3. 移动端下拉刷新上拉加载-mescroll.js插件

    最近无意间看到有这么一个上拉刷新下拉加载的插件 -- mescroll.js,个人感觉挺好用的,官网地址是:http://www.mescroll.com 然后我就看了一下文档,简单的写了一个小dem ...

  4. JS+CSS实现的下拉刷新/上拉加载插件

    闲来无事,写了一个当下比较常见的下拉刷新/上拉加载的jquery插件,代码记录在这里,有兴趣将代码写成插件与npm包可以留言. 体验地址:http://owenliang.github.io/pull ...

  5. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果

    最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

  6. 基于SwiperJs的H5/移动端下拉刷新上拉加载更多

    最早时,公司的H5项目中曾用过点击一个"加载更多"的DOM元素来实现分页的功能,后来又用过网上有人写的一个上拉加载更多的插件,那个插件是页面将要滚动到底部时就自动请求数据并插入到页 ...

  7. vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

    vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源 ...

  8. 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载

    title: 带你实现开发者头条APP(五)--RecyclerView下拉刷新上拉加载 tags: -RecyclerView,下拉刷新,上拉加载更多 grammar_cjkRuby: true - ...

  9. ListView实现Item上下拖动交换位置 并且实现下拉刷新 上拉加载更多

    ListView实现Item上下拖动交换位置  并且实现下拉刷新  上拉加载更多 package com.example.ListViewDragItem; import android.app.Ac ...

  10. [ionic开源项目教程] - 第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll

    第7讲 实现下拉刷新上拉加载ion-refresher和ion-infinite-scroll 1.将tab1.html的代码改为如下: <ion-content> <ion-ref ...

随机推荐

  1. PL/SQL Developer import and export database method and illustrate

    PL/SQL Developer import and export database method and illustrate   HOW WELL DO YOU KNOW THE APPLE U ...

  2. ABAP的权限检查跟踪(Authorization trace)工具

    事务码 STAUTHTRACE 1. 点击"Activate Trace" button激活跟踪: 可以看到跟踪状态已经处于打开状态. 在同一个application server ...

  3. Jmeter启动报错:unable to access jarfile ApacheJmeter.jar error 原因:下载的src包没有这个jar包,需下载binary包

    安装好jdk并配置了环境变量,下载Jmeter包解压启动jemter.bat提示 unable to access jarfile ApacheJmeter.jar error 原因: 从官网 htt ...

  4. POJ 2342 树的最大独立集

    题意:在树的最大独立集的基础上,加上权值.求最大. 分析: 采用刷表的方式写记忆化,考虑一个点选和不选,返回方式pair 型. 首先,无根树转有根树,dp(root). 注意的是:u不选,那么他的子节 ...

  5. git报错error: src refspec refs/heads/master does not match any.

    $ git pusherror: src refspec refs/heads/master does not match any.error: failed to push some refs 出错 ...

  6. qbxt Day3 其余题

    例题1 noiopenjudge9277 给出在最底层的木头的个数,问有多少种堆放木头的方式,当然你的堆放方式不能让木头掉下来. 在堆放的时候木头必须互相挨着在一起. 设dp[i]表示多少个log(原 ...

  7. 【luoguP1563】【2016NOIP-High】玩具迷题

    P1563 玩具谜题 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: ...

  8. ffmpeg视频和声音

    推送视频和声音 ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="内装麦克风 ( ...

  9. 全文搜索引擎 Elasticsearch 安装踩坑记录

    一.安装 Elastic 需要 Java 8 环境.如果你的机器还没安装 Java 安装完 Java,就可以跟着官方文档安装 Elastic.直接下载压缩包比较简单. $ wget https://a ...

  10. Python常用模块之time和datetime

    1.时间的格式化 结构化时间 ##把字符串时间转换成结构化时间 time.strptime("2017-06-21","%Y-%m-%d") ##把结构化时间转 ...