html роздільник опцій


208

Як зробити роздільник у виділеному тезі?

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

Зазвичай я додаю вимкнений варіант із пробілом як міткою.
Абхі Беккерт

Відповіді:


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

але оптигрупи відображаються по-різному на ПК порівняно з мобільним, тому вимкнений варіант все ще є найкращим рішенням.
Перейти до

1
Кодування файлу html також є життєво важливим для того, щоб символи "─" відображалися у вигляді рядка, а не гріш. UFT8 з BOM може бути хорошим вибором.
Андреас Янссон

1
@ db0 Зовнішній вигляд суперечливий. grab.by/EzEi vs grab.by/EzEk (див. посилання jsfiddle).
Алекс К

76

Спробуйте:

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

40
Замість того, щоб наносити етикетку на оптигрупи, спробуйте додати це до таблиці стилів: optgroup + optgroup {border-top: 1px solid black} Набагато менше чіткого вигляду, ніж купка тире.
Лоранс Гонсалвс

2
Мітки Optgroup повинні описувати групу. Якщо браузер реалізований відповідно до скріншоту в специфікації HTML 4.01, користувач зіткнеться з рядками тире і повинен буде вивчити кожного, щоб дізнатися, що за ним стоїть.
Квентін

2
@Laurence: IE7 не підтримує стилі css на optgroup або елементах опцій. Принаймні, не кордони
Grom

1
<optgroup style = "border-top: 1px пунктир #ccc; margin: 5px 0;"> </optgroup> - виглядає круто принаймні у Firefox!
Бен Сінклер

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>


чудово! Я використовував міні-висоту: 1px; максимальна висота: 1px; підкладка: 0; замість розміру шрифту: 1pt; для лінії 1px
kofifus

15

Якщо ви не хочете використовувати елемент optgroup, замість цього додайте тире в елемент опції та надайте йому атрибут вимкнено. Це буде видно, але сірим.

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

Привіт Джеймс, мені також подобається це рішення, але екранізатори прочитають "відключити параметр тире тире тире тире ...", що може бути дуже заплутаним для користувачів з обмеженими можливостями ... чи маєте ви уявлення, як ми могли цього уникнути? спасибі!
Хуліо

1
Чи можна додати клас до візуальних елементів, про які ви не хочете говорити, а потім додати команду ARIA, яка приховує / відключає клас? Можливо, щось на зразок однієї з прийомів, які тут використовуються? asurkov.blogspot.com/2012/02/…
james.garriss

Насправді, @Julio, слід поставити це як нове запитання. Мені цікаво знати, але я ніколи раніше не програмував для екранізаторів.
james.garriss

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

Не працює у багатьох браузерах. (як завжди, введення болить в зад.)
Сорок

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

інший спосіб - використовувати фонове зображення 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?



1

Ви можете використовувати em dash "-". У ньому немає видимих ​​пробілів між кожним символом.
деяких шрифтах!)

У HTML:

<параметр значення = "—————————————„ вимкнено> ————————————— </option>

Або в XHTML:

<value 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.