淘先锋技术网

首页 1 2 3 4 5 6 7

最近在做Web项目的时候,遇到了需要模拟select下拉框的需求,但是由于种种原因,我不能使用jQuery或者其他JavaScript库,于是我参考了许多资料,最终通过纯CSS来实现了这个功能。

.select-container {
position: relative;
display: inline-block;
}
.select-container select {
display: none;
}
.select-container .select-option {
display: block;
position: absolute;
top: 100%;
left: 0;
z-index: 1;
width: 100%;
background-color: white;
border: 1px solid gray;
margin-top: 5px;
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.4);
max-height: 120px;
overflow-y: scroll;
}
.select-container .select-option >option {
display: block;
padding: 5px;
cursor: pointer;
}
.select-container select:focus ~ .select-option {
display: block;
}

以上是实现纯 CSS 模拟 select 的核心代码,首先我们需要在 HTML 里创建一个 select 元素,并将其隐藏,然后使用一个带有 .select-container 类名的 div 元素包裹它。接着创建一个带有 .select-option 类名的对应下拉框元素,并将其放在 .select-container 元素后面,通过绝对定位让其在 select 元素下方并与之重合,最后使用 CSS 将 option 元素设为块级元素,让它们可以垂直排布,并在选中时触发 select-option 元素的显示。

使用这种纯 CSS 的方法模拟 select 的主要优点是非常轻量,且足以应对大多数情况下的需求。但是需要注意的是,它的兼容性并不十分完美,有些浏览器可能存在一些 minor 的 bug,因此需要根据具体情况来决定是否使用。