問題
フォーム入力の行を作成しようとしているときに問題が発生しました。これは問題なく機能しますが、入力の合計の幅が大きくなりすぎると、すべてが折り返され始めます。私が欲しいのは、水平スクロールバーがフィールドセット内に表示され、単一のサービスアイテムdivのすべてのフォーム要素が単一の行に残ることです。
<div style="display: inline-block;" class="horizontal-fields service-item">
<button class="horizontal-fields remove-service-item" style="float: left; margin-right: 5px;">-</button>
<label for="service_name">Name:</label>
<input name="service_name[]" id="service_name" value="" type="text">
<label for="service_description">Description:</label>
<input id="service_description" name="service_description[]" value="" type="text">
<!-- Additional form fields are dynamically inserted here. -->
<div class="service-additional-fields">
<!-- Additional fields for DSL Tails -->
<label for="service_dsl_fnn[]">FNN:</label>
<input id="service_dsl_fnn" name="service_dsl_fnn[]" size="10" value="" type="text">
<button class="horizontal-fields new-service-item" style="display: inline-block;">+</button>
</div>
<br>
</div>
現在の結果
これが現在の状態のフォームを示すJSFiddleです。関連すると思われる必要最低限のCSS/HTMLをすべて含めました:http://jsfiddle.net/FjxqG/3/
水平フィールドクラスで幅300%を指定することで、必要なものを取得できたことがわかります。ただし、幅は基本的に固定されており、サービスアイテムdivの幅に自動的に適合しないため、これはもちろん最適ではありません。
もちろん、これにより幅が必要以上に大きくなりますが、不要な場合でも常に水平スクロールが表示されます。
私が試したこと
display:inline-block;を使用してみました。および空白:ラップなし。。ただし、前者は私にはあまり効果がないようで、後者は最初のいくつかのフォームアイテムに対してのみ機能し、service-additional- fieldsdiv内のアイテムに対しては機能しませんでした。
残念ながら、後者の項目はjQueryを使用して動的に挿入されるため、service-additional-fields divにあります。したがって、それらを削除することは可能ですが、JavaScriptが単純になるため、そのままにしておきます。
私はここで見つけた解決策を適応させようとしましたが、ほとんど成功しませんでした:http ://www.css-lab.com/demos/image-display/side-scroll-gallery.html
後者のフォーム要素がまだラップされている同様の状況になってしまいました。
ここにあるjQueryソリューションのようなことも検討しました:内部に多くの小さなDIVがあるDIVの水平スクロール(テキストなし)
水平フィールドに幅を設定することは問題ないことをすでに知っているので、これは私にとってはうまくいくと思います。したがって、jQueryを使用してその幅を見つけることはおそらくうまくいくでしょう。ただし、jQueryは必要ないように感じ、一種のハックになります。ですから、合理的に可能であれば避けたいと思います。
ありがとう!