技术文章分类(180)

技术随笔(11)

关于iscroll.js的快速入门使用,及注意事项

首先下载iscroll.js http://download.csdn.net/download/li841538513/7131123

 

一、滚动效果

以下代码,除了

background-color:blue;,
background-color:yellow;
这两段代码是我为了让你更好的看到效果写的,其他所有代码都是必须的。
如果你不想看详情的话,行,那就可以直接在class="mainContent"的那个div里面写入你的内容,这里面的内容可以实现滚动效果。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="js/iscroll.js"></script>
<title>title</title>
</head>
<body onload="onload();">
    
    <div id="wrapper" style="width:100%;background-color:blue;position:absolute;top:40px;bottom:40px;overflow:hidden;">
        <div class="mainContent" style="width:90%;margin-left:5%;background-color:yellow;">
            3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>
            2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>
            1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
        </div>
    </div>
</body>
<script type="text/javascript">
    
    var myScroll;
    function loaded() {
        myScroll = new iScroll('wrapper', {
            useTransform: false,
            onBeforeScrollStart: function (e) {
                var target = e.target;
                while (target.nodeType != 1) target = target.parentNode;

                if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'A')
                    e.preventDefault();
            }
        });
    }

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
    document.addEventListener('DOMContentLoaded', loaded, false);

    function onload(){
        myScroll.refresh();
    }
</script>
</html>

 

1、onload()

是为了在页面加载完后,重新刷新myScroll,因为它经常会是页面布局错位,刷新一般就ok了(如果在加载数据之后执行,就可以避免数据很长的情况下,scroll不能正常滑动的情况)

2、onBeforeScrollStart()

这是因为在iscroll里面的元素,凡事带有input或者其他控件,经常会失去点击效果,加上这个则ok

 

注意事项:

1、id="wrapper" 的div:

  overflow:hidden;

  不能设置height

  经常position:absolute;

2、class="mainContent"的div

  不能设置height

 

 

如果你希望你滚动区域是个<ul>,你还希望里面的<li>是可以点击的,那么请用下面这个模板。

注意:这个模板已经完成对touchmove和touchend的冲突的处理(很优秀的模板)

  jquery要用1.7以上的版本。详情:http://www.cnblogs.com/MartinLi841538513/articles/3636883.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<script src="js/iscroll.js"></script>
<script src="js/jquery-1.7.1.min.js"></script>
<title>title</title>
</head>
<body onload="onload();">
    
    <div id="wrapper" style="width:100%;background-color:blue;position:absolute;top:40px;bottom:40px;overflow:hidden;">
        <ul class="mainContent" style="width:90%;margin-left:5%;background-color:yellow;">
            <li>
                3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>3<br>
            </li>
            <li>  
                2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>2<br>
            </li>
            <li>
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
            </li>
        </ul>
    </div>
</body>
<script type="text/javascript">
    var dragging = false;
    $("li").on("touchmove",function(){
        dragging = true;
    });
    $("li").on("touchend",function(){
        if(dragging)
            return;
        else{
            liTouchAction(this);
        }
    });
    $("li").on("touchstart",function(){
        dragging = false;
    });
    
    //这里是li的触发事件
    function liTouchAction(obj){
        alert(1);
    };
</script>
<script type="text/javascript">
    
    var myScroll;
    function loaded() {
        myScroll = new iScroll('wrapper', {
            useTransform: false,
            onBeforeScrollStart: function (e) {
                var target = e.target;
                while (target.nodeType != 1) target = target.parentNode;

                if (target.tagName != 'SELECT' && target.tagName != 'INPUT' && target.tagName != 'TEXTAREA' && target.tagName != 'A')
                    e.preventDefault();
            }
        });
    }

    document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
    document.addEventListener('DOMContentLoaded', loaded, false);

    function onload(){
        myScroll.refresh();
    }
</script>
</html>

 

 

posted @ 2014-04-01 17:37  坤哥MartinLi  阅读(993)  评论(0编辑  收藏  举报