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.