• 利用jQuery实现回收站删除效果


    jQuery是一款非常强大的Javascript脚本库,我们开发者喜欢jQuery的原因除了它代码简洁外,更多的是因为jQuery插件非常丰富。今天我们用一个示例来解说jQuery是如何实现拖拽的。

    利用jQuery实现拖拽非常简单,我们直接可以利用jQuery内部封装的拖拽接口即可简单实现在网页上拖拽任意元素。今天我们就利用jQuery的这一特性来实现一个拖拽删除桌面小图标的功能,就像操作系统的回收站一样,我们只需要拖动应用图标至垃圾箱即可删除这个图标,具体可以看下面的DEMO演示。

    jquery-drag-delete-icon

    大家也可以看DEMO演示

    下面来简单介绍一下实现这款jQuery拖拽删除小图标的方法流程,主要包括HTML代码、CSS3代码以及jQuery代码。

    HTML代码:

    HTML代码主要定义了一个回收站文件夹的容器,以及各个小图标的图片。

    <div id=”main”>
    
    <div class=”folder”>
    <div class=”front”></div>
    <div class=”back”></div>
    </div><img src=”assets/48px/box.png” style=”top:340px;left:100px;” alt=”box” />
    <img src=”assets/48px/calculator.png” style=”top:340px;left:170px;” alt=”calculator” />
    <img src=”assets/48px/clipboard.png” style=”top:340px;left:240px;” alt=”clipboard” />
    <img src=”assets/48px/console.png” style=”top:340px;left:310px;” alt=”console” />
    <img src=”assets/48px/basketball.png” style=”top:340px;left:380px;” alt=”basketball” />
    <img src=”assets/48px/facebook.png” style=”top:400px;left:100px;” alt=”facebook” />
    <img src=”assets/48px/gift.png” style=”top:400px;left:170px;” alt=”gift” />
    <img src=”assets/48px/id_card.png” style=”top:400px;left:240px;” alt=”id card” />
    <img src=”assets/48px/imac.png” style=”top:400px;left:310px;” alt=”imac” />
    <img src=”assets/48px/system_monitoring.png” style=”top:400px;left:380px;” alt=”system monitoring” />
    
    </div>

    代码结构比较简单,下面是简单的CSS代码。

    CSS代码:

    .folder {
        /* This will enable the 3D effect. Decrease this value 
         * to make the perspective more pronounced: */
    
        -webkit-perspective: 800px;
        -moz-perspective: 800px;
        perspective: 800px;
    
        position: absolute;
        top: 50%;
        left: 50%;
        z-index: 0;
    
        width: 160px;
        height: 120px;
        margin: -100px 0 0 -60px;
    }
    
    .folder div{
        width:150px;
        height:115px;
    
        background-color:#93bad8;
    
        /* Enabling 3d space for the transforms */
        -webkit-transform-style: preserve-3d;
        -moz-transform-style: preserve-3d;
        transform-style: preserve-3d;
    
        /* Enabling a smooth animated transition */
        -webkit-transition:0.5s;
        -moz-transition:0.5s;
        transition:0.5s;
    
        /* Disable text seleltion on the folder */
        -webkit-user-select: none;
          -moz-user-select: none;
          user-select: none;
    
        position:absolute;
        top:0;
        left:50%;
        margin-left:-75px;
    }
    
    .folder .front{
        border-radius:5px 5px 0 0;
    
        -moz-transform:rotateX(-30deg);
        -webkit-transform:rotateX(-30deg);
        transform:rotateX(-30deg);
    
        -moz-transform-origin:50% 100%;
        -webkit-transform-origin:50% 100%;
        transform-origin:50% 100%;
    
        background-image: -moz-linear-gradient(top, #93bad8 0%, #6c9dc0 85%, #628faf 100%);
        background-image: -webkit-linear-gradient(top, #93bad8 0%, #6c9dc0 85%, #628faf 100%);
        background-image: linear-gradient(top, #93bad8 0%, #6c9dc0 85%, #628faf 100%);
    
        box-shadow:0 -2px 2px rgba(0,0,0,0.1), 0 1px rgba(255,255,255,0.35) inset;
    
        z-index:10;
    
        font: bold 26px sans-serif;
        color: #5A88A9;
        text-align: center;
        text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.1);
        line-height: 115px;
    }
    
    .folder .back{
        background-image: -webkit-linear-gradient(top, #93bad8 0%, #89afcc 10%, #5985a5 60%);
        background-image: -moz-linear-gradient(top, #93bad8 0%, #89afcc 10%, #5985a5 60%);
        background-image: linear-gradient(top, #93bad8 0%, #89afcc 10%, #5985a5 60%);
    
        border-radius:0 5px 0 0;
        box-shadow:0 -1px 1px rgba(0,0,0,0.15);
    }
    
    .folder .back:before{
        content:'';
        width:60px;
        height:10px;
        border-radius:4px 4px 0 0;
        background-color:#93bad8;
        position:absolute;
        top:-10px;
        left:0px;
        box-shadow:0 -1px 1px rgba(0,0,0,0.15);
    }
    
    .folder .back:after{
        content:'';
        width:100%;
        height:4px;
        border-radius:5px;
        position:absolute;
        bottom:5px;
        left:0px;
        box-shadow:0 4px 8px #333;
    }
    
    .folder.open .front{
        -moz-transform:rotateX(-50deg);
        -webkit-transform:rotateX(-50deg);
        transform:rotateX(-50deg);
    }
    
    /*----------------------------
        Draggable Icons
    -----------------------------*/
    
    #main img{
        position:absolute;
        cursor:move;
    }

    按照上面的CSS定义,删除小图标的回收站文件夹的外观是3D的,这个要看你浏览器的3D支持情况。

    最后是最重要的jQuery代码,真正实现了鼠标拖拽图标,并将其放入回收站,这里引用了jQuery UI的脚本库,熟悉jQuery的朋友应该对jQuery UI不会陌生,这里不再赘述。

    jQuery代码:

    $(function() {
    
        var folder = $("#main .folder"),
            front = folder.find('.front'),
            img = $("#main img"),
            droppedCount = 0;
    
        img.draggable();
    
        folder.droppable({
            drop : function(event, ui) {
    
                // Remove the dragged icon
                ui.draggable.remove();
    
                // update the counters
                front.text(++droppedCount);
    
            },
    
            activate : function(){
                // When the user starts draggin an icon
                folder.addClass('open');
            },
    
            deactivate : function(){
                // Close the folder
                folder.removeClass('open');
            }
        });
    });

    通过上面的代码,我们就实现了一个基于jQuery的小图标删除回收站效果,上面只是核心代码,详细代码大家可以下载源代码来研究。源代码下载>>

  • 相关阅读:
    (数据科学学习手札48)Scala中的函数式编程
    Java中的集合(十三) 实现Map接口的Hashtable
    Java中的集合(十二) 实现Map接口的WeakHashMap
    Java中的集合(十一) 实现Map接口的TreeMap
    Java集合(十)实现Map接口的HashMap
    Java集合(九)哈希冲突及解决哈希冲突的4种方式
    Java集合(八)哈希表及哈希函数的实现方式
    Java中的集合(七)双列集合顶层接口------Map接口架构
    Java中的集合(六)继承Collection的Set接口
    Java中的集合(五)继承Collection的List接口
  • 原文地址:https://www.cnblogs.com/html5tricks/p/3890789.html
Copyright © 2020-2023  润新知