zoukankan      html  css  js  c++  java
  • js实现图片拖动改变顺序

    在web页面中,需要改变多个元素的位置,可以通过元素拖动来实现。HTML5中加入了一个全局属性draggable,通过设置true/false来控制元素是否可拖动。

    下面以图片拖动为例,用jQuery来实现:页面上有多个图片,把一个图片拖动到其他两个图片中间,就可以将这个图片的位置插入到两图之间。

    <!DOCTYPE html>
    <html>
    <head>
    <style>
        .img-div img {
            width:200px;
            height:200px;
            float: left;
        }
        .img-div {
            float: left;
        }
        .drop-left,.drop-right {
            width: 50px;
            height: 200px;
            float: left;
        }
    </style>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            
            // 正在拖动的图片的父级DIV
            var $srcImgDiv = null;
     
            // 开始拖动
            $(".img-div img").bind("dragstart", function() {
                $srcImgDiv = $(this).parent();
            });
     
            // 拖动到.drop-left,.drop-right上方时触发的事件
            $(".drop-left,.drop-right").bind("dragover", function(event) {
                
                // 必须通过event.preventDefault()来设置允许拖放
                event.preventDefault();
            });
     
            // 结束拖动放开鼠标的事件
            $(".drop-left").bind("drop", function(event) {
                event.preventDefault();
                if($srcImgDiv[0] != $(this).parent()[0]) {
                    $(this).parent().before($srcImgDiv);
                }
            });
            $(".drop-right").bind("drop", function(event) {
                event.preventDefault();
                if($srcImgDiv[0] != $(this).parent()[0]) {
                    $(this).parent().after($srcImgDiv);
                }
            });
     
     
        });
    </script>
    </head>
    <body>
        <div class="img-div">
            <div class="drop-left"></div>
            <img src="http://photos.tuchong.com/38538/f/6864556.jpg" draggable="true">
            <div class="drop-right"></div>
        </div>
        <div class="img-div">
            <div class="drop-left"></div>
            <img src="http://photos.tuchong.com/349669/f/6695960.jpg" draggable="true">
            <div class="drop-right"></div>
        </div>
        <div class="img-div">
            <div class="drop-left"></div>
            <img src="http://photos.tuchong.com/349669/f/6683901.jpg" draggable="true">
            <div class="drop-right"></div>
        </div>
        <div class="img-div">
            <div class="drop-left"></div>
            <img src="http://photos.tuchong.com/349669/f/5121337.jpg" draggable="true">
            <div class="drop-right"></div>
        </div>
    </body>
    </html>

    dragstart是开始拖动元素的事件,dragover是拖动到元素上方的事件,drop是拖动结束松开鼠标的事件。
    draggable="true"表示img元素是可以拖动的,不过实际上img默认就是可拖动的,所以这个属性也可以去掉,如果要拖动div元素那么就需要设置draggable="true"。

    class为drop-left和drop-right的div元素放在图片的左右侧,用于接收其他图片拖动到这个位置。


    ————————————————
    版权声明:本文为CSDN博主「叉叉哥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xiao__gui/article/details/25695025

  • 相关阅读:
    点击链接,取得href的值,但是不转向
    启动和停止MySQL服务
    QuickText for Notepad++
    otepad++ 配置 支持jquery、html、css、javascript、php代码提示
    windows 2008+IIS7+Mysql+PHP5.5 + FastCGI环境配置
    Jquery异步请求数据实例代码
    JS读取本地文件及目录的方法
    c#.net从ftp下载文件到本地
    怎样才能充分利用SQL索引
    jQuery EasyUI Datagrid性能优化专题
  • 原文地址:https://www.cnblogs.com/zinging/p/12869446.html
Copyright © 2011-2022 走看看