Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

Appframework3.0下非主页实现iscroll

$
0
0

今天跟大家讲的是在Appframework3.0下实现iscroll,可能这里很多人觉得没有什么好讲的,因为这个插件在网上被大家琢磨的太多了,当然那些相同的就不做详细说明了,主要说下不同的地方。
在这里简单介绍下我自己理解的Appframework3.0,其实说白了,它只有一个页面,就是index.html,然后很多pannel,基本上不会有页面刷新这个动作,一般是刷新某个pannel的数据,我这里讲的就是如何在非主页下面实现iscrool。
关于页面间切换触发的函数在上一讲已经说过了,点击进入
iscroll5官网
让大家看下效果图:
最新动态

我这里贴主要代码说明:

css样式

#wrapper {
    position: absolute;
    z-index: 1;
    top: 0px;
    bottom: 0px;
    left: 0;
    width: 100%;
    background: #ccc;
    overflow: hidden;
}

#scroller {
    position: absolute;
    z-index: 1;
    -webkit-tap-highlight-color: rgba(0,0,0,0);
    width: 100%;
    -webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    -webkit-text-size-adjust: none;
    -moz-text-size-adjust: none;
    -ms-text-size-adjust: none;
    -o-text-size-adjust: none;
    text-size-adjust: none;
}

#scroller ul {
    list-style: none;
    padding: 0;
    margin: 0;
    width: 100%;
    text-align: left;
}

#scroller li {
    padding: 0 10px;
    height: 60px;
    line-height: 23px;
    border-bottom: 1px solid #ccc;
    border-top: 1px solid #fff;
    background-color: #fafafa;
    font-size: 14px;
}
#scroller li a{ text-decoration: none; color: black}
#scroller li p{}
#scroller li p b{ font-weight: normal;color: #d8d8d8}
#scroller li p b.pdright1{padding-right: 15px;}
#scroller li p b.right{ float: right}
#scroller li p b.t{ color: #d8d8d8}
#pullDown,#pullUp,.pulldown-tips{
    height:40px;
    line-height:40px;
    text-align:center;
}
.pulldown-tips{
    position:absolute;
    top:-40px;
    left:0;
    width:100%;
}

css样式基本没什么要讲的了。

js代码
/****下拉代码开始***/
function setScrollHeight() {
    var height=$(".ScrollList").height();
    var lastHeight=height-270+'px';
    $(".ArtList").css("height",lastHeight);
}
function load () {
    var myScroll,
        pullDown = $("#pullDown"),
        pullUp = $("#pullUp"),
        pullDownLabel = $(".pullDownLabel"),
        pullUpLabel = $(".pullUpLabel"),
        container = $('#list'),
        loadingStep = 0;//加载状态0默认,1显示加载状态,2执行加载数据,只有当为0时才能再次加载,这是防止过快拉动刷新

    pullDown.hide();
    pullUp.hide();

    myScroll = new IScroll("#wrapper", {
        scrollbars: true,
        mouseWheel: false,
        interactiveScrollbars: true,
        shrinkScrollbars: 'scale',
        fadeScrollbars: true,
        scrollY:true,
        probeType: 2,
        bindToWrapper:true
    });
    myScroll.on("scroll",function(){
        if(loadingStep == 0 && !pullDown.attr("class").match('refresh|loading') && !pullUp.attr("class").match('refresh')){
            if(this.y > 60){//下拉刷新操作
                $(".pulldown-tips").hide();
                pullDown.addClass("refresh").show();
                pullDownLabel.text("松手刷新数据");
                loadingStep = 1;
                myScroll.refresh();
            }else if(this.y < (this.maxScrollY - 14)){//上拉加载更多
                pullUp.addClass("refresh").show();
                pullUpLabel.text("正在载入");
                loadingStep = 1;
                pullUpAction();
            }
        }
    });
    myScroll.on("scrollEnd",function(){
        if(loadingStep == 1){
            if( pullDown.attr("class").match("refresh") ){//下拉刷新操作
                pullDown.removeClass("refresh").addClass("loading");
                pullDownLabel.text("正在刷新");
                loadingStep = 2;
                pullDownAction();
            }
        }
    });

    function pullDownAction(){
        setTimeout(function(){
            var li, i;
            for (i = 0,li = ""; i < 3; i++) {
                var date = new Date();
                li +="<li><a href=\"#\">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a><p><b class=\"t\">考生寄语</b><b class=\"right\">"+date.pattern("yyyy-MM-dd")+"</b><b class=\"right pdright1\">莫菲"+i+"</b></p></li>"
            }
            container.prepend(li);
            pullDown.attr('class','').hide();
            myScroll.refresh();
            loadingStep = 0;
            $(".pulldown-tips").show();
        },1000);
    }
    function pullUpAction(){
        setTimeout(function(){
            var li, i;
            for (i = 0,li = ""; i < 3; i++) {
                var date = new Date();
                li +="<li ><a href=\"#\">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a><p><b class=\"t\">考生寄语</b><b class=\"right\">"+date.pattern("yyyy-MM-dd")+"</b><b class=\"right pdright1\">莫菲"+i+"</b></p></li>"
            }
            container.append(li);
            pullUp.attr('class','').hide();
            myScroll.refresh();
            loadingStep = 0;
        },1000);
    }

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
}
/****下拉代码结束***/

这里有两个函数setScrollHeight,load ,setScrollHeight是为了设置全屏,一般来说很少会有全屏的下拉上拉刷新数据,除非是资讯类的app,这里我就是先获取页面的高度计算出剩下高度;load就是下拉上拉刷新数据的方法咯(这里是从其他地方复制粘贴出来了,就不多说)。

最后贴我觉得比较重要的代码,这里我也研究了很久才研究出来的。

html代码
 <div class="panel ScrollList" data-title="最新动态" id="notice" data-load="Zuixindongtailoaded">
 ....
 <div id="wrapper">
                    <div id="scroller">
                    <div id="pullDown" class=""><div class="pullDownLabel"></div></div>
                    <div class="pulldown-tips">下拉刷新</div>
                    <ul id="list">
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                        <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b>考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                        <li><a href="#">一分耕耘,一分收获,未必;九分耕耘,会有收获,一定!</a>
                            <p><b class="t">考生寄语</b><b class="right">2017-04-19</b><b class="right pdright1">莫菲</b></p></li>
                    </ul>
                    <div id="pullUp" class="">
                        <div class="pullUpLabel">加载更多</div>
                    </div>
                    </div>
                    </div>
 ....
 </div>
js代码
<script language="JavaScript" type="text/javascript">
   function Zuixindongtailoaded() {
        setScrollHeight(); //设置高度
        load ();//加载上拉下拉刷新数据方法
    }
</script>

我这里主要讲的就是data-load=”Zuixindongtailoaded” 这个就是该panel加载的时候执行的方法,一般iscroll讲的都是写在 ,我这里测试写在body里面上拉下拉刷新数据效果一直不出来,大家可以尝试尝试,也可能有其他的方法。

作者:mofijeck 发表于2017/4/19 20:51:54 原文链接
阅读:59 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>