何らかの理由で、私の並べ替え可能なアイテムのプレースホルダーは約10pxです。並べ替え可能なすべてのアイテムの高さが異なります。移動するアイテムに合わせて各プレースホルダーの高さを変更するにはどうすればよいですか?
何らかの理由で、私の並べ替え可能なアイテムのプレースホルダーは約10pxです。並べ替え可能なすべてのアイテムの高さが異なります。移動するアイテムに合わせて各プレースホルダーの高さを変更するにはどうすればよいですか?
回答:
通常、これは、プレースホルダーの高さを、start
イベントに並べ替えられるアイテムの高さに設定するコールバックをバインドすることで解決します。これは、プレースホルダーの表示方法をきめ細かく制御できるシンプルなソリューションです。
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.item.height());
}
});
forcePlaceholderSize:true
プロパティを設定してみましたか?jQuery UI Sortable ドキュメントページを読んでください。
.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; height: 50px !important; }
を.ui-sortable-placeholder { border: 1px dotted black; visibility: visible !important; }
(高さを削除して)に変更するだけでいいので、@ DarthJDGは正しいです!
あなたの要素はありますdisplay: block
か?インライン要素を使用すると、プレースホルダーが高さを正しく維持できない場合があります。例えば。このjsFiddleには、あなたが説明した問題と同様の問題があるようです。クラスに追加display: block
すると.portlet
修正されます。
「ui.item.height()」を使用する代わりに、「ui.helper [0] .scrollHeight」を使用して、外部コンテナからアイテムをドラッグしたときの結果を安定させることもできます。
$( ".column" ).sortable({
connectWith: ".column",
start: function(e, ui){
ui.placeholder.height(ui.helper[0].scrollHeight);
}
});
私の場合、JP Hellemonsに似た解決策を見つけました。プレースホルダーの高さを(!importantを使用して)カスタムに設定し、バックグラウンドで可視性を設定して自分自身の変更を確認します(この方法でプレースホルダーのスタイルを設定することもできます) )。
これは、 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