HTML 선택 상자의 높이 (드롭 다운)


86

그 것을 캔 누군가 확인 하지 당신이 선택 상자를 클릭 할 때 표시되는 드롭 다운의 높이를 변경할 수 있습니다.

select의 size 속성은 목록처럼 보이게 만들고 CSS의 height 속성도 그다지 좋지 않습니다.


드롭 다운은 클라이언트 수준 컨트롤이 아니라 응용 프로그램 수준 컨트롤입니다. (슬프게도)
Diodeus-James MacFarlane

답변:


91

확인했습니다.

아래로 떨어지는 부분은 다음 중 하나로 설정됩니다.

  1. 모든 항목을 표시하는 데 필요한 높이 또는
  2. 표시에 필요한 높이 x항목은 어디 (스크롤바와 남은 볼) x
    • Firefox 및 Chrome에서 20
    • IE 6, 7, 8에서 30
    • Opera 10의 경우 16
    • Opera 11의 경우 14
    • Safari 4의 경우 22
    • Safari 5의 경우 18
    • IE 5.0, 5.5의 11
  3. IE / Edge에서 옵션이 없으면 11 개의 공백 항목이 어리석게 높은 목록입니다.

위의 (3)에 대해이 JSFiddle 에서 결과를 볼 수 있습니다.


@scunliffe 방법 크롬 세트 (1) ~

size = "1"을 설정하거나 기본값이기 때문에 아무것도 설정하지 않으면 페이지 목록에서 드롭 다운과 정적 카테고리가 선택됩니다. 그러나 언급했듯이 실제 드롭 다운 높이는 브라우저에 의해 결정되며 개발자는 목록 높이를 제어 할 수 없습니다.
scunliffe

4
@scunliffe 모자 오프 카운트에 대한이 :) 제공
Shahil M을

5

나는이 문제를 해결하기 위해 드롭 다운 대체 jquery 플러그인을 개발하고 있습니다. 이 게시물에서 모양과 기능 측면에서 기본 드롭 다운과 거의 구별 할 수 없습니다 .

여기 데모 (다운로드 링크) : http://programmingdrunk.com/current-projects/dropdownReplacement/

다음은 플러그인의 프로젝트 페이지입니다.

http://plugins.jquery.com/project/dropdownreplacement

(업데이트 :) jquery 플러그인 페이지가 더 이상 작동하지 않는 것 같습니다. 플러그인이 작동하면 새 사이트에 내 플러그인을 넣지 않을 것이므로 programmingdrunk.com 링크를 사용하여 데모 / 다운로드를 받으십시오.


흥미로운 아이디어-나는 가짜 선택 목록을 "스킨"하는 기능 ( "기본"OS 테마에서 많은 기본값을 발견하므로 "이상하게"보임)과 내가 편리하다고 생각하는 목록의 내용을 제어하는 ​​기능을 좋아합니다 ( IE는 옵션 요소에 대한 스타일링 옵션을 거의 제공하지 않기 때문에)
scunliffe

이 답변의 마지막 링크는 죽었습니다!
Stephan 2011

네,하지만 데모 페이지는 플러그인 사이트보다 더 나은 리소스입니다. 그것은 또한 그것에 다운로드가 있습니다. 병,하지만 덕분에 답을 업데이트
mkoryak

이것은 굉장해 보입니다. : DI는 jquery의 최신 버전으로 테스트 할 시간이 있는지 궁금합니다. 감사합니다
Thang Pham 2013 년

난 몰라,하지만 당신이 할 경우 : 보고서 다시 부담없이 - 사실 나는 그것이 1.8.2와 함께 작동하는지 알
mkoryak

5

아니 . 해당 속성은 브라우저에 따라 다르기 때문에 선택 드롭 다운의 높이를 변경할 수 없습니다.

그러나 그 기능을 원한다면 많은 옵션이 있습니다. 부트 스트랩 dropdown-menu을 사용하고 max-height속성을 정의 할 수 있습니다 . 이 같은.

$('.dropdown-menu').on( 'click', 'a', function() {
    var text = $(this).html();
    var htmlText = text + ' <span class="caret"></span>';
    $(this).closest('.dropdown').find('.dropdown-toggle').html(htmlText);
});
.dropdown-menu {
    max-height: 146px;
    overflow: scroll;
    overflow-x: hidden;
    margin-top: 0px;
}

.caret {
	  float: right;
    margin-top: 5%;
}

#menu1 {
    width: 160px; 
    text-align: left;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
   
<div class="container" style="margin:10px">
  <div class="dropdown">
    <button class="btn btn-default dropdown-toggle" type="button" id="menu1" data-toggle="dropdown">Tutorials
    <span class="caret"></span></button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="menu1">
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
      <li><a href="#">HTML</a></li>
      <li><a href="#">CSS</a></li>
      <li><a href="#">JavaScript</a></li>
      <li><a href="#">About Us</a></li>
    </ul>
  </div>
</div>


2

사실 당신은 할 수 있습니다! 자바 스크립트로 번거롭게하지 마세요 ... 제가 만들고있는 웹 사이트에 대해 똑같은 일에 매달 렸고 태그에 대한 CSS의 'font-size'속성을 늘리면 높이도 자동으로 증가합니다. 사소하지만 많이 신경이 쓰이는 것 ha ha


1
나는 목표가 단순히 더 많은 공간을 차지하는 것이 아니라 드롭 다운 상자에 더 많은 선택 사항을 표시하는 것이라고 가정합니다.
JReader

0

이것은 완벽한 솔루션은 아니지만 일종의 작동합니다.

선택 태그에 다음 속성을 포함하십시오. 여기서 'n'은 표시되는 드롭 다운 행의 수입니다.

<select size="1" position="absolute" onclick="size=(size!=1)?n:1;" ...>

이 솔루션에는 세 가지 문제가 있습니다. 1) 첫 번째 마우스 클릭 중에 표시된 모든 요소가 빠르게 깜박입니다. 2) 위치가 '절대'로 설정됩니다. 3) 'n'항목보다 적더라도 드롭 다운 상자는 여전히 'n'항목의 크기입니다.


좋은 시도이지만 운이 없었으며 onFocus로 대체하려고했습니다.
이스마일 이크발

0

치 행 답은 문제에 대한 좋은 방법입니다,하지만 난 내가 오류 발견했습니다 onclick인수를. 대신 다음과 같습니다.

<select size="1" position="absolute" onclick="size=(size!=1)?1:n;" ...>

(그리고 " n "을 필요한 줄 수로 바꿔야 함을 언급 )


-2

하나의 높이를 변경할 수 있습니다. 사용하지 마십시오 height="500"(예제 번호 일뿐). 스타일을 사용하십시오. <style>태그 를 사용 하거나 다음을 사용할 수 있습니다 .

<!DOCTYPE html>
<html>
<body>
  <select id="option" style="height: 100px;">
    <option value="1">Option 1
    <option value="2">Option 2
  </select>
</body>
</html>

나는 변화를 주목한다.

  <select id="option" style="height: 100px;">

그리고 훨씬 더 ...

style="height: 100px;">

보이 시죠?

도움이된다면 찬성 해주세요!


<select>요소 자체가 아니라 요소 를 클릭 할 때 열리는 사물의 높이 스타일 지정에 대한 질문 입니다. 나는 10 년 전에이 위젯의 ​​스타일링이 사실상 불가능했을 때이 질문을했습니다. 나는 이것이 더 이상 사실이 아니라고 확신합니다.
mkoryak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.