前言

在我之前的项目中,页面总是干巴巴的,用户的体验不是特别完美,我也是一直觉得把设计师给到的psd做出来就好,很少考虑用户的感受。我喜欢看不同的App,操作每个步骤,观赏每个能和我互动的交互设计效果,我很喜欢。感觉有回应。

现在开始实现我页面的第一个交互效果,让我的页面更生动一点。

实现的插件

基于iScroll.js插件

代码

html

<div class="header">我是头部固定</div>

<div id="wrapper">

<div id="scroller">

<div id="pullDown"> <span class="pullDownLabel">下拉刷新</span> </div>

<ul id="thelist">

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

<li>我是小公举</li>

</ul>

<div id="pullUp"><span class="pullUpLabel">上拉加载更多</span></div>

</div>

</div>

<div class=""footer>我是底部固定</div>

css

*{margin:0;padding:0}

body{font-size:12px}

li{list-style:none}

.header{position:absolute;top:0;left:0;width:100%;height:45px;line-height:45px;text-align:center;color:#333;font-size:16px}

.footer{position:absolute;bottom:0;left:0;width:100%;height:45px;line-height:45px;text-align:center;color:#333;font-size:16px}

#wrapper{position:absolute;top:45px;left:0;bottom:48px;width:100%;}

#wrapper #scroller .thelist li{height:60px;padding:0 10px;line-height:60px;background:#ecf6ff;margin-top:10px;}

#pullDown,#pullUp{height:30px;line-height:30px;padding:0 10px;color:#888;text-align:center}

javascript

<script type="text/javascript" src="js/iscroll.js"></script>

<script>

var myScroll, pullDownEl, pullDownOffset, pullUpEl, pullUpOffset, generatedCount = 0;

function loaded(){

pullDownEl = document.getElementById('pullDown');

pullDownOffset = pullDownEl.offsetHeight;      //获取下拉刷新的div高度 30

pullUpEl = document.getElementById('pullUp');

pullUpOffset = pullUpEl.offsetHeight;               // 获取上拉加载的div高度 30

myScroll = new iScroll('wrapper',{

useTransition: true,                 //options.useTransition 默认为true,支持css transition 动画;

topOffset: pullDownOffset,     //通过topOffset参数属性设置iScroll已经滚动的基准值;

onRefresh: function(){             //通过onRefresh参数方法调整刷新后的界面结构

if(pullDownEl.className.match('loading')){

pullDownEl.className= '' ;

pullDownEl.querySelector('.pullDownLabel').innerHtml = '下拉刷新' ;

} else if (pullUpEl.className.match('loading')){

pullUpEl.className = '' ;

pullUpEl.querySelector('.pullUpLabel').innerHtml = '上拉加载更多' ;

}

},

onScrollMove: function(){                         //通过onScrollMove参数方法判断当前滚动是在顶端还是底端

if(this.y > 5 && !pullDownEl.className.match('flip')){

pullDownEl.className = 'flip' ;

pullDownEl.querySelector('.pullDownLabel').innerHtml = '刷新释放' ;

this.minScrollY = 0;

} else if(this.y < 5 && pullDownEl.className.match('flip')){

pullDownEl.className = ' ' ;

pullDownEl.querySelector('.pullDownLabel').innerHtml = 'Pull down to refresh...' ;

this.minScrollY = -pullDownOffset;

} else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match(flip)){

pullUpEl.className = 'flip';

pullUpEl.querySelector('.pullUpLabel').innerHtml = '释放刷新';

this.maxScrollY = this.maxScrollY;

} else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')){

pullUpEl.className = ' ';

pullUpEl.querySelector('.pullUpLabel').innerHtml = 'Pull up to load more...;

this.maxScrollY = pullUpOffset;

}

},

onScrollEnd: function(){

if(pullDownEl.className.match('flip')){

pullDownEl.className = 'loading';

pullDownEl.querySelector('.pullDownLabel').innerHtml = '加载中';

pullDownAction();

} else if(pullUpEl.className.match('flip')){

pullUpEl.className = 'loading';

pullUpEl.querySelector('.pullUpLabel').innerHtml = '加载中';

pullUpAction();

}

},

});

loadAction();

};

document.addEventListener('touchmove',function(e){

e.preventDefaule();

},false);  //阻止冒泡

document.addEventListener('DOMContentLoaded',function(){

setTimeout(loaded,0)

}.false);   //当DOMContentLoaded 事件触发时,仅当DOM加载完成,不包括样式表,图片,flash。

//初始状态,加载数据

function loadAction(){

var el, li;

el = document.getElementById('thelist');

for(var i = 0; i < 10; i++){

li = doument.createElement('li');

li.innerHtml = '初始数据--' + (++generatedCount);

el.appendChild(li, el.childNodes[0]);

};

myScroll.refresh();

};

//下拉刷新当前数据

function pullDownAction(){

setTimeout(function(){

//这里执行刷新操作

myScroll.refresh();

},400);

};

//上拉加载更多数据

function pullUpAction(){

setTimeout(function() {

var el, li;

el = document.getElementById('thelist');

for(var i = 0; i < 10; i++){

li = doument.createElement('li');

li.innerText= '上拉加载--' + (++generatedCount);

el.appendChild(li, el.childNodes[0]);

};

myScroll.refresh();

},400);

}

//ajax

eg:  function pullUpAction(){

setTimeout(function(){

var el, li, i;

document.getElementById("thelist");

//========================

$.ajax({

type: "GET",

url: "LoadMore.aspx",

data: { page: generatedCount },

dataType: "json",

success: function(data){

var json = data;

$(json).each(function(){

li = document.createElement('li');

li.innerHtml = ' XXXXXXXXXXXX';

el.insetBefore(li, el.childNodes[0]);

})

}

});

//==========================

myScroll.refesh();

},1000);

}

</script>

参考搬运代码地址:http://blog.csdn.net/xw505501936/article/details/48975991

H5页面基于iScroll.js插件实现下拉刷新,上拉加载更多的更多相关文章

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

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

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

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

  3. juery下拉刷新,div加载更多元素并添加点击事件(二)

    buffer.append("<div class='col-xs-3 "+companyId+"' style='padding-left: 10px; padd ...

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

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

  5. Android如何定制一个下拉刷新,上滑加载更多的容器

    前言 下拉刷新和上滑加载更多,是一种比较常用的列表数据交互方式. android提供了原生的下拉刷新容器 SwipeRefreshLayout,可惜样式不能定制. 于是打算自己实现一个专用的.但是下拉 ...

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

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

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

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

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

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

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

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

随机推荐

  1. hrbust-1545-基础数据结构——顺序表(2)

    http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1545 基础数据结构——顺序表(2) ...

  2. SniperOJ-leak-advanced-x86-64

    借助DynELF实现无libc的漏洞利用小结 1.leak-advance与leak的区别在于一个可用函数是write,一个可用函数是puts.write比puts更容易利用,虽然write需要的参数 ...

  3. 风格附加css

    #header #blogTitle { background: url("http://images.cnblogs.com/cnblogs_com/aiwuxia/1249780/o_1 ...

  4. ios之UIScrollView

    UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 [java] view plaincopy     CGRect bounds = [ [ UIScreen mainSc ...

  5. Mac OS X下安装Vue脚手架(vue-cli)

    前言 Vue作为前端三大框架(Angular,React,Vue)之一,号称是最简单,最容易上手的框架,同时也是行内的大趋势,还可以用来开发最火的小程序.具有开发快,双向数据流等特点,有些人认为Vue ...

  6. pandas.DataFrame——pd数据框的简单认识、存csv文件

    接着前天的豆瓣书单信息爬取,这一篇文章看一下利用pandas完成对数据的存储. 回想一下我们当时在最后得到了六个列表:img_urls, titles, ratings, authors, detai ...

  7. Python模块之OS,subprocess

    1.os 模块 简述: os 表示操作系统 该模块主要用来处理与系统相关操作 最常用的是文件操作 打开 获取 写入 删除 复制 重命名 常用操作 os.getcwd() : 返回当前文件所在文件夹路径 ...

  8. js对象,数组,字符串的操作

    循环绑定=>变量污染 for (var i = 0;i<lis.length;i++){ lis[i].index = i;#给页面元素对象添加一个任意属性(保留索引的属性index) # ...

  9. 菜鸟的《Linux程序设计》学习—shell script

    1. 认识shell script shell script是利用shell的功能缩写的一个"程序",这个程序是使用纯文本文件,将一些shell的语法与命令(含外部命令)写在里面, ...

  10. 自学入门 Python 优质中文资源索引

    所有资源基于 Python3 版本,全部中文内容,适用于 爬虫 / Web / 数据 方向,每个单元根据学习习惯从 书籍 / 文档 / 视频 中选择一类即可,建议任选一本书籍,然后配合文档类进行学习. ...