선택의 화살표를 내 사진으로 바꾸려고합니다. 같은 크기의 div에 선택을 포함하고 선택의 배경을 투명으로 설정하고 div의 오른쪽 상단 모서리에 배경으로 그림 (화살표와 같은 크기)을 포함합니다.
Chrome에서만 작동합니다.
Firefox 및 IE9에서 어떻게 작동하도록 할 수 있습니까?
.styled-select {
width: 100px;
height: 17px;
overflow: hidden;
overflow: -moz-hidden-unscrollable;
background: url(images/downarrow_blue.png) no-repeat right white;
border: 2px double red;
display: inline-block;
position: relative;
}
.styled-select select {
background: transparent;
-webkit-appearance: none;
width: 100px;
font-size: 11px;
border: 0;
height: 17px;
position: absolute;
left: 0;
top: 0;
}
body {
background-color: #333333;
color: #FFFFFF;
}
.block label {
color: white;
}
<HTML>
<HEAD>
</HEAD>
<BODY>
<p/>
<form action="/prepareUpdateCategoryList.do?forwardto=search">
<fieldset class="block" id="searchBlock">
<p>
<label style="width:80px">Class</label>
<div class="styled-select">
<select property="voucherCategoryClass">
<option value="0">Select </option>
<option value="7382">steam </option>
</select>
</div>
</p>
</fieldset>
</form>
</BODY>
</HTML>
답변
다음과 같은 것을 시도해 보셨습니까?
.styled-select select {
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari and Chrome */
appearance:none;
}
테스트하지 않았지만 작동해야합니다.
편집 : Firefox는 버전 35 까지이 기능을 지원하지 않는 것 같습니다 ( 여기에서 자세히 읽으십시오 )
여기에 해결 방법이 있습니다jsfiddle
. 해당 게시물을 살펴보십시오 .
답변
나는를 설정 한 select
그러나 그것은 일련의 폭이없는, 훌리오의 대답과 비슷한 화살표 사용자 정의로와를 사용하여 svg
배경 이미지로. ( arrow_drop_down
머티리얼 UI 아이콘에서)
select {
-webkit-appearance: none;
-moz-appearance: none;
background: transparent;
background-image: url("data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
background-repeat: no-repeat;
background-position-x: 100%;
background-position-y: 5px;
border: 1px solid #dfdfdf;
border-radius: 2px;
margin-right: 2rem;
padding: 1rem;
padding-right: 2rem;
}
IE에서도 작동해야하는 경우 svg 화살표를 base64로 업데이트하고 다음을 추가합니다.
select::-ms-expand { display: none; }
background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+);
화살표의 크기와 간격을 더 쉽게 만들려면 다음 svg를 사용하십시오.
url("data:image/svg+xml,<svg width='24' height='24' xmlns='http://www.w3.org/2000/svg'><path d='m0,6l12,12l12,-12l-24,0z'/><path fill='none' d='m0,0l24,0l0,24l-24,0l0,-24z'/></svg>");
화살표 측면에 간격이 없습니다.
답변
하나의 클래스로 작업 :
select {
width: 268px;
padding: 5px;
font-size: 16px;
line-height: 1;
border: 0;
border-radius: 5px;
height: 34px;
background: url(http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat right #ddd;
-webkit-appearance: none;
background-position-x: 244px;
}
http://jsfiddle.net/qhCsJ/4120/
답변
다음은 범위를 사용하여 값을 표시하는 우아한 수정입니다.
레이아웃은 다음과 같습니다.
<div class="selectDiv">
<span class="selectDefault"></span>
<select name="txtCountry" class="selectBox">
<option class="defualt-text">-- Select Country --</option>
<option value="1">Abkhazia</option>
<option value="2">Afghanistan</option>
</select>
</div>
답변
이것은 최신 브라우저 버전에서 테스트 된 Bootstrap을 사용하는 사람들에게 특히 잘 작동합니다.
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
/* Some browsers will not display the caret when using calc, so we put the fallback first */
background: url("http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") white no-repeat 98.5% !important; /* !important used for overriding all other customisations */
background: url("http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") white no-repeat calc(100% - 10px) !important; /* Better placement regardless of input width */
}
/*For IE*/
select::-ms-expand { display: none; }
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/>
<div class="container">
<div class="row">
<div class="col-xs-6">
<select class="form-control">
<option>Option 1</option>
<option>Option 2</option>
<option>Option 3</option>
</select>
</div>
</div>
</div>
답변
이것을 확인하십시오 그것은 해키하고 간단합니다.
- 설정
-prefix-appearance
하는none
스타일을 제거 - 사용하다
text-indent
콘텐츠를 약간 오른쪽으로 “밀어 넣는”데 합니다. - 마지막으로
text-overflow
빈 문자열로 설정 합니다. 너비를 넘어서는 모든 것이 … 아무것도 될 것입니다! 그리고 그것은 화살표를 포함합니다.
이제 원하는 방식으로 스타일을 지정할 수 있습니다. 🙂
.selectParent {
width: 80px;
overflow: hidden;
}
.selectParent select {
text-indent: 1px;
text-overflow: '';
width: 100px;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
padding: 2px 2px 2px 2px;
border: none;
background: transparent url("http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png") no-repeat 60px center;
}
<div class="selectParent">
<select>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
</select>
</div>
답변
모든 브라우저에서 작동합니다.
select {
width: 268px;
padding: 5px;
font-size: 16px;
line-height: 1;
border: 0;
border-radius: 5px;
height: 34px;
background: url(http://cdn1.iconfinder.com/data/icons/cc_mono_icon_set/blacks/16x16/br_down.png) no-repeat right #ddd;
appearance:none;
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari and Chrome */
background-position-x: 244px;
}
