¡¡¡¡Ö÷Ò³Ãæindex.html:
¡¡¡¡
¡¡¡¡<!doctype html>
¡¡¡¡<html lang="en">
¡¡¡¡<head>
¡¡¡¡<meta charset="utf-8"/>
¡¡¡¡<title>Drag and drop</title>
¡¡¡¡<link rel="stylesheet" href="main.css">
¡¡¡¡<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
¡¡¡¡<script src="jquery-ui-1.9.0.custom.min.js"></script>
¡¡¡¡</head>
¡¡¡¡<body>
¡¡¡¡<div class="container">
¡¡¡¡<section id="product">
¡¡¡¡<ul class="clear">
¡¡¡¡<li data-id="1">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T14CBxXaVzXXbGir7U_013755.jpg_160x160.jpg" alt="">
¡¡¡¡<h3><font color="#8A2BE2">ÎÒÊǵÚһ̨´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="2">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2i06FXa4aXXXXXXXX_!!1128692172.jpg_b.jpg" alt="">
¡¡¡¡<h3><font color="#A52A2A">ÎÒÊǵڶþ̨´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="3">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2odyUXf8bXXXXXXXX_!!629457645.jpg_b.jpg" alt="">
¡¡¡¡<h3><font color="#DEB887">ÎÒÊǵÚÈý̨´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="4">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2OgebXd8cXXXXXXXX_!!441091394.jpg_b.jpg" alt="">
¡¡¡¡<h3><font color="#5F9EA0">ÎÒÊǵÚËĄ̈´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="5">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2TIYaXc4aXXXXXXXX_!!684563508.png_b.jpg" alt="">
¡¡¡¡<h3><font color="#7FFF00">ÎÒÊǵÚÎą̊´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="6">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2uOlZXoRcXXXXXXXX_!!645750852.jpg_b.jpg" alt="">
¡¡¡¡<h3><font color="#D2691E">ÎÒÊǵÚÁų̀´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="7">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2WDSCXalcXXXXXXXX_!!409679289.jpg_b.jpg" alt="">
¡¡¡¡<h3><font color="#6495ED">ÎÒÊÇµÚÆß̨´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡<li data-id="8">
¡¡¡¡<a href="#">
¡¡¡¡<img src="img/T2YOORXeXXXXXXXXXX_!!731577459.jpg_b.jpg" alt="">
¡¡¡¡<h3><font color="#00008B">ÎÒÊǵڰĘ̈´òÓ¡»ú</font></h3>
¡¡¡¡</a>
¡¡¡¡</li>
¡¡¡¡</ul>
¡¡¡¡</section>
¡¡¡¡<aside id="sidebar">
¡¡¡¡<div class="basket">
¡¡¡¡<div class="basket_list">
¡¡¡¡<div class="head">
¡¡¡¡<span class="name">Ãû³Æ</span>
¡¡¡¡<span class="count">ÊýÁ¿</span>
¡¡¡¡</div>
¡¡¡¡<ul>
¡¡¡¡</ul>
¡¡¡¡</div>
¡¡¡¡</div>
¡¡¡¡</aside>
¡¡¡¡</div>
¡¡¡¡<script>
¡¡¡¡$(function () {
¡¡¡¡// jQuery UI Draggable
¡¡¡¡$("#product li").draggable({
¡¡¡¡// brings the item back to its place when dragging is over
¡¡¡¡revert:true,
¡¡¡¡// once the dragging starts, we decrease the opactiy of other items
¡¡¡¡// Appending a class as we do that with CSS
¡¡¡¡drag:function () {
¡¡¡¡$(this).addClass("active");
¡¡¡¡$(this).closest("#product").addClass("active");
¡¡¡¡},
¡¡¡¡// removing the CSS classes once dragging is over.
¡¡¡¡stop:function () {
¡¡¡¡$(this).removeClass("active").closest("#product").removeClass("active");
¡¡¡¡}
¡¡¡¡});
¡¡¡¡// jQuery Ui Droppable
¡¡¡¡$(".basket").droppable({
¡¡¡¡// The class that will be appended to the to-be-dropped-element (basket)
¡¡¡¡activeClass:"active",
¡¡¡¡// The class that will be appended once we are hovering the to-be-dropped-element (basket)
¡¡¡¡hoverClass:"hover",
¡¡¡¡// The acceptance of the item once it touches the to-be-dropped-element basket
¡¡¡¡// For different values http://api.jqueryui.com/droppable/#option-tolerance
¡¡¡¡tolerance:"touch",
¡¡¡¡drop:function (event, ui) {
¡¡¡¡var basket = $(this),
¡¡¡¡move = ui.draggable,
¡¡¡¡itemId = basket.find("ul li[data-id='" + move.attr("data-id") + "']");
¡¡¡¡// To increase the value by +1 if the same item is already in the basket
¡¡¡¡if (itemId.html() != null) {
¡¡¡¡itemId.find("input").val(parseInt(itemId.find("input").val()) + 1);
¡¡¡¡}
¡¡¡¡else {
¡¡¡¡// Add the dragged item to the basket
¡¡¡¡addBasket(basket, move);
¡¡¡¡// Updating the quantity by +1" rather than adding it to the basket
¡¡¡¡move.find("input").val(parseInt(move.find("input").val()) + 1);
¡¡¡¡}
¡¡¡¡}
¡¡¡¡});
¡¡¡¡// This function runs onc ean item is added to the basket
¡¡¡¡function addBasket(basket, move) {
¡¡¡¡basket.find("ul").append('<li data-id="' + move.attr("data-id") + '">'
¡¡¡¡+ '<span class="name">' + move.find("h3").html() + '</span>'
¡¡¡¡+ '<input class="count" value="1" type="text">'
¡¡¡¡+ '<button class="delete">✕</button>');
¡¡¡¡}
¡¡¡¡// The function that is triggered once delete button is pressed
¡¡¡¡$(".basket ul li button.delete").live("click", function () {
¡¡¡¡$(this).closest("li").remove();
¡¡¡¡});
¡¡¡¡});
¡¡¡¡</script>
¡¡¡¡</body>
¡¡¡¡</html>
¡¡¡¡jquery-ui-1.9.0.custom.min.js
¡¡¡¡main.css:
¡¡¡¡
¡¡¡¡/* reset & .clear
¡¡¡¡----------------------------*/
¡¡¡¡* {
¡¡¡¡margin: 0;
¡¡¡¡padding: 0;
¡¡¡¡}
¡¡¡¡.clear:before,
¡¡¡¡.clear:after {
¡¡¡¡content: " ";
¡¡¡¡display: table;
¡¡¡¡}
¡¡¡¡.clear:after { clear: both }
¡¡¡¡.clear { *zoom: 1 }
¡¡¡¡/* MAIN
¡¡¡¡----------------------------*/
¡¡¡¡body {
¡¡¡¡font: normal 12px/1.3 arial, sans-serif;
¡¡¡¡background-color: #eee;
¡¡¡¡}
¡¡¡¡li { list-style: none }
¡¡¡¡a { text-decoration: none }
¡¡¡¡.container {
¡¡¡¡position: relative;
¡¡¡¡width: 920px;
¡¡¡¡margin: 30px auto;
¡¡¡¡}
¡¡¡¡.container #product {
¡¡¡¡position: relative;
¡¡¡¡z-index: 2;
¡¡¡¡float: left;
¡¡¡¡width: 670px;
¡¡¡¡}
¡¡¡¡.container #sidebar {
¡¡¡¡position: relative;
¡¡¡¡z-index: 1;
¡¡¡¡float: right;
¡¡¡¡width: 224px;
¡¡¡¡}
¡¡¡¡/* PRODUCTS
¡¡¡¡----------------------------*/
¡¡¡¡#product ul {
¡¡¡¡width: 680px;
¡¡¡¡margin-left: -10px; }
¡¡¡¡#product ul li {
¡¡¡¡position: relative;
¡¡¡¡float: left;
¡¡¡¡width: 150px;
¡¡¡¡margin: 0 0 10px 10px;
¡¡¡¡padding: 5px;
¡¡¡¡background-color: #fff;
¡¡¡¡border-radius: 4px;
¡¡¡¡-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
¡¡¡¡box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
¡¡¡¡-webkit-transition: -webkit-transform .1s ease;
¡¡¡¡-moz-transition: -webkit-transform .1s ease;
¡¡¡¡-o-transition: -webkit-transform .1s ease;
¡¡¡¡-ms-transition: -webkit-transform .1s ease;
¡¡¡¡transition: transform .1s ease;
¡¡¡¡}
¡¡¡¡#product ul li:hover {
¡¡¡¡background-color: #fff8c1;
¡¡¡¡}
¡¡¡¡#product.active ul li {
¡¡¡¡-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
¡¡¡¡filter: alpha(opacity = 40);
¡¡¡¡opacity: .4;
¡¡¡¡}
¡¡¡¡#product.active ul li.active {
¡¡¡¡z-index: 2;
¡¡¡¡-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
¡¡¡¡filter: alpha(opacity = 100);
¡¡¡¡opacity: 1;
¡¡¡¡-webkit-transform-origin: 50% 50%;
¡¡¡¡-moz-transform-origin: 50% 50%;
¡¡¡¡-o-transform-origin: 50% 50%;
¡¡¡¡-ms-transform-origin: 50% 50%;
¡¡¡¡transform-origin: 50% 50%;
¡¡¡¡-webkit-transform: scale(.6);
¡¡¡¡-moz-transform: scale(.6);
¡¡¡¡-o-transform: scale(.6);
¡¡¡¡-ms-transform: scale(.6);
¡¡¡¡transform: scale(.6);
¡¡¡¡}
¡¡¡¡#product ul li a {
¡¡¡¡display: block;
¡¡¡¡color: #000
¡¡¡¡}
¡¡¡¡#product ul li a h3 {
¡¡¡¡margin-top: 5px;
¡¡¡¡}
¡¡¡¡#product ul li a h3,
¡¡¡¡#product ul li a p {
¡¡¡¡white-space: nowrap;
¡¡¡¡overflow: hidden;
¡¡¡¡-o-text-overflow: ellipsis;
¡¡¡¡-ms-text-overflow: ellipsis;
¡¡¡¡text-overflow: ellipsis;
¡¡¡¡}
¡¡¡¡#product ul li a img { width:150px;height:150px;display: block }
¡¡¡¡/* BASKET
¡¡¡¡----------------------------*/
¡¡¡¡.basket {
¡¡¡¡position: relative;
¡¡¡¡}
¡¡¡¡.basket .basket_list {
¡¡¡¡width: 220px;
¡¡¡¡background-color: #fff;
¡¡¡¡border: 2px dashed transparent;
¡¡¡¡border-radius: 4px;
¡¡¡¡-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
¡¡¡¡box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
¡¡¡¡}
¡¡¡¡.basket.active .basket_list,
¡¡¡¡.basket.hover .basket_list { border-color: #ffa0a3 }
¡¡¡¡.basket.active .basket_list { background-color: #fff8c1 }
¡¡¡¡.basket.hover .basket_list { background-color: #ffa0a3 }
¡¡¡¡/* .head */
¡¡¡¡.basket .head {
¡¡¡¡overflow: hidden;
¡¡¡¡margin: 0 10px;
¡¡¡¡height: 26px;
¡¡¡¡line-height: 26px;
¡¡¡¡color: #666;
¡¡¡¡border-bottom: 1px solid #ddd;
¡¡¡¡}
¡¡¡¡.basket .head .name { float: left }
¡¡¡¡.basket .head .count { float: right }
¡¡¡¡/* .head */
¡¡¡¡.basket ul { padding-bottom: 10px }
¡¡¡¡.basket ul li {
¡¡¡¡position: relative;
¡¡¡¡clear: both;
¡¡¡¡overflow: hidden;
¡¡¡¡margin: 0 10px;
¡¡¡¡height: 26px;
¡¡¡¡line-height: 32px;
¡¡¡¡border-bottom: 1px dashed #eee;
¡¡¡¡}
¡¡¡¡.basket ul li:hover { border-bottom-color: #ccc }
¡¡¡¡.basket ul li span.name {
¡¡¡¡display: block;
¡¡¡¡float: left;
¡¡¡¡width: 165px;
¡¡¡¡font-weight: bold;
¡¡¡¡white-space: nowrap;
¡¡¡¡overflow: hidden;
¡¡¡¡-o-text-overflow: ellipsis;
¡¡¡¡-ms-text-overflow: ellipsis;
¡¡¡¡text-overflow: ellipsis;
¡¡¡¡-webkit-transition: width .2s ease;
¡¡¡¡-moz-transition: width .2s ease;
¡¡¡¡-o-transition: width .2s ease;
¡¡¡¡-ms-transition: width .2s ease;
¡¡¡¡transition: width .2s ease;
¡¡¡¡}
¡¡¡¡.basket ul li:hover span.name { width: 146px }
¡¡¡¡.basket ul li input.count {
¡¡¡¡float: right;
¡¡¡¡margin: 3px 2px 0 0;
¡¡¡¡width: 25px;
¡¡¡¡line-height: 20px;
¡¡¡¡text-align: center;
¡¡¡¡border: 0;
¡¡¡¡border-radius: 3px;
¡¡¡¡background-color: #ddd;
¡¡¡¡}
¡¡¡¡.basket ul li button.delete {
¡¡¡¡position: absolute;
¡¡¡¡right: 30px;
¡¡¡¡top: 3px;
¡¡¡¡-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
¡¡¡¡filter: alpha(opacity = 0);
¡¡¡¡opacity: 0;
¡¡¡¡width: 20px;
¡¡¡¡line-height: 20px;
¡¡¡¡height: 20px;
¡¡¡¡text-align: center;
¡¡¡¡font-size: 11px;
¡¡¡¡border: 0;
¡¡¡¡color: #EE5757;
¡¡¡¡background-color: #eee;
¡¡¡¡border-radius: 3px;
¡¡¡¡cursor: pointer;
¡¡¡¡-webkit-transition: opacity .2s ease;
¡¡¡¡-moz-transition: opacity .2s ease;
¡¡¡¡-o-transition: opacity .2s ease;
¡¡¡¡-ms-transition: opacity .2s ease;
¡¡¡¡transition: opacity .2s ease;
¡¡¡¡}
¡¡¡¡.basket ul li:hover button.delete {
¡¡¡¡-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
¡¡¡¡filter: alpha(opacity = 100);
¡¡¡¡opacity: 1;
¡¡¡¡}
¡¡¡¡.basket ul li button.delete:hover {
¡¡¡¡color: #fff;
¡¡¡¡background-color: #ffa0a3;
¡¡¡¡}
¡¡¡¡.basket ul li button.delete:active {
¡¡¡¡color: #fff;
¡¡¡¡background-color: #EE5757;
¡¡¡¡}