zoukankan      html  css  js  c++  java
  • draggable,droppable

    *

    1,简单拖拽

    1)html

    <div id="container">
                                        <div id="dragsource"> 
                                            <h3 id="targetMsg">拽我!</h3> 
                                        </div>
                                    </div>
    
    
    <div id="droppable" style="background-color:gray;height:300px;"> 
                                    <p>Can drop! </p> 
                                    </div>  

    开始,height:300没有写px,droppable好像不可以

    2)JQuery

    <script type="text/javascript"> 
    $(function() { 
        $( "#dragsource" ).draggable({ 
            create: function(event,ui) { 
            $(this).find("h3").html("drag create"); //第一次拖动时出现,以后拖动不出现
            }, 
            start: function(event,ui) { 
            $(this).find("h3").html("drag start"); 
            }, 
            drag: function(event,ui) { 
            $(this).find("h3").html("drag drag"); 
            }, 
            stop:function(event,ui){ 
            $(this).find("h3").html("drag stop"); 
            } 
            }); 
    
            $( "#droppable" ).droppable({ 
                create: function(event,ui) { 
                    $(this).find("p").html( "Drop create" ); 
                }, 
                activate: function(event,ui) { 
                    $(this).find("p").html( "Drop here ! activate" ); 
                }, 
                deactivate: function(event,ui) { 
                    $(this).find("p").html( "Drop ! deactivate" ); //与上面的stop共进退好像
                }, 
                over: function(event,ui) { 
                    $( this ).find( "p" ).html( "Oh, Yeah! over" ); 
        
                    }, 
                    out: function(event,ui) { 
                    $( this ).find( "p" ).html( "Don't leave me! out" ); 
        
                    }, 
                drop: function( event, ui ) { 
                $( this ).find( "p" ).html( "I've got it! drop" ); 
                } 
            }); 
    }); 
    </script>    

    其中,droppable的activate方法,是按下鼠标拖动就会激活,(无论是不是在droppable区域)

    实际验证表明:

    对于draggable的对象,

    create只触发一次,以后就是start,stop,如果有drag函数,则几乎看不到start的出现;

    对于droppable的对象,

    deactivate好像和对象的stop差不多

    参考网址:http://www.jb51.net/article/29890.htm

    对于源(source),可以监听的事件包括: 

      create: 在source上应用draggable函数时触发 
      start:开始拖动时触发 
      drag:拖动过程中触发 
      stop:释放时触发 
    对于目标(target),可以监听的事件包括: 
      create: 在target上应用droppable函数时触发 
      activate:如果当前拖动的source可以drop到本target,则触发 
      deactivate:如果可以drop到本target的拖拽停止,则触发 
      over:source被拖动到target上面 
      out:source被拖动离开target 
      drop:source被释放到target 

    2,helper:original,clone

    <script> 
    $(function() { 
    $( "#dragsource" ).draggable({ 
    helper:"clone" 
    }); 
    
    $("#container").droppable({ 
    drop:function(event,ui){ 
    $(this).append($("<p style='position:absolute;left:"+ 
    ui.offset.left+";top:"+ui.offset.top+"'>clone</p>")); 
    //注意,append里面也是$(),这是一个dom元素
    } 
    }); 
    }) 
    </script>
    <div id="dragsource"> 
                                            <h3 id="targetMsg">拽我!</h3> 
                                        </div>
    
    <div id="container" style="background-color:gray;height:300px;"> 
                                    
                                    </div>  

     3,显示拖动的方向

    $( "#dragX" ).draggable({
    axis:"x"
    });
    $( "#dragY" ).draggable({
    axis:"y"
    });

    4,拖动的范围

     //范围是parent,说明只能在div id=draggable1的父元素范围内活动

    $( "#draggable1" ).draggable({
    containment:"parent"    ///其中String可以为parent,document,window
    });
    $( "#draggable2" ).draggable({
    containment:[20,20,300,200]
    });

    5,拖动的手柄

    <div id="draggable"> 
    <p>handle</p> 
    </div> 
    …… 
    <script> 
    $("#draggable").draggable({handle:"p"}); 
    </script> 

    6,droppable指定可以接收哪些元素drop

    $(".selector").droppable({ accept: '.special' }) 

     7,增强用户体验

    $(function() { 
        $( "#draggable2" ).draggable({ revert: "invalid",cursor: "move", cursorAt: { top: 56, left: 56 } }); 
        $( "#droppable" ).droppable({ 
        activeClass: "ui-state-hover", 
        hoverClass: "ui-state-active", 
        drop: function( event, ui ) { 
            $( this ) 
            .addClass( "ui-state-highlight" ) 
            .find( "p" ) 
            .html( "Dropped!" ); 
            } 
        });
    }); 

    *

    <div id="draggable2" class="draggable"> 
                                        <p>I revert when I'm not dropped</p> 
                                        </div> 
                                        <br/>
                                        <div id="droppable" class="droppable"> 
                                        <p>Drop me here</p> 
                                        </div> 
    
    
       <style> 
    .draggable {background-color:green; width: 90px; height: 80px; padding: 5px; float: left; margin: 0 10px 10px 0; font-size: .9em; } 
    .droppable { width: 300px; height: 300px; background-color:red} 
    
    </style>

    *

    *

    有问题在公众号【清汤袭人】找我,时常冒出各种傻问题,然一通百通,其乐无穷,一起探讨


  • 相关阅读:
    洛谷P3400 仓鼠窝(单调栈)
    牛客练习赛65
    2015 HIAST Collegiate Programming Contest] 题解(AK)
    “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛(同步赛)
    POJ 2421 Constructing Roads
    逆序数&&线段树
    HDU-1166 敌兵布阵 (线段树&&树状数组入门)
    Codeforces Round #484 (Div. 2)
    HDU
    HDU 5773 The All-purpose Zero (变形LIS)
  • 原文地址:https://www.cnblogs.com/qingmaple/p/5678648.html
Copyright © 2011-2022 走看看