美文网首页程序员学而村
share_02 移动端拼图小demo

share_02 移动端拼图小demo

作者: Teresa_Chen | 来源:发表于2018-01-19 17:37 被阅读0次

01-先上个效果图

效果图.PNG

02-主要工具

a.zepto.js
b.fx.js
c.selector.js
d.touch.js

简单介绍一下zepto

Zepto modules
module default description
zepto Core module; contains most methods
event Event handling via on() & off()
ajax XMLHttpRequest and JSONP functionality
form Serialize & submit web forms
ie Add support for Internet Explorer 10+ on desktop and Windows Phone 8.
detect Provides $.os and $.browser information
fx The animate() method
fx_methods Animated show, hide, toggle, and fade*() methods.
assets Experimental support for cleaning up iOS memory after removing image elements from the DOM.
data A full-blown data() method, capable of storing arbitrary objects in memory.
deferred Provides $.Deferred promises API. Depends on the "callbacks" module.
When included, $.ajax() supports a promise interface for chaining callbacks.
callbacks Provides $.Callbacks for use in "deferred" module.
selector Experimental jQuery CSS extensions support for functionality such as $('div:first') and el.is(':visible').
touch Fires tap– and swipe–related events on touch devices. This works with both touch (iOS, Android) and pointer events (Windows Phone).
gesture Fires pinch gesture events on touch devices
stack Provides andSelf & end() chaining methods
ios3 String.prototype.trim and Array.prototype.reduce methods (if they are missing) for compatibility with iOS 3.x.

03-主要代码

html部分
     <!DOCTYPE html>
    <html>
<head lang="en">
<meta charset="UTF-8">
<meta name="viewport"
      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"/>
<title></title>
<link rel="stylesheet" href="css/cssreset-min.css"/>
</head>
<body>
<div class="box">
<div class="p1"></div>
<div class="p2"></div>
<div class="p3"></div>
<div class="p4"></div>
<div class="p5"></div>
<div class="p6"></div>
<div class="p7"></div>
<div class="p8"></div>
</div>
<script src="lib/zepto.min.js"></script>
<script src="lib/fx.js"></script>
<script src="lib/selector.js"></script>
<script src="lib/touch.js"></script>
<script src="js/index.js"></script>
</body>
</html>
css部分
  *{
        box-sizing: border-box;
        touch-action: none;
    }
    .box {
        width: 300px;
        height: 300px;
        background-color: #d5ddff;
        margin: 30px auto;
        position: relative;
    }
    .box div {
        width: 100px;
        height: 100px;
        position: absolute;
    }

    .box div:nth-child(1){
        top:0;
        left:0;
        background: url('img/timg_6.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
    .box div:nth-child(2){
        top:0;
        left:100px;
        background: url('img/timg_2.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
    .box div:nth-child(3){
        top:0;
        left:200px;
        background: url('img/timg_1.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
    .box div:nth-child(4){
        top:100px;
        left:0;
        background: url('img/timg_4.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
    .box div:nth-child(5){
        top:100px;
        left:100px;
        background: url('img/timg_3.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
    .box div:nth-child(6){
        top:100px;
        left: 200px;
        background: url('img/timg_7.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;

    }
    .box div:nth-child(7){
        top:200px;
        left:0;
        background: url('img/timg_5.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
    .box div:nth-child(8){
        top:200px;
        left: 100px;
        background: url('img/timg_0.jpg') 0 0 no-repeat;
        -webkit-background-size: cover;
    }
js部分
$(function () {
var divs = $('.box div');
var posData = [];
for (var i = 0; i < divs.length; i++) {
    var left = $(divs[i]).position().left;
    var top = $(divs[i]).position().top;
    var posObj = {left: left, top: top};
    posData.push(posObj);           //{left: 100, top: 0}
}

var dirR = 1;
var dirD = 1;
divs.swipeRight(function () {
    dirR = 1;
    var index = $(this).index();
    var tempL = $(this).position().left;
    var tempT = $(this).position().top;
    tempL += 100*dirR;
    if (tempL <= 200) {
        for (var i = 0; i < posData.length; i++) {
            var x = posData[i].left;
            var y = posData[i].top;
            if (tempL == x && tempT == y) {
                return;
            }
        }
        $(this).stop().animate({
            left: tempL
        })
        posData.splice(index, 1, {left: tempL, top: tempT});

    } else {
        return;
    }
})
divs.swipeLeft(function(){
    dirR = -1;
    var index = $(this).index();
    var tempL = $(this).position().left;
    var tempT = $(this).position().top;
    tempL += 100*dirR;
    if(tempL >= 0){
        for (var i = 0; i < posData.length; i++) {
            var x = posData[i].left;
            var y = posData[i].top;
            if (tempL == x && tempT == y) {
                return;
            }
        }
        $(this).stop().animate({
            left: tempL
        })
        posData.splice(index, 1, {left: tempL, top: tempT});
    }else {
        return;
    }
})
divs.swipeUp(function(){
    dirD = -1;
    var index = $(this).index();
    var tempL = $(this).position().left;
    var tempT = $(this).position().top;
    tempT += 100*dirD;
    if(tempT >= 0){
        for (var i = 0; i < posData.length; i++) {
            var x = posData[i].left;
            var y = posData[i].top;
            if (tempL == x && tempT == y) {
                return;
            }
        }
        $(this).stop().animate({
            top: tempT
        })
        posData.splice(index, 1, {left: tempL, top: tempT});
    }else {
        return;
    }
})
divs.swipeDown(function () {
    dirD = 1;
    var index = $(this).index();
    var tempL = $(this).position().left;
    var tempT = $(this).position().top;
    tempT += 100*dirD;
    if(tempT <= 200){
        for (var i = 0; i < posData.length; i++) {
            var x = posData[i].left;
            var y = posData[i].top;
            if (tempL == x && tempT == y) {
                return;
            }
        }
        $(this).stop().animate({
            top: tempT
        })
        posData.splice(index, 1, {left: tempL, top: tempT});
    }else {
        return;
    }
})
})

相关文章

网友评论

    本文标题:share_02 移动端拼图小demo

    本文链接:https://www.haomeiwen.com/subject/aacaoxtx.html