html seçenek ayırıcı seçme


208

Seçme etiketinde ayırıcı nasıl yapılır?

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

Genellikle etiket olarak boşluk içeren devre dışı bir seçenek eklerim.
Abhi Beckert

Yanıtlar:


331

Devre dışı bırakılan seçenek yaklaşımı en iyi görünen ve en iyi desteklenen görünüyor. Ben de optgroup kullanarak bir örnek dahil ettik.

optgroup (bu şekilde biraz berbat):

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

devre dışı bırakılmış seçenek (biraz daha iyi):

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

Ve gerçekten süslü olmak istiyorsanız, yatay unicode kutu çizim karakterini kullanın.
(EN İYİ SEÇENEK!)

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

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


21
Unicode benim için jsfiddle'da harika çalıştı, ancak kodumu kopyalamaya / yapıştırmaya çalıştığımda düzgün bir şekilde tercüme etmedi. Bu problemi olanlar için yatay unicode kutu çizim karakteri için HTML kodlaması & # 9472; fileformat.info/info/unicode/char/2500/index.htm ve ayrıca & # 9473; fileformat.info/info/unicode/char/2501/index.htm
JeffG

1
Mobil Firefox'ta (ve muhtemelen diğer mobil tarayıcılarda) disabledseçenek sağda devre dışı bırakılmış bir radyo düğmesiyle gösterilir ...
GoTo

ancak optgroups, PC ve mobil cihazlarda farklı şekilde işlenir, bu nedenle devre dışı bırakılan seçenek hala en iyi çözümdür.
Git

1
Html dosyasının kodlanması "─" karakterlerinin anlamsızca bir satır olarak gösterilmesi için de hayati önem taşımaktadır. BOM'li UFT8 iyi bir seçim olabilir.
Andreas Jansson

1
@ db0 Görünüm tutarsız. grab.by/EzEi vs grab.by/EzEk (bkz. jsfiddle bağlantısı).
Alex K

76

Deneyin:

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

40
Optgroups üzerine bir etiket koymak yerine, bunu stil sayfanıza eklemeyi deneyin: optgroup + optgroup {border-top: 1px düz siyah} Bir grup tire işaretinden çok daha az sevimsiz görünümlü.
Laurence Gonsalves

2
Optgroup etiketleri grubu tanımlamalıdır. HTML 4.01 spesifikasyonundaki ekran görüntüsüne göre uygulanan bir tarayıcı, kullanıcı tire çizgileriyle karşılaşır ve arkasında ne olduğunu öğrenmek için her birini incelemek zorunda kalır.
Quentin

2
@Laurence: IE7, optgroup veya seçenek öğelerinde css stillerini desteklemez. En azından sınırlar yok
grom

1
<optgroup style = "border-top: 1px noktalı #ccc; kenar boşluğu: 5px 0;"> </optgroup> - en azından firefox'ta havalı görünüyor!
Ben Sinclair

1
Bunun gibi boş bir optgroup yasal html değildir. Kullanırsanız doğrulama hataları alırsınız. James.garriss'in cevabını tercih ederim.
Ariel

22

Bu eski bir iş parçacığıdır, ancak kimse benzer bir yanıt göndermediğinden, bunu tercih ettiğim ayırma yolu olarak ekleyeceğim.

Seçim kutusunun genişliğinden daha kısa olabileceğinden tire ve benzeri bir şekilde göze batan bir şey buluyorum. Bu yüzden, ayırıcılarımı oluşturmak için CSS kullanmayı tercih ediyorum .. basit bir arka plan rengi.

<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>


harika ! Minimum yükseklik kullandım: 1 piksel; maksimum yükseklik: 1 piksel; dolgu: 0; yazı tipi boyutu yerine: 1pt; 1px hattı için
kofifus

15

Optgroup öğesini kullanmak istemiyorsanız, tire işaretlerini bir seçenek öğesine yerleştirin ve devre dışı bırakılmış niteliğini verin. Görünür olacak, ancak gri renkte olacak.

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

Merhaba James, ben de bu çözümü seviyorum ama ekran okuyucular devre dışı bırakılan kullanıcılar için çok kafa karıştırıcı olabilir "seçenek çizgi dash dash dash dash ..." okuyacak ... Bu nasıl önleyebilirsiniz bir fikrin var mı? teşekkür ederim!
Julio

1
Konuşulmasını istemediğiniz görsel öğelere sınıf eklemek, ardından sınıfı gizleyen / devre dışı bırakan bir ARIA komutu eklemek mümkün müdür? Belki de burada kullanılan tekniklerden biri gibi? asurkov.blogspot.com/2012/02/…
james.garriss

Aslında @Julio, bunu yeni bir soru olarak göndermelisin. Bilmeyi merak ediyorum, ama daha önce hiç ekran okuyucular için programlamamıştım.
james.garriss

9

Genişletilmiş karakter kümesinden yatay bir çubuk sembolü kullanarak değiştirdiğim normal hiphon yerine, kullanıcı bu karakterin yerini alan ancak benim için iyi çalışan başka bir ülkede ise çok hoş görünmeyecek. Bazı harika efektler için kullanabileceğiniz bir dizi farklı bölüm vardır ve css dahil değildir.

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

8

CSS'de bir sınıf tanımlayın:

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

HTML ile yaz:

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

2
Cevap jsfiddle örneği ile geliştirilebilir. Bu, yan etkilere veya korsanlara dayanmayan en yerleşik çözüm gibi görünüyor, ancak diğer cevapların görsellerini karşılaştırmak güzel olurdu.
raider33

Birçok tarayıcıda çalışmaz. (her zamanki gibi, girdiler popoda bir acıdır)
Kırk

5

@Laurence Gonsalves'in bir cevaba yorumunu yapıyorum çünkü anlamsal olarak çalışan ve bir kesmek gibi görünmeyen tek cevap bu.

Bunu stil sayfanıza eklemeyi deneyin:

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

Bir demet çizgiden çok daha az sevimsiz görünüyor.


2
Bu aslında bunu yapmanın doğru yoludur (daha önemlisi anlamsız içerik eklemez). Ben bu şekilde stil gibi (ayırıcı etrafında ekstra dikey boşluk ekleyerek):optgroup { padding-bottom: 8px; } optgroup:not(:first-child) { padding-top: 8px; border-top: solid 1px #666; }
Nicolas Le Thierry d'Ennequin

3

başka bir yolu seçeneği sadece bir firefox ile çalışmak ve bir "----" yedek var gibi görünüyor seçeneği üzerinde bir css 1x1 arka plan görüntüsü kullanmaktır

<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/

veya javascript (jquery) kullanmak için:

-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/


ayrıca bkz . Bir html seçim denetimine nasıl yatay çizgi ekleyebilirim?



1

"-" em tire işaretini kullanabilirsiniz. Her karakter arasında görünür boşluk yoktur.
( Bazı yazı tiplerinde!)

HTML'de:

<seçenek değeri = "—————————————" "devre dışı> ————————————— </option>

Veya XHTML'de:

<seçenek değeri = "—————————————" "devre dışı =" devre dışı "> ————————————— </option>

1
Karakterler arasındaki boşluk, yazı tipi ve oluşturma motoru tarafından belirlenir. Örneğin, Chrome'da (Windows) em tirelarınız arasında boşluklar görüyorum, ancak Safari'de (Mac) göremiyorum.
Hank

1

Bu her zaman en iyisidir.

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


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

bunu da yapabilirsiniz. kolaydır ve bölücü seçim açılır listesini yapın.


0

Şartlı olarak alternatif renk ve arka plan seçtim. Bir sıralama düzeni ayarlama ve vue.js ile, böyle bir şey yaptım:

<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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.