Pour une raison quelconque, l'espace réservé pour mes articles 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 qu'elle corresponde à l'élément déplacé?
Je résout généralement ce problème en liant un rappel qui définit la hauteur de l'espace réservé à la hauteur de l'élément en cours de tri à l'événement start
. C'est une solution simple qui vous donne un contrôle précis sur la façon dont vous souhaitez que votre espace réservé soit affiché.
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
}
});
Avez-vous essayé de définir le forcePlaceholderSize:true
propriété? Lisez la jQuery UI Sortable page de documentation .
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. Ajouter display: block
au .portlet
classe le corrige.
Dans mon cas, j'ai trouvé une solution similaire à JP Hellemons , dans laquelle je force la hauteur de l'espace réservé (avec ! Important ) pour personnaliser et également définir la visibilité avec l'arrière-plan pour voir les changements par moi-même (vous pouvez également styler de cette façon votre espace réservé comme vous le souhaitez).
Cela fonctionne également avec display: inline-block;
.ui-sortable-placeholder {
background:red !important;
height: 2px !important; // this is the key, set your own height, start with small
visibility: visible !important;
margin: 0 0 -10px 0; // additionaly, you can position your placeholder,
} // in my case it was bottom -10px
Au lieu d'utiliser "ui.item.height ()", vous pouvez également utiliser "ui.helper [0] .scrollHeight" pour obtenir un résultat stable lorsque vous faites glisser un élément du conteneur externe également.
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.helper[0].scrollHeight);
}
});
Vous pouvez définir un style pour votre espace réservé en tant qu'option pour votre triable.
$( "#sortable" ).sortable({
placeholder: "ui-state-highlight"
});
Et donnez simplement une hauteur à ce style. J'espère que cela fonctionne.