5

W jaki sposób mogę użyć przejść CSS3 (lub w jakikolwiek inny sposób), aby zmienić kolejność na liście w iOS, gdzie elementy listy są płynnie animowane podczas przeciągania, a więc elementy wymykają się sposób w jaki przeciągasz?Animowanie jQueryUI Sortowanie przy użyciu przejść CSS3

[edycja aby przekształcić z FAQ i oszczędność czasu dla każdego, kto chce dowiedzieć się tego]

+0

Oto kolejny przykład przez [Steve Sanderson] (http://blog.stevensanderson.com/2013/03/15/animating -lists-with-css-3-transitions /) - Animowanie list z przejściami CSS 3 –

+0

możliwy duplikat [Animowanych przejść dla sortowalnej listy UI] (http://stackoverflow.com/questions/12942520/animate-transitions-for- uis-sortable-list) –

Odpowiedz

4

https://gist.github.com/801570 pokazuje, jak animować płynnie przeciągając za pomocą jQuery Sortable. Przedmioty przesuwają się z drogi podczas przeciągania. Używa ona CSS3 Transitions, a efekt był dokładnie tym, czego szukam. Bardzo fajny.

Oto kod:

JSFIDDLE:

http://jsfiddle.net/LTWMp/

HTML:

<style name="impostor_size"> 
    .marker + li { border-top-width:0px; } 
</style> 
<ul> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> 
    <li>6</li> 
</ul> 

CSS:

body { color:white; font-family:Helvetica, sans-serif; padding: 10px} 
ul { float:left; width:300px; overflow:hidden; border-radius:6px; } 
li { display:block; position:relative; padding:12px 6px; z-index:1; margin:5px 20px; } 
li:after { background:#18629D; display:block; position:absolute; height:100%; width:100%; top:0px; left:0px; content:' '; border-radius:6px; z-index:-1; } 
li { -moz-transition:border-top-width 0.1s ease-in; -webkit-transition:border-top-width 0.1s ease-in; border-top:0px solid rgba(0,0,0,0); } 
.marker { opacity:0.0; } 

Scenariusz:

var stylesheet = $('style[name=impostor_size]')[0].sheet; 
var rule = stylesheet.rules ? stylesheet.rules[0].style : stylesheet.cssRules[0].style; 
var setPadding = function(atHeight) { 
    rule.cssText = 'border-top-width: '+atHeight+'px'; 
}; 
$('ul').sortable({ 
    'placeholder':'marker', 
    'start':function(ev, ui) { 
     setPadding(ui.item.height()); 
    }, 
    'stop':function(ev, ui) { 
     var next = ui.item.next(); 
     next.css({'-moz-transition':'none', '-webkit-transition':'none', 'transition':'none'}); 
     setTimeout(next.css.bind(next, {'-moz-transition':'border-top-width 0.1s ease-in', '-webkit-transition':'border-top-width 0.1s ease-in', 'transition':'border-top-width 0.1s ease-in'})); 
    } 
}); 
+0

jaka jest potrzeba li: po tutaj? –

1

Mam poprawiły wszystkie powyższe, korzystając z funkcji 'zmiany' w sortable API. To jest kod. Sprawdź skrzypce poniżej, aby zobaczyć wymagane css.

$('ul').sortable({ 
placeholder:'marker', 
distance: 15, 
cursor: 'move', 
revert: 200, 
start:function(ev, ui) { 
    $(".marker").css({"height": "0px"}); 
    console.log("start"); 
}, 
change:function(ev, ui) { 
    $(".marker").css({"height": "0px"}); 
    setTimeout(function(){ 
     $(".marker").css({"height": "40px"}); 
    },10); 
} }); 

Można zobaczyć pełny przykład kodu here

http://jsfiddle.net/LTWMp/284/