JQuery UI Sortable mit der Horizontale Bildlauf wird das verschieben aller Elemente nach unten
Möchte ich es dem Benutzer erlauben das Sortieren von Objekten von Links-nach-rechts mit einem scroll-bar.
Objekte sind Boxen mit HTML in Ihnen, einschließlich text, keine Bilder, wie viele andere Beispiele.
Das problem ist, dass der Benutzer eines der Objekte, alle anderen verschieben nach unten beim ziehen.
Hier ist, was ich habe:
HTML:
<div id="parent" class="parent">
<div id="list" class="list">
<div class="item">A</div>
<div class="item">B</div>
<div class="item">C</div>
</div>
</div>
CSS:
.parent {
height:64px;
width:280px;
}
.list {
background-color:#d0d0d0;
white-space:nowrap;
overflow-x:scroll;
overflow-y:hidden;
/*text-align:left;*/
}
.item {
background-color:#404040;
height:40px;
width:100px;
margin:4px;
cursor:pointer;
display:inline-block;
/*float:left;*/
/*float:none;*/
/*clear:both;*/
}
.placeholder {
height:40px;
width:20px;
display:inline-block;
margin:4px;
}
Javascript:
$(function() {
$('#list').disableSelection().sortable({
scroll: true,
placeholder: 'placeholder',
//containment:'parent',
axis: 'x'
});
})
Habe ich versucht viele verschiedene Einstellungen, und verlassen einige von Ihnen als Kommentare.
Beste Weg, um zu sehen, das problem ist hier: http://jsfiddle.net/francispotter/gtKtE/
- Look at jsfiddle.net/sP3UZ von stackoverflow.com/questions/2544143/...
- Danke für die Antwort, aber das hilft nicht, das problem anzugehen. Die Beispiele in den links, die Sie zur Verfügung gestellt verwendet schweben, das ist in Ordnung, wenn Sie wollen, dass die Objekte bilden ein gefliestes raster. Ich will, dass die Objekte nur horizontal angeordnet, und für die region zu scrollen, Links/rechts, um Platz für die items. Also ich display:inline-block.
- Ich habe schon hantieren mit dem code, und soweit ich sagen kann, Sortierbar wurde nie entwickelt, um verwendet werden, horizontal. Ich denke, dass die Lücke an der Spitze der DIVs ist ein unsichtbarer Platzhalter-DIV von einer Art, die nicht entfernt werden kann, ohne änderung der jQuery UI-code selbst. Siehe auch bugs.jqueryui.com/ticket/6702
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einer Lösung, die ich gefunden, die funktioniert, OHNE zu schreiben, die ui-library und ist eine saubere und css-Update:
Diese Antwort ist wohl zu spät, um Ihnen zu helfen, aber vielleicht hilft es anderen in der gleichen situation. Ich fand deine Frage vor ein paar Tagen, wie ich versucht bin zu tun, die gleiche Art von Sache, um die es einem Benutzer erlauben, neu zu ordnen "Fotos" auf ein "film-strip". Der Kommentar auf Ihre Frage, was der Einsatz von "float" statt "inline-block" erwies sich als Schlüssel bei der Suche nach der Lösung. Dies führte mich zu der mittels einer festen Größe DIV zu halten, der zu sortierenden Elemente, die Vermeidung der Höhenänderung verursacht durch Zeilenumbruch, dann Zugabe von einem äußeren DIV mit overflow-x:scroll zu tun, das horizontale scrollen. Genießen Sie!
https://jsfiddle.net/kmbro/y8ccza34/
HTML
CSS
jQuery-2.1.3 /jQuery-UI-1.11.4
Einer Antwort (nicht elegant, aber es funktioniert) vorgeschlagen, von einem Kollegen ist, um float:left auf den Artikel, dann:
Ich weiß, das ist eine späte Antwort, aber ich habe Probleme mit diesem als gut.
Das Update war für mich ändern
zu
in Zeile 659 in der aktuellen unkomprimierte version (v1.8.17).
Ich hoffe, dass dies noch hilft.
start: function(event, ui) { ui.placeholder.html(' '); }
. Vergessen Sie nicht, bringen Sie diese auf beiden der verbundenen Listen.Als @BertterHeide so ganz richtig kommentierte, die richtige Lösung für dieses Problem ist die Anpassung des
.sortable
Anrufs, hinzufügen vonstart: function(event, ui) { ui.placeholder.html(' '); }
wie folgt: