次のマークアップを使用します。
<div style="overflow: auto">
<select multiple="true" style="min-width: 300px;">
<option>a loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong string</option>
</select>
</div>
min-width を指定すると、選択幅がコンテナーの 100% になります。つまり、オーバーフローしません。最小幅を削除すると、オーバーフローします (これは望ましい動作ですが、オプションがなくてもボックスが適切に見えるように最小幅も必要です)。
これはどのように達成できますか?min-width が max-width に影響するという事実は、私を悩ませます。私はcssソリューションにのみ興味があり、javascriptを避けていることに注意してください。
編集: 明確にするために、スタイリングにより、次のマークアップが幅 300px の空のボックスをレンダリングする必要があります。
<div>
<select multiple="true">
</select>
</div>
以下は、コンテナと同じ幅のボックスをレンダリングし、スクロールバーで残りを表示できるようにします。
<div>
<select multiple="true">
<option>a loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong string</option>
</select>
</div>