크롬에서 작동하지 않는 옵션 패딩 선택


84

크롬에서 작동하지 않는 옵션 패딩 선택

<style>
select option { padding:5px 0px; }
</style>    
<select>
<option>1</option>
<option>2</option>
<option>3</option> 
</select>

2
당신은 무엇을 성취하려고합니까? 각 옵션을 5px로 채워야합니까? 아니면 그냥 메인 박스?
DeeKayy90

그래 ... 나는 옵션 값을 패딩 필요
Piyush Marvaniya

1
엄격한 패딩은 아니지만 왼쪽 패딩 패딩에는 & nbsp; 이 문제가 해결되는 동안 : jsfiddle.net/chech/u5rcheqf/1
chech

답변:


137

크롬의 선택 입력에 패딩을 적용하는 방법을 찾았습니다.

select{
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 5px;
}

현재 크롬 39.0.2171.71 (64 비트)과 사파리 (Mac에서만 테스트)에서 작동하는 것 같습니다.

이것은 선택 입력에 추가 된 기본 스타일링을 제거하는 것처럼 보이지만 (드롭 다운 화살표도 제거됨) 크롬을 재정의하지 않고 자신 만의 스타일을 사용할 수 있습니다.

http://fettblog.eu/style-select-elements/ 에서 코드를 사용하는 동안이 수정 사항을 우연히 발견했습니다.


1
모든 브라우저에서 작동하는 또 다른 해결책이 추가되어 &nbsp;확인 선택 목록에 첫 번째 옵션에 , 희망이 도움이됩니다.
Shaiju T

2
@stom 왼쪽 및 오른쪽 패딩에는 작동하지만 위쪽 및 아래쪽 패딩에는 작동하지 않을 것이라고 생각합니다.
rmmoul

1
이것은 적어도 내 컴퓨터에서 더 이상 작동하지 않습니다! :)
Nuno cruz

1
또한 같은 플러그인을 사용할 수있는 선택 2 또는 선택 하여 변환 <select><option/></select>완벽하게 사용자 정의에 요소 <ul><li/></ul>요소를. 이렇게하면 다른 입력 필드 또는 일반 UI와 일치하는 모든 드롭 다운의 스타일을 지정할 수 있습니다.
Tad Wohlrapp

3
화살은 이것으로 잃어버린다 :(
Raul H

40

이 간단한 해킹은 텍스트를 들여 씁니다. 잘 작동합니다.

select {
  text-indent: 5px;
}

15
이렇게하면 선택 항목 자체에 패딩이 추가되지만 옵션에는 추가되지 않습니다. 그리고 옵션으로 텍스트 들여 쓰기를 적용하는 크롬 64에서 하나가 작동하지 않습니다
chris.ribal

Chrome 71은이를 '알 수없는 속성'이라고합니다.
Mark

9

그것은 보인다

안타깝게도 웹킷 브라우저는 아직 옵션 태그 스타일을 지원하지 않습니다.

여기에서 비슷한 질문을 찾을 수 있습니다.

  1. 선택 태그의 옵션 요소에 스타일을 지정하는 방법은 무엇입니까?
  2. 선택 드롭 다운 html의 스타일 옵션 값이 Chrome 및 Safari에서 작동하지 않음

가장 널리 사용되는 크로스 브라우저 솔루션은 ul li를 사용하는 것입니다.

도움이 되었기를 바랍니다.


9
답변 해주셔서 감사합니다. 웹 사이트, HTML, CSS가 등장한 지 수년이 지난 후에도 여전히 선택 옵션 패딩과 같은 스타일을 지정할 수 없다는 사실이 놀랍습니다. 스타일링 및 위치 지정 요소는 매우 실망 스러울 수 있지만 Android 개발에서는 훨씬 쉽습니다. HTML 및 CSS를 사용하는 웹 환경이 데스크톱 및 기본 모바일 환경에 비해 "미완성", "작업 진행 중"으로 보이는 이유를 이해하지 못합니다.
Bryan

2
아마도 가까운 장래에 웹이 더 아름답게 될 것이고 개발자는 shadow dom-robdodson.me/shadow-dom-styles :) 개발자가 양식 요소의 내부 레이어를 제어 할 수 있기를 바랍니다. 그래도 RIP IE.
Pravin Waychal 2015

2
@Bryan Web은 오래된 기술이기 때문에 개선되지 않은 오래된 아이디어가 있습니다. 브라우저 지원으로 인해 새로운 기능은 항상 누구에게나 도달하는 속도가 느 렸고 무감각 한 (기존의 해결 방법이 있고 사람들이하는 일이 있고 최종 사용자가 이러한 브라우저가 부족하다는 것을 알지 못함) 아무것도 변경되지 않았기 때문입니다.
csga5000 2015

6

나는 이것으로 그것을 고쳤다

select {
    max-height: calc(1.2em + 24px);
    height: calc(1.2em + 24px);
}


max-height: calc(your line height + (top + bottom padding));
height: calc(your line height + (top + bottom padding));

이것은 지금까지 내가 본 최고의 솔루션입니다. 하지만 height: calc(1.2em + 24px);그렇지 않은 경우에만 효과가있었습니다max-height: calc(1.2em + 24px);
Julius

Julius 나는 모든 주요 브라우저 max-height가 잘 작동하는지 확인했습니다. 그러나 높이 속성을 사용하는 것도 좋은 기회입니다.
Ali Sufyan

3

아주 간단한 아이디어이지만 그에 따라 수정할 수 있습니다. 이것은보기 좋게 설정되지 않고 단지 아이디어를 제공하기위한 것입니다. 도움이 되었기를 바랍니다.

CSS :

ul {
    width: 50px;
    height: 20px;
    border: 1px solid black;
    display: block;

}

li {
    padding: 5px 0px;
    width: 50px;
    display: none;

}

HTML :

<ul id="customComboBox">
&nbsp
    <li>Test</li>
    <li>Test 2</li>
    <li>Test 3</li>
</ul>

스크립트:

$(document).ready(function(){
    $("#customComboBox").click(function(){
        $("li").toggle("slow");
    });
});

데모


1
@PiyushMarvaniya 이해하지만 선택 옵션으로 단일 요소를 수정할 수 없다는 것을 기억합니다. 그래서 대안을 제시했습니다.
DeeKayy90 2014

1
이 예제는 키보드 탐색 (화살표 또는 Mac 단축키), 웹 접근성 도구를 제공하지 않습니다.
Piotr Łużecki 2015 년

다시 말하지만, 문제는 사용자 지정 드롭 다운을 만드는 것이 아니라 패딩을 추가하는 것이 었습니다. 나는 그들의 요구 사항에 따라 OP를 구축하기 위해 단일 기반을 제공했지만 이에 대한 사용자 지정 컨트롤을 만들지는 않을 것입니다. =)
DeeKayy90 2015 년

1
UL / LI 드롭 다운을 사용하려는 경우 Bootstrap의 드롭 다운 위젯을 사용하는 것이 좋습니다. 버전 2 및 3은 화살표 키를 활성화하기 위해 role = "menu"및 role = "navigation"을 지원합니다. IMO에서 잘 조사 된 것을 사용하는 것이 합리적입니다.
mbokil

@mbokil +1, 바퀴를 재발 명하는 것보다 확실히 좋은 옵션, 거기있는 것을 사용하십시오.
DeeKayy90

2

option"시스템"생성 드롭 다운 메뉴이기 때문에 입력시 작동하지 않지만 선택 항목을 설정할 수 있습니다 padding.

CSS에서 box-sizing속성을 content-box로 재설정하면 됩니다 .

의 기본값은 select입니다 border-box.

select {
 box-sizing: content-box;
 padding: 5px 0;
}

당신은 선택의 패딩을 설정할 수 있습니다-Chrome 75에서 완벽하게 작동
danday74

1

나는 당신의 문제에 대한 약간의 트릭이 있습니다. 그러나이를 위해서는 자바 스크립트를 사용해야합니다. 브라우저가 Chrome 인 것을 감지하면 모든 옵션 사이에 " 더미 "옵션을 삽입하십시오 . " 더미 "옵션에 대한 새 클래스를 제공 하고 비활성화하십시오. font-size 속성으로 정의 할 수있는 " 더미 "옵션 의 높이입니다 .

CSS :

option.dummy-option-for-chrome {
  font-size:2px;
  color:transparent;
}

스크립트:

function prepareHtml5Selects() {

  var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
  if(!is_chrome) return;

  $('select > option').each(function() {
    $('<option class="dummy-option-for-chrome" disabled></option>')
     .insertBefore($(this));
  });
  $('<option class="dummy-option-for-chrome" disabled></option>')
    .insertAfter($('select > option:last-child'));
}

1

패딩이 아니라 단순히 더 크게 만드는 것이 목표 인 경우 font-size. 그리고 함께 사용하면 font-size-adjust옵션이 아닌 선택시 글꼴 크기가 다시 정상으로 줄어들므로 결국 option더 커집니다.

모든 브라우저에서 작동하는지 또는 최신 상태로 계속 작동하는지 확실하지 않습니다.

Chrome 85 및 Firefox 81에서 테스트되었습니다.

스크린 샷 (Firefox)

select {
    font-size: 2em;
    font-size-adjust: 0.3;
}
<label>
  Select: <select>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
</label>


0

Jquery 없음-타사 js 파일 없음

function clickComboBox(){
  comboOpt = document.getElementsByClassName("opt");
  for (i = 0; i < comboOpt.length; i++) {
      if (comboOpt[i].style.display === "block") {
        comboOpt[i].style.display = "none";
      } else {
        comboOpt[i].style.display = "block";
      }
  }    
}
function clickOpt(value1,text1){
  document.getElementById("selectedValue").value=value1;
  document.getElementById("customComboBox").innerHTML=text1;
  clickComboBox();
}
#customComboBox{
width: 150px;
height: 20px;
border: 1px solid #CCCCCC;
display: block;
padding: 2px 5px;
}
.opt{
padding: 5px 0px;background-color:#CCCCCC;
width: 160px;
display: none;
}
<div id="customComboBox"  onClick="clickComboBox()">
-Select Value-
</div>
<input type="hidden" id="selectedValue">
  <div class="opt">
  <div onClick="clickOpt('01','Test1')"><img  src="https://pasteboard.co/J6940Vs.png" height="20">Test1</div>
  <div style="padding-left:10px;" onClick="clickOpt('02','Test2')">Test2</div>
  <div onClick="clickOpt('03','Test3')">Test3</div>
  </div>

스마트 코드-jquery 사용


0

모든 옵션의 임의 들여 쓰기

임의의 임의의 <option />요소 만 들여 쓰려면 &nbsp;여기에 게시 된 솔루션의 브라우저 간 호환성이 가장 뛰어난를 사용할 수 있습니다.

.optionGroup {
  font-weight: bold;
  font-style: italic;
}
<select>
    <option class="optionGroup" selected disabled>Choose one</option>
    <option value="sydney" class="optionChild">&nbsp;&nbsp;&nbsp;&nbsp;Sydney</option>
    <option value="melbourne" class="optionChild">&nbsp;&nbsp;&nbsp;&nbsp;Melbourne</option>
    <option value="cromwell" class="optionChild">&nbsp;&nbsp;&nbsp;&nbsp;Cromwell</option>
    <option value="queenstown" class="optionChild">&nbsp;&nbsp;&nbsp;&nbsp;Queenstown</option>
</select>

옵션의 정렬 된 들여 쓰기

그러나 데이터에 정렬되고 정렬 된 구조 가있는 경우 <optgroup/>구문 을 사용하는 것이 좋습니다 ....

HTML 요소는 요소 내에서 옵션 그룹을 만듭니다. (출처 : MDN 웹 문서 :<optgroup> )

<select>
    <optgroup label="Australia" default selected>
        <option value="sydney">Sydney</option>
        <option value="melbourne">Melbourne</option>
    </optgroup>
    <optgroup label="United Kingdom">
        <option value="london">London</option>
        <option value="glasgow">Glasgow</option>
    </optgroup>
</select>

안타깝게도 <optgroup />현재 브라우저 에서는 한 수준 만 허용되며 현재 지원됩니다. (출처 : w3.org .) 개인적으로, 사양의 해당 부분이 깨 졌다고 생각하지만 &nbsp;위 의 트릭 을 사용하여 항상 세 번째, 네 번째 등의 들여 쓰기 수준으로 확장 할 수 있습니다 .


-2

font-size필요한 경우 옵션에 대한 속성을 사용할 수 있습니다 .


이것은 크롬에서는 작동하지만 Firefox (최신 버전)에서는 작동하지 않는 것 같습니다. Firefox는 여전히 드롭 다운 이전의 선택되지 않은 상자에서 스타일을 대상으로합니다.

-8

선택 태그의 높이를 설정하기 만하면됩니다.

select{
    height: 30px;
    max-height: 30px;
}

이것은 다른 대답이 이미 말한 것을 반복하는 것입니다. 이것에 새로운 것을 줄 수 있습니까?
Tiw

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.