123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>jquery.pep droppable w/ consuming parent</title>
- <!-- Load local jQuery. -->
- <script src="../libs/jquery/jquery.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script>
- <!-- Load local lib and tests. -->
- <script src="../src/jquery.pep.js"></script>
- <script type="text/javascript">
- $(document).ready(function(){
- $('.pep').pep({
- droppable: '.droppable',
- overlapFunction: false,
- useCSSTranslation: false,
- start: function(ev, obj){
- obj.noCenter = false;
- },
- drag: function(ev, obj){
- var vel = obj.velocity();
- var rot = (vel.x)/5;
- rotate(obj.$el, rot);
- },
- stop: function(ev, obj){
- rotate(obj.$el, 0);
- },
- rest: handleCentering
- });
- function handleCentering(ev, obj){
- console.log(obj.activeDropRegions.length);
- if ( obj.activeDropRegions.length > 0 ) {
- centerWithin(obj);
- }
- }
- function centerWithin(obj){
- var $parent = obj.activeDropRegions[0];
- var pTop = $parent.position().top;
- var pLeft = $parent.position().left;
- var pHeight = $parent.outerHeight();
- var pWidth = $parent.outerWidth();
- var oTop = obj.$el.position().top;
- var oLeft = obj.$el.position().left;
- var oHeight = obj.$el.outerHeight();
- var oWidth = obj.$el.outerWidth();
- var cTop = pTop + (pHeight/2);
- var cLeft = pLeft + (pWidth/2);
- if ( !obj.noCenter ) {
- if ( !obj.shouldUseCSSTranslation() ) {
- var moveTop = cTop - (oHeight/2);
- var moveLeft = cLeft - (oWidth/2);
- obj.$el.animate({ top: moveTop, left: moveLeft }, 50);
- } else{
- var moveTop = (cTop - oTop) - oHeight/2;
- var moveLeft = (cLeft - oLeft) - oWidth/2;
- obj.moveToUsingTransforms( moveTop, moveLeft );
- }
- obj.noCenter = true;
- return;
- }
- obj.noCenter = false;
- }
- function rotate($obj, deg){
- $obj.css({
- "-webkit-transform": "rotate("+ deg +"deg)",
- "-moz-transform": "rotate("+ deg +"deg)",
- "-ms-transform": "rotate("+ deg +"deg)",
- "-o-transform": "rotate("+ deg +"deg)",
- "transform": "rotate("+ deg +"deg)"
- });
- }
- });
- </script>
- <style type="text/css">
- .pep{ width: 80px; height: 80px; background: blue; z-index: 10; }
- .droppable{ width: 100px; height: 100px;
- position: absolute;
- border: 5px solid #ccc; }
- .droppable.tr { right: 100px; bottom: 100px; }
- .droppable.br { top: 100px; right: 100px;}
- .droppable.bl { top: 100px; left: 100px;}
- .droppable.tl { bottom: 100px; left: 100px;}
- .pep-dpa { border-color: blue; background: yellow }
- </style>
- </head>
- <body>
- <div class="pep"></div>
- <div class="droppable tr"></div>
- <div class="droppable br"></div>
- <div class="droppable bl"></div>
- <div class="droppable tl"></div>
- </body>
- </html>
|