HTML選択オプションセパレータ


207

選択タグでセパレータをどのように作成しますか?

New Window
New Tab
-----------
Save Page
------------
Exit

私は通常、空白をラベルとして無効なオプションを追加します。
Abhi Beckert、2018年

回答:


330

無効にされたオプションのアプローチは、最高に見え、サポートされている最高のようです。optgroupの使用例も含めました。

optgroup(この方法はちょっと悪い):

<select>
    <optgroup>
        <option>First</option>
    </optgroup>
    <optgroup label="_________">
        <option>Second</option>
        <option>Third</option>
    </optgroup>
</select>

無効化されたオプション(少し良い):

<select>
    <option>First</option>
    <option disabled>_________</option>
    <option>Second</option>
    <option>Third</option>
</select>

そして、あなたが本当に派手になりたいなら、水平のユニコードボックス描画文字を使用してください。
(ベストオプション!)

<select>
    <option>First</option>
    <option disabled>──────────</option>
    <option>Second</option>
    <option>Third</option>
</select>

http://jsfiddle.net/JFDgH/2/


21
Unicodeはjsfiddleでうまく機能しましたが、コードにコピー/貼り付けしようとすると、正しく変換されませんでした。したがって、その問題のある人にとって、水平ユニコードボックス描画文字のHTMLエンコーディングは&#9472;です。 fileformat.info/info/unicode/char/2500/index.htmまた、&#9473;にはより重いオプションもあります。fileformat.info/info/unicode/char/2501/index.htm
JeffG

1
モバイルFirefox(および場合によっては他のモバイルブラウザー)では、disabledオプションは無効になっているラジオボタンが右側に表示されます...
GoTo

しかし、optgroupはPCとモバイルで異なるようにレンダリングされるため、無効化されたオプションは依然として最良のソリューションです。
GoTo

1
htmlファイルのエンコーディングは、「─」文字が意味不明なものではなく線として表示されるためにも不可欠です。BOMを備えたUFT8は良い選択かもしれません。
Andreas Jansson 2014

1
@ db0外観に一貫性がありません。grab.by/EzEigrab.by/EzEkの比較(jsfiddleリンクを参照)。
Alex K

76

試してください:

<optgroup label="----------"></optgroup>

40
optgroupsにラベルを付ける代わりに、これをスタイルシートに追加してみてください:optgroup + optgroup {border-top:1px solid black}ダッシュの束よりも安っぽく見えません。
ローレンスゴンサルベス

2
optgroupラベルはグループを説明する必要があります。ブラウザがHTML 4.01仕様のスクリーンショットに従って実装されている場合、ユーザーはダッシュの行に直面し、それぞれを調べてその背後にあるものを見つける必要があります。
クエンティン

2
@Laurence:IE7はoptgroupまたはoption要素のCSSスタイルをサポートしていません。少なくとも国境ではない
グロム

1
<optgroup style = "border-top:1px dotted #ccc; margin:5px 0;"> </ optgroup>-少なくともFirefoxではかっこよく見えます!
Ben Sinclair

1
このような空のoptgroupは正当なhtmlではありません。使用すると検証エラーが発生します。私はjames.garrissの答えを好みます。
アリエル

22

これは古いスレッドですが、同様の応答を誰も投稿しなかったので、これを私の好みの分離方法として追加します。

ダッシュなどを使用すると、選択ボックスの幅を下回る可能性があるため、多少目障りだと思います。そのため、セパレータを作成するためにCSSを使用することを好みます。単純な背景色です。

<select>
  <option style="background-color: #cccccc;" disabled selected>Select An Option</option>
  <option>First Option</option>
  <option>Second</option>
  <option style="font-size: 1pt; background-color: #000000;" disabled>&nbsp;</option>
  <option>Third</option>
  <option>Fourth</option>
  <option style="font-size: 1pt; background-color: #000000;" disabled>&nbsp;</option>
  <option>Fifth</option>
  <option>Sixth</option>
</select>


すごい !私はmin-height:1pxを使用しました。max-height:1px; パディング:0; font-sizeの代わりに:1pt; 1px行の場合
kofifus

15

optgroup要素を使用したくない場合は、代わりにダッシュをoption要素に入れ、disabled属性を与えます。表示されますが、グレー表示されます。

<option disabled>----------</option>

こんにちはジェームス、私もこの解決策が好きですが、スクリーンリーダーは「無効化オプションダッシュダッシュダッシュダッシュ...」と読みます。ありがとうございました!
Julio

1
話したくない視覚要素にクラスを追加してから、クラスを非表示/無効にするARIAコマンドを追加することはできますか?おそらく、ここで使用されているテクニックの1つに似ていますか? asurkov.blogspot.com/2012/02/…– james.garriss 2013
1

実際、@ Julio、これを新しい質問として投稿してください。知りたいのですが、スクリーンリーダーをプログラミングしたことがありません。
james.garriss 2013年

9

通常のハイフォンの代わりに、拡張文字セットの水平バーシンボルを使用してそれを置き換えました。ユーザーがその文字を置き換える国にいるのに、私にとってはうまく機能する場合、見栄えがよくありません。いくつかの素晴らしい効果に使用できるさまざまな文字があり、CSSは含まれていません。

<option value='-' disabled>――――</option>

8

CSSでクラスを定義します。

option.separator {
    margin-top:8px;
    border-top:1px solid #666;
    padding:0;
}

HTMLで記述:

<select ...>
    <option disabled class="separator"></option>
</select>

2
答えはjsfiddleの例で改善できます。これは、副作用やハッキングに依存しない最も組み込みのソリューションのようですが、他の回答のビジュアルを比較するのに適しています。
raider33

多くのブラウザでは動作しません。(いつものように、入力はお尻の痛みです)
Forty

5

@Laurence Gonsalvesのコメントを答えにしています。これは、セマンティックに機能し、ハックのように見えない唯一のコメントだからです。

これをスタイルシートに追加してみてください:

optgroup + optgroup { border-top: 1px solid black } 

ダッシュの束よりも安っぽく見えません。


2
これは実際には正しい方法です(重要なことに、意味のないコンテンツは追加されません)。私はこの方法でスタイルを設定するのが好きです(セパレーターの周りに縦のスペースを追加します):optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
ニコラ・ル・ティエリー・デネキン

3

別の方法は、Firefoxでのみ機能し、「----」フォールバックがあるように見えるオプションでcss 1x1背景画像を使用することです

<option value="" disabled="disabled" class="SelectSeparator">----</option> 

.SelectSeparator
    {
      background-image:  url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==);
      color:black;
      background-repeat:repeat-x;
      background-position:50% 50%;
      background-attachment:scroll;
}

http://jsfiddle.net/yNecQ/6/

またはjavascript(jquery)を使用して:

-hide the select element and 
-show a div which can be completely styled and 
-reflect the div state onto the select for the form submit

http://tutorialzine.com/2010/11/better-select-jquery-css3/


HTML選択コントロールに水平線を追加する方法も参照してください



1

emダッシュ「—」を使用できます。各文字の間に目に見えるスペースはありません。
一部のフォントでは!)

HTMLの場合:

<option value = "—————————————"無効> ————————————— </ option>

またはXHTMLの場合:

<option value = "—————————————" disabled = "disabled"> ————————————— </ option>

1
文字間の間隔は、フォントとレンダリングエンジンによって決まります。たとえば、Chrome(Windows)ではダッシュの間にスペースが表示されますが、Safari(Mac)では表示されません。
ハンク

1

これはいつも最高です。

<option>First</option>
<option disabled>_________</option>
<option>Second</option>
<option>Third</option>


1
 <option  data-divider="true" disabled>______________</option>

これもできます。簡単で、仕切りを選択してドロップダウンリストを選択できます。


0

私は条件付きで色と背景を交互に選択しました。並べ替え順序を設定し、vue.jsを使用して、次のようにしました。

<style>
    .altgroup_1 {background:gray; color:white;}
    .altgroup_2{background:white; color:black;}
</style>

<option :class = {
    'altgroup_1': (country.sort_order > 25),
    'altgroup_2': (country.sort_order > 50 }"
    value="{{ country.iso_short }}">
    {{ country.short_name }}
</option
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.