Ajax Loader
×
HTML
<script class="text/javascript" src="http://code.jquery.com/jquery-git.js"></script>
1
<script class="text/javascript" src="http://code.jquery.com/jquery-git.js"></script>
2
<script class="text/javascript" src="http://code.jquery.com/ui/1.9.0/jquery-ui.js"></script>
3
<script class="text/javascript" src="https://raw.github.com/furf/jquery-ui-touch-punch/master/jquery.ui.touch-punch.min.js"></script>
4
<link href='http://fonts.googleapis.com/css?family=Archivo+Black' rel='stylesheet' type='text/css'>
5
 
6
<h1>Big Bold and New.</h1>
7
<div class="stack">
8
  <div class="row"></div>
9
  <div class="row"></div>
10
</div>
11
<div class="spot"><div class="place"></div></div>
12
<div class="spot"><div class="place"></div></div>
 
CSS
@gray: #D5D3D0;
1
@gray: #D5D3D0;
2
body { background-color: @gray; }
3
 
4
h1 { font-family: "Segoe UI"; color: #302E2F; font-size: 4.6em; font-weight: normal; }
5
 
6
 
7
/*PIECES*/
8
@black: #302E2F; @blue: #00C8FF; @red: #ED1C24; @pink: #EC008C; @green: #56A02B;
9
.black { color: @black; }
10
.blue  { color: @blue; }
11
.red   { color: @red; }
12
.green { color: @green; }
13
.empty { color: rgba(0,0,0,0); }
14
 
15
@pbc: beige;
16
@ph: 40px;
17
@pw: 26px;
18
@pp: 3px;
19
@pm: 1px;
20
@prh: @ph+(@pp+@pm)*2;
21
@prw: @pw+(@pp+@pm)*2;
22
 
23
.piece {
24
  display: inline-block;
25
  background-color: @pbc;
26
  border-radius: 2px;
27
  height: @ph;
28
  width: @pw;
29
  text-align: center;
30
  text-shadow: 1px 1px #FFFFFF;
31
  padding: @pp;
32
  cursor: pointer;
33
  border-radius: @pp;
34
  font-size: 1em;
35
  font-family: 'Archivo Black', 'Arial Black'; 
36
  margin: @pm;
37
  user-select: none;
38
}
39
.piece:after { position: relative; text-align: center; top: -10px; content: "●"; }
40
.empty:after { position: relative; text-align: center; top: -10px; content: "_"; }
41
.empty { text-shadow: 0px 0px rgba(0,0,0,0); }
42
.piece {
43
    border-top: 2px solid white;
44
    border-left: 2px solid white;
45
    border-right: 2px solid gray;
46
    border-bottom: 2px solid gray;
47
}
48
.piece.ui-draggable-dragging { box-shadow: 1px 1px 1px black; transform: scale(1.1) rotateX(-30deg); }
49
 
50
 
51
/*PLACES*/
52
 
53
@lw: @prw+4;
54
.place { display: inline-block; height: @prh; width: @lw; }
55
.high { background-color: orange; }
56
.high>.piece:not(.ui-draggable-dragging) { border: 2px solid black; }
57
 
58
 
59
/*STACK*/
60
 
61
@rc: #FFD39B;
62
@rmh: 10px; @rmv: 2px;
63
.row { background: @rc; margin: @rmv @rmh; }
64
 
65
@sc: @black;
66
.stack {
67
  background-color: @sc;
68
  border-bottom: 2px solid @sc;
69
  width: @lw*15+(2*@rmh);
70
  user-select: none;
71
}
72
 
73
 
74
/*SPOT*/
75
.spot {
76
  position: relative;
77
  float: left; 
78
  /*background-color: @rc;*/ 
79
  padding: 10px;
80
  border: @rmv dashed @sc;
81
  border-radius: 10px;
82
}
 
JavaScript
var o = $('body');
1
var o = $('body');
2
var s = $('.stack');
3
 
4
function piece(c,n)
5
{
6
  return $('<div/>', { class: c + " piece", text: n }).append("<br/>").draggable({
7
    revert: true,
8
    zIndex: 99999, opacity: 0.8
9
  });
10
}
11
 
12
//////////
13
 
14
function place() { return $('<div />', { class: "place" }); }
15
 
16
function createStack() { for (var i = 0; i < 15; i++) $('.row').append(place()); }
17
 
18
var zp = { top: 0, left: 0 };
19
function drop(event,ui) {
20
  var p = ui.draggable;
21
  var c = $(this);
22
  if (c.is(':empty')) dropEmpty(c, p);
23
  else                dropSwap (c, p);
24
}
25
function dropEmpty(c, p) { c.append(p.detach().css(zp)); }
26
function dropSwap (c, p) {
27
  var pc = p.parent(); var cp = c.children().first();
28
  dropEmpty(pc, cp); dropEmpty(c, p);
29
}
30
 
31
createStack();
32
$(".place").droppable({ accept: ".piece", drop: drop, hoverClass: "high" });
33
 
34
//////////
35
 
36
function e()  { return piece("empty", ''); }
37
function g(x) { return piece("green", x); } function d(x) { return piece("black", x); }
38
function r(x) { return piece("red"  , x); } function b(x) { return piece("blue" , x); }
39
o.append([g(1),r(8),d(7),b(10),r(5),d(12),d(5),g(10),b(5),b(1),b(9),r(4),r(13),b(4),e()]);
40
 
41
//////////
42
 
43
function rnd(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
44
function rndPick(xs) { return xs[rnd(0,xs.length-1)]; }
45
  
46
function rndPut(e) { rndPick($('.row>.place:empty')).appendChild(e); } 
47
function rndPutAll(s) { var ps = $(s); for (var i = 0; i < ps.length; i++) rndPut(rndPick($(s))); }
48
 
49
rndPutAll('body>.piece');
50
 
51
//////////
52
 
53
//////////
54
 
55
$('.spot').draggable();
56
$('.stack').draggable();
57
$('h1').draggable();
 

Untitled

CSSDeck G+