我正试图用我自己的图片替换选择的箭头.我将选择包含在具有相同大小的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;
}
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
Mor*_*eus 106
你尝试过这样的事情:
.styled-select select {
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari and Chrome */
appearance:none;
}
Run Code Online (Sandbox Code Playgroud)
没有测试,但应该工作.
编辑:看起来Firefox在35版之前不支持此功能(在此处阅读更多内容)
有一种变通方法这里,看看jsfiddle
该讯息.
Jul*_*ins 39
只使用一个类:
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;
}
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/qhCsJ/4120/
svn*_*vnm 37
我已经设置了一个select
类似于Julio的答案的自定义箭头,但它没有设置宽度并使用svg
背景图像作为背景图像.(arrow_drop_down
来自material-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;
}
Run Code Online (Sandbox Code Playgroud)
如果你需要它也可以在IE中更新svg箭头到base64并添加以下内容:
select::-ms-expand { display: none; }
background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSdibGFjaycgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyB3aWR0aD0nMjQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc+PHBhdGggZD0nTTcgMTBsNSA1IDUtNXonLz48cGF0aCBkPSdNMCAwaDI0djI0SDB6JyBmaWxsPSdub25lJy8+PC9zdmc+);
Run Code Online (Sandbox Code Playgroud)
Pet*_*nan 27
这是一个优雅的修复,使用跨度来显示值.
布局是这样的:
<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>
Run Code Online (Sandbox Code Playgroud)
Sia*_*vas 17
这对于使用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; }
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
Md.*_*ana 11
我想澄清一些之前没有人提到过的事情。
svg
图像或图标<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M4 10.127L12 18.127L20 10.127H4Z" fill="#8E8E93"/> </svg>
尝试找到它。data:image/svg+xml;utf8,
fill="#8E8E93"
为此fill="%238E8E93"
如果您想添加十六进制颜色,您应该更改#
为%23
这是html代码:
<fieldset>
<label for="editName">Country</label>
<select class="ra-select">
<option value="bangladesh" selected>Bangladesh</option>
<option value="saudi arabia">Saudi Arabia</option>
<option value="us">Uinited State Of America</option>
<option value="india">India</option>
</select>
</fieldset>
Run Code Online (Sandbox Code Playgroud)
这是CSS代码:
.ra-select {
width: 30%;
padding: 10px;
/* Replace Default styling (arrow) */
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
background-image: url('data:image/svg+xml;utf8,<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 10.127L12 18.127L20 10.127H4Z" fill="%238E8E93"/></svg>');
background-repeat: no-repeat;
background-position-y: 50%;
background-position-x: 98%;
}
.ra-select:focus,
.ra-select:hover {
outline: none;
border: 1px solid #bbb;
}
.ra-select option {
background-color: #fff;
}
Run Code Online (Sandbox Code Playgroud)
Tee*_*muK 10
好吧,看来这里已经有很多答案了。有些可能比其他更好。如果有人绝望地向下滚动这里,这是我的两分钱:
如果您确实想设计下拉菜单的样式,请不要使用<select>
. div
里面有常规的<ul>
就会灵活很多。但是,如果您真的坚持使用 select 因为您只想要最小的下拉菜单,那么这是我的:
select {
appearance: none;
background: white;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16px' height='16px' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M6.1018 8C5.02785 8 4.45387 9.2649 5.16108 10.0731L10.6829 16.3838C11.3801 17.1806 12.6197 17.1806 13.3169 16.3838L18.8388 10.0731C19.5459 9.2649 18.972 8 17.898 8H6.1018Z' fill='%23212121'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 0.5rem center;
border-radius: 2px;
padding: 0.25rem 2rem 0.25rem 0.75rem;
}
Run Code Online (Sandbox Code Playgroud)
<select>
<option value="bottom-right">Bottom right</option>
<option value="bottom-left">Bottom left</option>
<option value="top-right">Top right</option>
<option value="top-left">Top left</option>
</select>
Run Code Online (Sandbox Code Playgroud)
因此,关键部分是找到一个插入符号 svg,您可以将其 URL 转换为字符串。我可以稍微增强它,也许以某种方式旋转插入符号,但实际上 - 我很高兴它并不难看。
检查一下这很简单,很简单:
-prefix-appearance
以none
删除样式text-indent
将内容"推"到右侧text-overflow
为空字符串.超出它宽度的一切都将变成......没有!这包括箭头.现在你可以随心所欲地设计风格:)
这是我的jsfiddle示例:http://jsfiddle.net/AEt5k/1/
/* FIX OF UGLY SELECT */
SELECT {
background: url("data:image/svg+xml,<svg height='10px' width='10px' viewBox='0 0 16 16' fill='%23000000' xmlns='http://www.w3.org/2000/svg'><path d='M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/></svg>") no-repeat;
background-position: calc(100% - 0.75rem) center !important;
-moz-appearance:none !important;
-webkit-appearance: none !important;
appearance: none !important;
padding-right: 2rem !important;
}
Run Code Online (Sandbox Code Playgroud)
调整变量以匹配您的表单样式。
铬合金:
火狐:
歌剧:
边缘:
ps 通过 Bootstrap 4 进行表单和输入设计
使用CSS设置标签样式并使用指针事件:
<label>
<select>
<option value="0">Zero</option>
<option value="1">One</option>
</select>
</label>
Run Code Online (Sandbox Code Playgroud)
和相对的CSS是
label:after {
content:'\25BC';
display:inline-block;
color:#000;
background-color:#fff;
margin-left:-17px; /* remove the damn :after space */
pointer-events:none; /* let the click pass trough */
}
Run Code Online (Sandbox Code Playgroud)
我刚刚在这里使用了向下箭头,但您可以设置一个带有背景图像的块.这是一个丑陋的小提琴样本:https: //jsfiddle.net/1rofzz89/
小智 5
它可以在所有浏览器中使用:
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;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
只需这样做:
select {
background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2U9IiNiYmIiPjxwYXRoIGQ9Ik02IDlsNiA2IDYtNiIvPjwvc3ZnPg==) !important;
background-repeat: no-repeat !important;
background-position-x: 100% !important;
background-position-y: 50% !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
-ms-appearance: none !important;
-o-appearance: none !important;
appearance: none !important;
}
select::-ms-expand {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
.select{
-webkit-appearance: none;
-moz-appearance: none;
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: 98%;
background-position-y: 50%;
}
Run Code Online (Sandbox Code Playgroud)