zoukankan      html  css  js  c++  java
  • 【jquery 交换位置】jquery交换Div位置

    Jquery 动态交换两个div位置并添加Css动画效果

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>jquery交换Div位置</title>
    </head>
    <body>
        <div id="top" style="100%;height:100px">
            <div id="topDiv" style="100%;height:100%;background-color:lightcoral;float:left;"></div>
            <div style="clear:both"></div>
        </div>
        <div style="100%;height:1000px">
            <div id="left" style="10%;height:100%;background-color:lightgreen;float:left;"></div>
            <div id="right" style="90%;height:100%;background-color:lightgray;float:left;">
                <h1>&nbsp;&nbsp;<a id="changeDiv" href="javascript:;">交换</a></h1>
            </div>
            <div style="clear:both"></div>
        </div>
    
    
        <script type="text/javascript" src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
        <script type="text/javascript">
            $(function () {
                $("#changeDiv").click(function () {
                    changePosition($("#topDiv"), $("#left"));
                });
            });
            function changePosition(select1, select2) {
                var removeDiv1 = select1;
                var removeDiv2 = select2;
                var appendToObj1 = hasBorther(removeDiv1);
                var appendToObj2 = hasBorther(removeDiv2);
                addCartoon(removeDiv1, removeDiv2);//添加动画
                //移动两个容器
                removeDiv(appendToObj1, removeDiv2);
                removeDiv(appendToObj2, removeDiv1);
            }
    
            //判断其后边是否存在兄弟元素
            function hasBorther(va1) {
                if (va1.next()[0]) {//兄弟元素
                    return { bor: va1.next() };
                } else {
                    return { par: va1.parent() };//父元素
                }
            }
            //保证位置正确
            function removeDiv(app, Div) {
                if (app.bor) {//兄弟元素
                    Div.insertBefore(app.bor);
                } else {
                    Div.appendTo(app.par);
                }
            }
    
            //移动时之前------添加动画
            function addCartoon(a, b) {
                var clearTransform = function (Div, time) {
                    setTimeout(function () {
                        Div.css({ 'transform': 'inherit', '-webkit-transform': 'inherit' });
                    }, time)
                }
                //记录两容器原始高宽
                var oldOpt = { ax: a.width(), ay: a.height(), bx: b.width(), by: b.height() };
    
                //获取两容器屏幕位置
                var a_pos = a.offset();
                var b_pos = b.offset();
                //获取两容器偏移值
                var offset_x = a_pos.left - b_pos.left;
                var offset_y = a_pos.top - b_pos.top;
    
                //第一个花括号里面是动画内容,可以为空,但不能省去中括号
                a.animate({}, function () {
                    var offset_x_ = -offset_x; //偏移值取反
                    var offset_y_ = -offset_y;
                    var transformStr = 'rotate(360deg) translate(' + offset_x_ + 'px,' + offset_y_ + 'px)';
                    a.css({ 'width': oldOpt.bx + 'px', 'height': oldOpt.by + 'px', 'transform': transformStr, '-webkit-transform': transformStr });
                    clearTransform(a, 0);
                })
    
                b.animate({}, function () {
                    var transformStr = 'rotate(360deg) translate(' + offset_x + 'px,' + offset_y + 'px)';
                    b.css({ 'width': oldOpt.ax + 'px', 'height': oldOpt.ay + 'px', 'transform': transformStr, '-webkit-transform': transformStr });
                    clearTransform(b, 0);
                })
            }
    
            function changePosition2() {
                var select1 = $('#select1');
                var select2 = $('#select2');
                if (select1.val() != select2.val()) {//不同元素  位置交换
                    var removeDiv1 = $('#' + select1.val());
                    var removeDiv2 = $('#' + select2.val());
                    var appendToObj1 = hasBorther(removeDiv1);
                    var appendToObj2 = hasBorther(removeDiv2);
                    addCartoon(removeDiv1, removeDiv2);//添加动画
                    //移动两个容器
                    removeDiv(appendToObj1, removeDiv2);
                    removeDiv(appendToObj2, removeDiv1);
    
                } else {
                    alert('请选择不同元素交换位置!');
                }
            }
        </script>
    </body>
    </html>
  • 相关阅读:
    AdaBoost
    svm算法
    DBSCAN算法
    聚类算法分类
    EM算法
    ios开发中使用FMDB
    eclipse配置mahout
    【MyBatis】Mapper XML 文件
    MyBatis Generator的使用
    IntelliJ IDEA 创建 Maven简单项目
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/12394759.html
Copyright © 2011-2022 走看看