html 선택 옵션 구분자


208

select 태그에서 구분 기호를 어떻게 만드나요?

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
유니 코드는 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

그러나 옵트 그룹은 PC와 모바일에서 다르게 렌더링되므로 비활성화 된 옵션이 여전히 최상의 솔루션입니다.
GoTo December

1
HTML 파일의 인코딩은 또한 "─"문자가 횡설수설 대신 행으로 표시되는 데 중요합니다. BOM이있는 UFT8이 좋은 선택 일 수 있습니다.
Andreas Jansson

1
@ db0 모양이 일치하지 않습니다. grab.by/EzEi vs grab.by/EzEk(jsfiddle 링크 참조)
Alex K

76

시험:

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

40
optgroup에 레이블을 붙이는 대신 스타일 시트에 다음을 추가해보십시오.
Laurence Gonsalves

2
옵트 그룹 레이블은 그룹을 설명해야합니다. 브라우저가 HTML 4.01 사양의 스크린 샷에 따라 구현 된 경우 사용자는 대시 행에 직면하게되며 그 뒤에 무엇이 있는지 찾아야합니다.
Quentin

2
@Laurence : IE7은 optgroup 또는 옵션 요소에서 CSS 스타일을 지원하지 않습니다. 적어도 국경이 아님
그롬

1
<optgroup style = "border-top : 1px dot #ccc; margin : 5px 0;"> </ optgroup>-최소한 파이어 폭스에서 시원해 보입니다!
Ben Sinclair

1
이와 같은 빈 옵트 그룹은 합법적 인 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를 사용했습니다. 최대 높이 : 1px; 패딩 : 0; 글꼴 크기 대신 : 1pt; 1px 줄
kofifus

15

optgroup 요소를 사용하지 않으려면 대신 대시를 옵션 요소에 넣고 disabled 속성을 지정하십시오. 표시되지만 회색으로 표시됩니다.

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

안녕하세요 제임스, 나는이 솔루션도 좋아하지만 스크린 리더는 "비활성화 옵션 대시 대시 대시 대시 ..."를 읽습니다. 감사합니다!
Julio

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

많은 브라우저에서 작동하지 않습니다. (평소와 같이 입력은 엉덩이에 통증이 있음)
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; }
니콜라스 르 티에리 드 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/

또는 자바 스크립트 (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)에서는 em 대시 사이에 공백이 있습니다.
행크

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.