可以使用以下代码来实现用DIV+JS来模拟 select option 的效果:
HTML代码:
<div class="select-box">
<div class="select-head">
<span class="selected-option">请选择</span>
<i class="arrow"></i>
</div>
<ul class="option-list">
<li data-value="1">111</li>
<li data-value="2">222</li>
<li data-value="3">333</li>
<li data-value="4">444</li>
</ul>
</div>
CSS代码:
.select-box {
position: relative;
width: 120px;
height: 30px;
border: 1px solid #ccc;
border-radius: 4px;
background-color: #fff;
cursor: pointer;
}
.select-head {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 10px;
height: 100%;
}
.selected-option {
font-size: 14px;
}
.arrow {
width: 0;
height: 0;
border-style: solid;
border-width: 5px 4px 0 4px;
border-color: #666 transparent transparent transparent;
}
.option-list {
position: absolute;
top: 30px;
left: 0;
width: 100%;
max-height: 120px;
overflow-y: auto;
border: 1px solid #ccc;
border-top: none;
border-radius: 0 0 4px 4px;
background-color: #fff;
z-index: 1;
}
.option-list li {
padding: 5px 10px;
font-size: 14px;
cursor: pointer;
}
.option-list li:hover {
background-color: #f5f5f5;
}
JS代码:
var selectBox = document.querySelector('.select-box');
var selectedOption = selectBox.querySelector('.selected-option');
var optionList = selectBox.querySelector('.option-list');
var options = optionList.querySelectorAll('li');
selectBox.addEventListener('click', function() {
optionList.classList.toggle('show');
});
options.forEach(function(option) {
option.addEventListener('click', function() {
var value = this.getAttribute('data-value');
selectedOption.textContent = this.textContent;
optionList.classList.remove('show');
});
});
这段代码会生成一个类似于 select option 的下拉框,点击下拉框头部可以展开选项列表,点击选项可以选择对应的值并收起选项列表。