Pour une raison quelconque, l'espace réservé pour mes éléments triables est d'environ 10 pixels. Tous mes articles triables ont des hauteurs différentes. Comment puis-je modifier la hauteur de chaque espace réservé pour correspondre à l'élément déplacé?
jquery
jquery-ui
jquery-ui-sortable
oshirowanen
la source
la source
Réponses:
Je résolve généralement cela en liant un rappel qui définit la hauteur de l'espace réservé à la hauteur de l'élément trié par rapport à l'
start
événement. C'est une solution simple qui vous donne un contrôle précis sur la façon dont vous voulez que votre espace réservé soit affiché.Voir le cas de test mis à jour
la source
Avez-vous essayé de définir la
forcePlaceholderSize:true
propriété? Lisez la page de documentation triable de l'interface utilisateur jQuery .la source
.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
en.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; }
(supprimez donc la hauteur) Donc @DarthJDG vous avez raison!Sont vos éléments
display: block
? Les éléments en ligne peuvent empêcher l'espace réservé de conserver la hauteur correctement. Par exemple. ce jsFiddle semble avoir un problème similaire à celui que vous avez décrit. L'ajoutdisplay: block
à la.portlet
classe le corrige.la source
Au lieu d'utiliser "ui.item.height ()", vous pouvez utiliser "ui.helper [0] .scrollHeight" pour obtenir un résultat stable lorsque vous faites également glisser un élément depuis un conteneur externe.
la source
Vous pouvez définir un style pour votre espace réservé comme option pour votre triable.
Et donnez simplement à ce style une hauteur. J'espère que ça marche.
la source
Dans mon cas, j'ai trouvé une solution similaire à JP Hellemons , dans laquelle je force la hauteur de l'espace réservé (avec ! Important ) à la personnalisation et définit également la visibilité avec l'arrière-plan pour voir les changements par moi-même (vous pouvez également styliser de cette manière votre espace réservé comme vous le souhaitez ).
Cela fonctionne également avec
display: inline-block;
la source