Выберите Изменение стиля стрелки
Я пытаюсь заменить стрелку выбора с изображением моего собственного. Я включаю select в div с тем же размером, я устанавливаю фон select как прозрачный, и я включаю изображение(с тем же размером, что и Стрелка) в правом верхнем углу 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>
8 ответов:
вы пробовали что-то вроде этого:
.styled-select select { -moz-appearance:none; /* Firefox */ -webkit-appearance:none; /* Safari and Chrome */ appearance:none; }
не проверял, но должно работать.
EDIT: похоже, Firefox не поддерживает эту функцию до версии 35 (подробнее здесь)
есть обходной путь здесь, взглянем на
jsfiddle
на этот пост.
работает только с одним классом:
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; }
вот элегантное исправление, которое использует диапазон для отображения значения.
макет выглядит так:
<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>
Я создал
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+);
это будет хорошо работать, особенно для тех, кто использует 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 */ }
<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>
проверьте это Это хаки, просто так:
- Set
-prefix-appearance
доnone
удалить стили- использовать
text-indent
чтобы "подтолкнуть" содержимое немного вправо- наконец, set
text-overflow
на пустую строку. Все, что выходит за пределы его ширина станет... ничего! И это включает в себя стрелку.теперь вы можете стилизовать его так, как вы хотите:)
вот мой пример jsfiddle: http://jsfiddle.net/AEt5k/1/
стиль метки с помощью CSS и использовать события указателя:
<label> <select> <option value="0">Zero</option> <option value="1">One</option> </select> </label>
и относительный CSS
label:after { content:'BC'; display:inline-block; color:#000; background-color:#fff; margin-left:-17px; /* remove the damn :after space */ pointer-events:none; /* let the click pass trough */ }
Я просто использовал стрелку вниз здесь, но вы можете установить блок с фоновым изображением. Вот уродливый образец скрипки:https://jsfiddle.net/1rofzz89/
он работает во всех браузерах:
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; }