我正在尝试设计一个Select标签,如下图所示:
不知怎的,我设法通过将select标签包装在div中来设计它.但问题是,当我点击设计的箭头时,选择标签不起作用或显示所有列表.
我期待的是当我点击箭头时,select标签应该显示所有选项.因为箭头部分是使用父包装元素伪元素生成的,所以没有发生这种情况.因为it seems to be not working,我没有使用伪元素选择器选择标签.
我可以使用background-image来解决这个问题到父包装器,但由于我有权尽可能地更改html,我正在寻找更好的方法而不使用图像或javascript,即只使用CSS.
这是fiddle.
<div class="select-wrapper"> <select> <option>EEE</option> <option>ECE</option> <option>EIE</option> </select> </div>
.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; }
解决方法
添加指针事件:无;你的伪元素类.
注意: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; /* <-- */ }