CSS :after content below a select element causes click not to work

标签 css select absolute pseudo-element

我有这个(简化的)css 用于选择元素以摆脱特定于浏览器的外观

.select{
    display:inline-block;
    position:relative;
}
.select:after{
    position:absolute;
    bottom:0;right:0;
    content:'\2193'; 
}
select{
    appearance:none; (-moz and -webkit too)
    width:100%;
    height:100%;
}

(最好在 http://jsfiddle.net/kwpke3xh/ 中看到)

body{
    background:#eef;
    font-family:sans-serif;
}
.select{
    display:inline-block;
    background-color:#fff;
    border-radius:.5em;
    border:.1rem solid #000;
    color:#013;
    width:8em;
    height:1.5em;
    vertical-align:middle;
    position:relative;
}
.select:after{
	position:absolute;
	bottom:.15em;top:.15em;right:.5rem;
	content:'\2193'; 
}
select{
    -webkit-appearance:none;
   -moz-appearance:none;
   	appearance:none;
    font:inherit;
    border:none;
    background-color:transparent;
    color:inherit;
    width:100%;
    height:100%;
    padding:0 .5em;
}
<span class="select">
    <select>
        <option>A</option>
        <option>B</option>
    </select>
</span>

它看起来不错,除了 Firefox 仍然显示箭头(如描述的 Firefox 30.0 - -moz-appearance: none not working )

唯一的技术问题是,当我点击选择元素时,它会显示选项元素,但如果我直接点击箭头,则不会。

有没有办法避免这种情况?

最佳答案

最简单的 CSS 解决方案是添加 pointer-events: none到伪元素。这样做时,您可以点击该元素,因为鼠标事件已被删除。

Updated Example

.select:after {
    position:absolute;
    bottom:.15em;
    top:.15em;
    right:.5rem;
    content:'\2193';
    pointer-events: none;
}

(只需考虑 browser support for the property。)

关于CSS :after content below a select element causes click not to work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25777599/

相关文章:

c++ - QTreeView 中的自定义复选框不显示

mysql - 如何选择之前未使用过的唯一ID

css - 在没有绝对定位的情况下将 div 的位置设置为低于其他 div 的位置?

ruby-on-rails - Rails 公共(public)目录的绝对 URL

javascript - HTML - 来自一个 div 的子元素覆盖另一个 div

css - 文本数组的 javaFX css 样式不起作用

jquery - 使用 javascript 更改 css

javascript - 对象字面量变量

mysql - 如何在 MySQL 服务器中将最小(日期)和最大(日期)之间的小时分割为 4 小时板

css - 正文中 100% 的带边距的 div