微信小程序中的下拉框怎样做?在实际的项目中,我们常会遇到实现下拉框效果的需求,今天我们就来了解一下怎样做一个简单的小程序中的select下拉框,这里使用到的是transform过渡,实现效果及代码如下。
看看效果
废话不多说,直接上代码
wxml:
<view class="item">
<label class="first"><text>*</text>公司/商户类型:</label>
<!-- 通过点击事件改变图片的旋转角度、自定义下拉框的高度 -->
<view class="value" bindtap="select">
<view style="display:inline-block;">{{type!=''?type:'选择商户类型'}}</view>
<image src="../img/sj@2x.png" class="sanjiao" style="{{isSelect?'transform:rotateZ(180deg)':''}}"/>
<!-- select -->
<view class="select" style="{{isSelect?'height:'+54*types.length+'rpx;':'border:0'}}">
<view class="type" catchtap="getType" wx:for="{{types}}" data-type="{{item}}" wx:key="type">{{item}}</view>
</view>
</view>
</view>
wxss:
.sanjiao{
width: 18rpx;
height: 10rpx;
margin-left: 20rpx;
transition: 0.5s;/* 选转图片过渡 */
}
.select{
position: absolute;
z-index: 10;
border: 2rpx solid #aaaaaa;
padding: 0 8rpx;
top:46rpx;
left: -10rpx;
width: 210rpx;
overflow: auto;
height: 0;
max-height: 200rpx;
background-color:#fff;
box-sizing: border-box;
transition: height 0.5s;/* 高度变换过渡 */
}
.select .type{
color: #aaaaaa;
border-top: 2px solid #dadada;
padding: 6rpx;
}
.select :first-child{
border: 0;
}
js
data: {
isSelect:false,//展示类型?
types:['类型一','类型二'],//公司/商户类型
type:"",//公司/商户类型
},
//点击控制下拉框的展示、隐藏
select:function(){
var isSelect = this.data.isSelect
this.setData({ isSelect:!isSelect})
},
//点击下拉框选项,选中并隐藏下拉框
getType:function(e){
let value = e.currentTarget.dataset.type
this.setData({
type:value ,
isSelect: false,
})
},