ตัวแยกตัวเลือกเลือก HTML


208

คุณสร้างตัวคั่นในแท็กที่เลือกได้อย่างไร

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

ฉันมักจะเพิ่มตัวเลือกที่ปิดใช้งานด้วยช่องว่างเป็นป้ายกำกับ
Abhi Beckert

คำตอบ:


331

วิธีตัวเลือกที่ปิดใช้งานดูเหมือนจะดูดีที่สุดและได้รับการสนับสนุนที่ดีที่สุด ฉันได้รวมตัวอย่างของการใช้ 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 จะแสดงผลแตกต่างกันบนพีซีและมือถือดังนั้นตัวเลือกที่ถูกปิดใช้งานยังคงเป็นทางออกที่ดีที่สุด
GoTo

1
การเข้ารหัสไฟล์ html นั้นมีความสำคัญเช่นกันสำหรับอักขระ "─" เพื่อแสดงเป็นบรรทัดแทนที่จะเป็นซึ่งพูดพล่อยๆ UFT8 ที่มี BOM อาจเป็นตัวเลือกที่ดี
Andreas Jansson

1
@ db0 ลักษณะที่ปรากฏไม่สอดคล้องกัน grab.by/EzEi vs grab.by/EzEk (ดูลิงก์ jsfiddle)
Alex K

76

ลอง:

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

40
แทนที่จะใส่ป้ายกำกับบน optgroups ให้ลองเพิ่มสิ่งนี้ลงในสไตล์ชีทของคุณ: optgroup + optgroup {เส้นขอบบน: 1px สีดำทึบ} มองดูวิเศษน้อยกว่าเส้นประจำนวนมาก
Laurence Gonsalves

2
ป้ายกำกับ Optgroup ควรอธิบายกลุ่ม หากเบราว์เซอร์มีการใช้งานตามภาพหน้าจอในข้อกำหนด HTML 4.01 ผู้ใช้จะต้องเผชิญกับขีดกลางและต้องตรวจสอบแต่ละอันเพื่อตรวจสอบว่ามีอะไรอยู่ข้างหลัง
Quentin

2
@ Laurence: IE7 ไม่รองรับสไตล์ css ใน optgroup หรือองค์ประกอบตัวเลือก อย่างน้อยก็ไม่มีพรมแดน
2552

1
<optgroup style = "เส้นขอบบน: 1px ประ #ccc; ระยะขอบ: 5px 0;"> </optgroup> - ดูดีอย่างน้อยใน Firefox!
เบ็นซินแคลร์

1
optgroup ที่ว่างเปล่าเช่นนี้ไม่ใช่ html ที่ถูกกฎหมาย คุณจะได้รับข้อผิดพลาดในการตรวจสอบถ้าคุณใช้มัน ฉันชอบคำตอบของ james.garriss
Ariel

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>


ดีมาก! ฉันใช้ความสูงขั้นต่ำ: 1px; สูงสุด-height: 1px; padding: 0; แทนขนาดตัวอักษร: 1pt; สำหรับ 1px line
kofifus

15

หากคุณไม่ต้องการใช้องค์ประกอบ optgroup ให้ใส่เครื่องหมายขีดคั่นในองค์ประกอบตัวเลือกแทนและให้แอตทริบิวต์ที่ปิดใช้งาน มันจะมองเห็นได้ แต่เป็นสีเทา

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

สวัสดีเจมส์ฉันชอบวิธีนี้เช่นกัน แต่โปรแกรมอ่านหน้าจอจะอ่าน "ปิดใช้งานตัวเลือก dash dash dash dash ... " ซึ่งอาจสร้างความสับสนอย่างมากสำหรับผู้ใช้ที่พิการ ... คุณมีความคิดว่าเราจะหลีกเลี่ยงปัญหานี้ได้อย่างไร ขอบคุณ!
Julio

1
เป็นไปได้ไหมที่จะเพิ่มคลาสให้กับองค์ประกอบภาพที่คุณไม่ต้องการพูดแล้วเพิ่มคำสั่ง ARIA ที่ซ่อน / ปิดใช้งานคลาส อาจมีบางสิ่งที่เหมือนกับเทคนิคที่ใช้ที่นี่ใช่ไหม asurkov.blogspot.com/2012/02/…
james.garriss

ที่จริงแล้ว @Julio คุณควรโพสต์สิ่งนี้เป็นคำถามใหม่ ฉันอยากรู้ แต่ฉันไม่เคยตั้งโปรแกรมให้กับโปรแกรมอ่านหน้าจอมาก่อน
james.garriss

9

แทนที่จะใช้ hyphon ปกติที่ฉันแทนที่โดยใช้สัญลักษณ์แถบแนวนอนจากชุดอักขระแบบขยายมันจะดูไม่ดีมากหากผู้ใช้อยู่ในประเทศอื่นที่มาแทนที่อักขระนั้น แต่ใช้งานได้ดีสำหรับฉัน มีช่วงของ chacters ต่าง ๆ ที่คุณสามารถใช้สำหรับลักษณะพิเศษยอดเยี่ยมบางอย่างและไม่มี 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; }
Nicolas Le Thierry d'Ennequin

3

อีกวิธีหนึ่งคือการใช้ภาพพื้นหลัง css 1x1 บนตัวเลือกซึ่งดูเหมือนว่าจะทำงานกับ firefox เท่านั้นและมีทางเลือก "----"

<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 select control ได้อย่างไร



1

คุณสามารถใช้ประประ "-" ไม่มีช่องว่างระหว่างอักขระแต่ละตัว
(ในแบบอักษรบางแบบ!)

ใน HTML:

<option value = "—————————————" ปิดการใช้งาน> ——————————————— </option>

หรือใน XHTML:

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

1
ระยะห่างระหว่างตัวละครจะถูกกำหนดโดยตัวอักษรและเครื่องมือการแสดงผล เช่นฉันเห็นช่องว่างระหว่างเครื่องหมายขีดคั่น em ของคุณบน Chrome (Windows) แต่ไม่ใช่ใน Safari (Mac)
แฮงค์


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.