我正在尝试设计一个Select标签,如下图所示:
不知何故,我设法通过将选择标记包装在div中来设计它.但问题是当我点击设计的箭头时,选择标签不起作用或显示所有列表.
我期待的是当我点击箭头时,select标签应该显示所有选项.因为箭头部分是使用父包装元素伪元素生成的,所以没有发生这种情况.我没有使用伪元素选择器选择标签,因为它似乎无法正常工作.
我可以使用background-image
父包装器解决这个问题,但因为我有权尽可能地更改html,我正在寻找更好的方法,而不使用图像或javascript,即只使用CSS.
这是小提琴.
<div class="select-wrapper">
<select>
<option>EEE</option>
<option>ECE</option>
<option>EIE</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
.select-wrapper {
display:inline-block;
border:1px solid #bbbbbb;
position:relative;
width:120px;
-webkit-border-radius:5px;
-moz-border-radius:5px;
border-radius:5px;
margin-top: 10px;
}
.select-wrapper:before{
content: "";
position:absolute;
right: 5px;
top:8px;
border-width: 5px 5px 5px 5px;
border-style: solid;
border-color: #666666 transparent transparent transparent ;
z-index:3;
}
.select-wrapper:after {
content:"";
display:block;
position:absolute;
top:0px;
bottom:0px;
width:20px;
right:0px;
border-left:1px solid #bababa;
background-color:#ededed;
-webkit-border-top-right-radius:5px;
-moz-border-top-right-radius:5px;
border-top-right-radius:5px;
-webkit-border-bottom-right-radius:5px;
-moz-border-bottom-right-radius:5px;
border-bottom-right-radius:5px;
}
select {
width:100%;
background-color:#ededed;
border:none;
outline:none;
padding:0px;
margin:0px;
position:relative;
}
Run Code Online (Sandbox Code Playgroud)
添加pointer-events:none;
到您的伪元素类。
注意: IE10- 不支持指针事件属性(caniuse说 IE11 会支持)
所以对于 IE 来说:
要么你必须解决箭头不可点击的问题,要么
您可以使用Modernizr来检测是否支持指针事件 - 如果不支持(IE10-) - 恢复为标准内置箭头。(在这种情况下不使用特殊的样式类)
.select-wrapper:before{
content: "";
position:absolute;
right: 5px;
top:8px;
border-width: 5px 5px 5px 5px;
border-style: solid;
border-color: #666666 transparent transparent transparent ;
z-index:3;
pointer-events:none; /* <-- */
}
.select-wrapper:after {
content:"";
display:block;
position:absolute;
top:0px;
bottom:0px;
width:20px;
right:0px;
border-left:1px solid #bababa;
background-color:#ededed;
-webkit-border-top-right-radius:5px;
-moz-border-top-right-radius:5px;
border-top-right-radius:5px;
-webkit-border-bottom-right-radius:5px;
-moz-border-bottom-right-radius:5px;
border-bottom-right-radius:5px;
pointer-events:none; /* <-- */
}
Run Code Online (Sandbox Code Playgroud)