Skip to content

CSS实现菜单或下拉选择

其实本来可以用表单来做,但有定制化样式的需求,只能用CSS模拟实现了

比如要实现下拉选择的内容居中,在Chrome下可以这样

css
select {
  text-align-last: center
}

但是在移动端非Chrome下就没有办法了,是没法调整对齐的

无奈放弃原生表单,搬出CSS来从头模拟实现,HTML大概是这样

pug
.dropdown
  span 请选择
  ul.dropdown-content
    li 选项一    
    li 选项二    
    li 选项三

CSS如下

css
.dropdown {
  position: relative;
  display: inline-block;
}
.dropdown-content {
  z-index: 100;
  position: absolute;
  top: 100%; // top定位这里用百分比
  width: 92%;
  margin-left: -2%;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  // border: 1px solid #b5b6b5;
  list-style: none;
  padding: 15px 10px;
  font-size: 14px;
}
.dropdown-item {
  line-height: 22px;
}
.dropdown-item:hover {
  cursor: pointer;
}
.dropdown:hover .dropdown-content {
  opacity: 1;
  z-index: 100;
  transition: opacity .3s
}

缺点也很明显,要写额外的JS来处理选中值的变化