利用jQuery实现**站删除效果

来源:互联网 发布:朱棣如果失败 知乎 编辑:程序博客网 时间:2024/06/06 06:43
jQuery是一款非常强大的Javascript脚本库,我们开发者喜欢jQuery的原因除了它代码简洁外,更多的是因为jQuery插件非常丰富。今天我们用一个示例来解说jQuery是如何实现拖拽的。

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

6.png

2014-8-5 10:36:59 上传
下载附件(50.29 KB)



大家也可以看DEMO演示

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

HTML代码:

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

  1. <div id=”main”>

  2. <div class=”folder”>
  3. <div class=”front”></div>
  4. <div class=”back”></div>
  5. </div>​

  6. <img src=”assets/48px/box.png” style=”top:340px;left:100px;” alt=”box” />
  7. <img src=”assets/48px/calculator.png” style=”top:340px;left:170px;” alt=”calculator” />
  8. <img src=”assets/48px/clipboard.png” style=”top:340px;left:240px;” alt=”clipboard” />
  9. <img src=”assets/48px/console.png” style=”top:340px;left:310px;” alt=”console” />
  10. <img src=”assets/48px/basketball.png” style=”top:340px;left:380px;” alt=”basketball” />
  11. <img src=”assets/48px/facebook.png” style=”top:400px;left:100px;” alt=”facebook” />
  12. <img src=”assets/48px/gift.png” style=”top:400px;left:170px;” alt=”gift” />
  13. <img src=”assets/48px/id_card.png” style=”top:400px;left:240px;” alt=”id card” />
  14. <img src=”assets/48px/imac.png” style=”top:400px;left:310px;” alt=”imac” />
  15. <img src=”assets/48px/system_monitoring.png” style=”top:400px;left:380px;” alt=”system monitoring” />

  16. </div>
复制代码
代码结构比较简单,下面是简单的CSS代码。

CSS代码:

  1. .folder {
  2.     /* This will enable the 3D effect. Decrease this value
  3.      * to make the perspective more pronounced: */

  4.     -webkit-perspective: 800px;
  5.     -moz-perspective: 800px;
  6.     perspective: 800px;

  7.     position: absolute;
  8.     top: 50%;
  9.     left: 50%;
  10.     z-index: 0;

  11.     width: 160px;
  12.     height: 120px;
  13.     margin: -100px 0 0 -60px;
  14. }

  15. .folder div{
  16.     width:150px;
  17.     height:115px;

  18.     background-color:#93bad8;

  19.     /* Enabling 3d space for the transforms */
  20.     -webkit-transform-style: preserve-3d;
  21.     -moz-transform-style: preserve-3d;
  22.     transform-style: preserve-3d;

  23.     /* Enabling a smooth animated transition */
  24.     -webkit-transition:0.5s;
  25.     -moz-transition:0.5s;
  26.     transition:0.5s;

  27.     /* Disable text seleltion on the folder */
  28.     -webkit-user-select: none;
  29.       -moz-user-select: none;
  30.       user-select: none;

  31.     position:absolute;
  32.     top:0;
  33.     left:50%;
  34.     margin-left:-75px;
  35. }

  36. .folder .front{
  37.     border-radius:5px 5px 0 0;

  38.     -moz-transform:rotateX(-30deg);
  39.     -webkit-transform:rotateX(-30deg);
  40.     transform:rotateX(-30deg);

  41.     -moz-transform-origin:50% 100%;
  42.     -webkit-transform-origin:50% 100%;
  43.     transform-origin:50% 100%;

  44.     background-image: -moz-linear-gradient(top, #93bad8 0%, #6c9dc0 85%, #628faf 100%);
  45.     background-image: -webkit-linear-gradient(top, #93bad8 0%, #6c9dc0 85%, #628faf 100%);
  46.     background-image: linear-gradient(top, #93bad8 0%, #6c9dc0 85%, #628faf 100%);

  47.     box-shadow:0 -2px 2px rgba(0,0,0,0.1), 0 1px rgba(255,255,255,0.35) inset;

  48.     z-index:10;

  49.     font: bold 26px sans-serif;
  50.     color: #5A88A9;
  51.     text-align: center;
  52.     text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.1);
  53.     line-height: 115px;
  54. }

  55. .folder .back{
  56.     background-image: -webkit-linear-gradient(top, #93bad8 0%, #89afcc 10%, #5985a5 60%);
  57.     background-image: -moz-linear-gradient(top, #93bad8 0%, #89afcc 10%, #5985a5 60%);
  58.     background-image: linear-gradient(top, #93bad8 0%, #89afcc 10%, #5985a5 60%);

  59.     border-radius:0 5px 0 0;
  60.     box-shadow:0 -1px 1px rgba(0,0,0,0.15);
  61. }

  62. .folder .back:before{
  63.     content:'';
  64.     width:60px;
  65.     height:10px;
  66.     border-radius:4px 4px 0 0;
  67.     background-color:#93bad8;
  68.     position:absolute;
  69.     top:-10px;
  70.     left:0px;
  71.     box-shadow:0 -1px 1px rgba(0,0,0,0.15);
  72. }

  73. .folder .back:after{
  74.     content:'';
  75.     width:100%;
  76.     height:4px;
  77.     border-radius:5px;
  78.     position:absolute;
  79.     bottom:5px;
  80.     left:0px;
  81.     box-shadow:0 4px 8px #333;
  82. }

  83. .folder.open .front{
  84.     -moz-transform:rotateX(-50deg);
  85.     -webkit-transform:rotateX(-50deg);
  86.     transform:rotateX(-50deg);
  87. }

  88. /*----------------------------
  89.     Draggable Icons
  90. -----------------------------*/

  91. #main img{
  92.     position:absolute;
  93.     cursor:move;
  94. }
复制代码
按照上面的CSS定义,删除小图标的**站文件夹的外观是3D的,这个要看你浏览器的3D支持情况。

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

jQuery代码:

  1. $(function() {

  2.     var folder = $("#main .folder"),
  3.         front = folder.find('.front'),
  4.         img = $("#main img"),
  5.         droppedCount = 0;

  6.     img.draggable();

  7.     folder.droppable({
  8.         drop : function(event, ui) {

  9.             // Remove the dragged icon
  10.             ui.draggable.remove();

  11.             // update the counters
  12.             front.text(++droppedCount);

  13.         },

  14.         activate : function(){
  15.             // When the user starts draggin an icon
  16.             folder.addClass('open');
  17.         },

  18.         deactivate : function(){
  19.             // Close the folder
  20.             folder.removeClass('open');
  21.         }
  22.     });
  23. });
复制代码
通过上面的代码,我们就实现了一个基于jQuery的小图标删除**站效果,上面只是核心代码,详细代码大家可以下载源代码来研究。源代码下载>>

via:http://www.cnblogs.com/html5tricks/p/3890789.html
0 0
原创粉丝点击