私は楽しいコンボボックスを作るために選ばれたものを使います。すべて正常に動作しますが、質問があります。
オプションリストはビジュアルコンボボックスで指定された幅を取ると思います。オプションはすべて非常に長く、オプションが2行で表示されないようにするには、非常に大きなコンボボックスを作成する必要があります。
閉じたときに150pxのような小さなコンボボックスを作成し、リストを開いたときにはるかに大きなコンボボックスを作成することは可能ですか?
はい、可能です。これには2つの方法があります。
chzn-drop
in chosen.cssファイル。私は2番目のものを好み、ここにコードがあります:
HTML:
<select class="chzn-select" data-placeholder="select your options" style="width: 150px">
<option value="">option1</option>
<option value="option1">option2</option>
<option value="option2">option3</option>
</select>
jQuery:
$('.chzn-select').chosen();
$('.chzn-drop').css({"width": "300px"});
結果:
ご理解いただければ幸いです。
承認された回答は正しいです。ただし、ドロップダウンが固定値ではなくコンテンツをホストするために必要な幅を取るように設定することもできます。また、選択ボックス自体よりも小さくならないようにしました。
$('.chosen-drop').css({minWidth: '100%', width: 'auto'});
初期化子を選択して、widthプロパティを設定できます。
$(".chosen-select").chosen({ allow_single_deselect: true, disable_search_threshold: 5, width:"100%" });
"width:auto"を追加するだけのKoenpeterの答えは、私にはうまくいきませんでした。私はそれがすべてCSSで次のようにしてできることを発見しました:
.chosen-container .chosen-drop {
min-width: 100%;
width: auto;
}
.chosen-container .chosen-drop ul {
white-space: nowrap;
}
$('.chosen-select').each(function() {
var $this = $(this);
$this.next().css({'width': '225px'});
});
行を広くしすぎると、小さな画面でいくつかの問題が発生します。画面が十分に大きい場合にのみ、選択したオプションの行を広くするこのカスタムCSSをWebページに追加しました。
@media screen and (min-width: 720px) {
.chosen-container .chosen-drop {
border-top: 1px solid #aaa !important;
width: auto !important;
white-space: nowrap !important;
min-width: 100%;
}
}
元の選択のクラスから幅を継承するには、空の幅で初期化します。
$(selector).chosen({
inherit_select_classes: true,
width: '',
/*other options*/
})