【jquery 交换位置】jquery交换Div位置

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

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>jquery交换Div位置</title>
</head>
<body>
    <div id="top" style="width:100%;height:100px">
        <div id="topDiv" style="width:100%;height:100%;background-color:lightcoral;float:left;"></div>
        <div style="clear:both"></div>
    </div>
    <div style="width:100%;height:1000px">
        <div id="left" style="width:10%;height:100%;background-color:lightgreen;float:left;"></div>
        <div id="right" style="width: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>

原文地址:https://www.cnblogs.com/kikyoqiang/p/12394759.html

时间: 2024-11-09 00:29:47

【jquery 交换位置】jquery交换Div位置的相关文章

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

前端网页开发中我们经常会遇到需要动态置换两个DIV元素的位置,常见的思路大多是不考虑原始位置,直接采用append或者appendTo方式将两元素进行添加,该法未考虑原始位置,仅会添加为元素的最后一子元素. 今天将给大家介绍一种位置交换方式(判断兄弟元素是否存在),并添加简单的css效果. 设计思路 判断元素后边是否存在兄弟元素:存在则通过insertBefore方法将另一元素添加至其兄弟元素前,否则则直接采用appendTo方法添加至父元素. 核心代码 1.判断其后边是否存在兄弟元素 1 fu

JQuery实现点击div以外的位置隐藏该div窗口

简单示例代码: <body> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script type="text/javascript"> $(function(){ $(document).bind("click&

JQuery实现的模块交换动画效果

<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <title>JQuery实现的模块交换动画效果</title> <meta name="Keywords" content="jquery,模块,交换,动画,ja

java实现原数组根据下标分隔成两个子数组并且在原数组中交换两个子数组的位置

此类实现:输出一行数组数据,根据输入的下标,以下标位置为结束,将原数组分割成两组子数组.并交换两个子数组的位置,保持子数组中的元素序号不变.如:原数组为7,9,8,5,3,2 以下标3为分割点,分割为子数组一:7,9,8,5.和子数组二:3,2.经过交换算法后的结果应为:3,2,7,9,8,5 有两种交换算法<1>前插法:将子数组3,2另存在一个临时数组中,将原数组7,9,8,5,3,2每一位向后移两个位置  再将子数组3,2插入到移动好元素位置的原数组中.<2>逆置法:将原数组7

Fixed固定位置的悬浮div层

固定位置的Js悬浮窗口,为了便于查看效果,测试时用随机函数产生一定的内容,与浮动窗口的控制无关,不想用可以去掉.代码内有注释. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999

JQuery遍历指定id的div name值的几种方法

JQuery遍历指定id的div name值的几种方法:方法一 $("#div1 :text").each(function () { var this_id = $(this).attr("id"); alert(this_id); }

jQuery 節點替換 &amp;&amp; DIV 滚动条美化特效

使用 replaceWith 替換節點后,在原來節點上的事件都會被去除. 所以,如果要保留節點上的事件,可以只替換節點內的內容達到目的!不替換已經綁定事件的節點. .read_box { height:480px; background:#141414; position:absolute; z-index:99999; top:25%; width:80%; left:10%; z-index:-999; /* 要使用scrollbar.js 文件,這個容器就必須設置display為block

Jquery(一) 初识Jquery,简单使用Jquery。

距离上一篇博文好像隔了很久的时间了额.好像是堕落了一阵子,前些时间去杭州找工作,被租房的事情给搞懵逼了,然后就回来了,回来在修炼一个月在出去奋斗把!加油,这两天把jquery,easyui和bootstrap这几个东西给记录一下,之前就学过,但是没记录下来,所以忘的很快,又没地方去复习,所以还是记录记录这些知识点.以便将来查看复习. --WH 一.什么是Jquery? 其实超级简单,不要把它想的太难了,Jquery就是一个js(javascript)类库. 1.1.什么是js类库? [JavaS

jQuery验证空间jquery.validate.js使用说明+中文API

--------转载自http://www.cnblogs.com/hejunrex/archive/2011/11/17/2252193.html jQuery plugin: Validation 使用说明 官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 转载自:http://blog.sina.com.cn/s/blog_608475eb0100h3h1.html 一.导入js库 <script src=