最新更新:(jsFiddle:http://jsfiddle.net/ztayse92/)
使上一个解决方案的箭头位于下拉列表下方并使用透明背景。这是最完美的,它解决了覆盖/悬停不可点击区域的问题。
更新:不使用图像破解答案:(jsFiddle:http://jsfiddle.net/swpha0s0/4/)
我制作了一个具有相对定位的容器,并将下拉选择和覆盖符号(箭头)放置在绝对定位上。在 CSS 中,我还完全删除了箭头样式。唯一的缺点是,由于箭头符号是一个叠加层,它不可点击,或者换句话说,当鼠标点击箭头时,下拉菜单不会打开。我使箭头尽可能少地占用空间。我还想过在箭头上放置一个单击处理程序并使用 JavaScript 打开下拉列表,但根据此(Is it possible to use JS to open an HTML select to show its option list?)这是不可能的。当您将鼠标悬停在箭头上时,我将光标设置为默认值,这样用户就不会收到错误的反馈,即这也是可点击的。所以这是您想要的最接近的解决方案 - 我很好奇为什么不允许使用图像以及它的用例是什么??
HTML:
<div class="parent">
<select class="dropdown">
<option value=">">></option>
<option value="<"><</option>
<option value=">=">≥</option>
<option value="<=">≤</option>
<option value="==">=</option>
<option value="!=">≠</option>
</select><div class="overlay-arrow">▼</div>
</div>
CSS:
select.dropdown {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background-position: 22px 3px;
background-size: 13px 13px;
width: 40px;
height: 20px;
margin-left: 4px;
position: absolute;
cursor: pointer;
}
.overlay-arrow {
font-size: 9px;
color: red;
position: absolute;
right: 0px;
top : 10px;
cursor: default;
line-height: 1px;
}
.parent {
position: relative;
width: 40px;
height: 20px;
float: left;
margin: 0px;
padding: 0px;
}
带图片的原始答案:(jsFiddle:http://jsfiddle.net/swpha0s0/2/):
我建议你使用这样的 CSS
select.dropdown {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: url('http://www.durhamcollege.ca/wp-content/themes/dc/images/green_download_arrow.png') no-repeat;
background-position: 22px 3px;
background-size: 13px 13px;
width: 40px;
height: 20px;
margin-left: 4px;
}
.dropdown-container {
float :left;
margin: 0px;
}
input {
margin-top:4px;
float: left;
display: block;
}
input[type=checkbox]{
margin-top:8px;
}
您必须静态更改背景位置并以您喜欢的方式将其居中,但如果您只需要更改箭头外观或放置自己的图像,那就很好了。如果没有图像/css 或 javascript(如果您想完全更改小部件),则无法做到这一点。您可以在单击某个类以更改背景时切换它,这样您也可以有另一个向上的箭头。