微信小程序?qū)崿F(xiàn)下拉框功能
微信小程序里沒有和HTML里的下拉框一樣的組件,想要相同的效果只能自己寫一個(gè),先看效果

下面來看一下代碼:
首先WXML
<view class='select_box'>
<view class='select' catchtap='selectTap'>
<text class='select_text'>{{selectData[index]}}</text>
<image class='select_img {{show&&"select_img_rotate"}}' src='/image/gobottom.png'></image>
</view>
<view class='option_box' style='height:{{show?(selectData.length>5?300:selectData.length*60):0}}rpx;'>
<text class='option' style='{{index==selectData.length-1&&"border:0;"}}' wx:for='{{selectData}}' wx:key='this' data-index='{{index}}' catchtap='optionTap'>{{item}}</text>
</view>
</view>
<!--
show&&"select_img_rotate"-----給顯示框右邊的下拉箭頭添加動(dòng)畫
height:{{show?(selectData.length>5?300:selectData.length*60):0}}rpx;-----給改變下拉框高度,實(shí)現(xiàn)下拉框的顯示隱藏,每個(gè)下拉選項(xiàng)的高度為60,下拉框的最大高度這里設(shè)置的是300,所以這里寫成當(dāng)數(shù)據(jù)長(zhǎng)度大于5時(shí),下拉框高度為300,反之下拉框高度為數(shù)據(jù)長(zhǎng)度乘以60
index==selectData.length-1&&"border:0;"-----取消下拉選項(xiàng)的最后一個(gè)的下邊框
-->
然后WXSS(如果不想要?jiǎng)赢嫞瑒h掉wxss里的transition:transform 0.3s;和transition: height 0.3s;即可)
page{
background: #f3f7f7;
}
.select_box{
background: #fff;
width: 80%;
margin: 30rpx auto;
position: relative;
}
.select{
box-sizing: border-box;
width: 100%;
height: 70rpx;
border:1px solid #efefef;
border-radius: 8rpx;
display: flex;
align-items: center;
padding: 0 20rpx;
}
.select_text{
font-size: 30rpx;
flex: 1;
}
.select_img{
width: 40rpx;
height: 40rpx;
display: block;
transition:transform 0.3s;
}
.select_img_rotate{
transform:rotate(180deg);
}
.option_box{
position: absolute;
top: 70rpx;
width: 100%;
border:1px solid #efefef;
box-sizing: border-box;
height: 0;
overflow-y: auto;
border-top: 0;
background: #fff;
transition: height 0.3s;
}
.option{
display: block;
line-height: 40rpx;
font-size: 30rpx;
border-bottom: 1px solid #efefef;
padding: 10rpx;
}
這里是JS
Page({
data: {
show:false,//控制下拉列表的顯示隱藏,false隱藏、true顯示
selectData:['1','2','3','4','5','6'],//下拉列表的數(shù)據(jù)
index:0//選擇的下拉列表下標(biāo)
},
// 點(diǎn)擊下拉顯示框
selectTap(){
this.setData({
show: !this.data.show
});
},
// 點(diǎn)擊下拉列表
optionTap(e){
let Index=e.currentTarget.dataset.index;//獲取點(diǎn)擊的下拉列表的下標(biāo)
this.setData({
index:Index,
show:!this.data.show
});
},
onLoad: function (options) {
}
})
完結(jié)!
有什么錯(cuò)誤或者其他好的方法,請(qǐng)告知,謝謝
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js 與 php 通過json數(shù)據(jù)進(jìn)行通訊示例
這篇文章主要介紹了js與php通過json數(shù)據(jù)進(jìn)行通訊的具體實(shí)現(xiàn),需要的朋友可以參考下2014-03-03
詳解微信小程序「渲染層網(wǎng)絡(luò)層錯(cuò)誤」的解決方法
這篇文章主要介紹了詳解微信小程序「渲染層網(wǎng)絡(luò)層錯(cuò)誤」的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
javascript HTML5 canvas實(shí)現(xiàn)打磚塊游戲
這篇文章主要介紹了基于javascript HTML5 canvas實(shí)現(xiàn)打磚塊游戲的具體實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04
微信小程序列表時(shí)間戳轉(zhuǎn)換實(shí)現(xiàn)過程解析
這篇文章主要介紹了微信小程序列表時(shí)間戳轉(zhuǎn)換實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
JS動(dòng)態(tài)修改網(wǎng)頁body的背景色實(shí)例代碼
這篇文章主要介紹了JS動(dòng)態(tài)修改網(wǎng)頁body的背景色實(shí)例代碼 ,需要的朋友可以參考下2017-10-10
bootstrap paginator分頁插件的兩種使用方式實(shí)例詳解
Bootstrap Paginator是一款基于Bootstrap的js分頁插件,下面通過本文給大家介紹bootstrap paginator分頁插件的兩種使用方式,一起看看吧2017-11-11
JavaScript 中獲取數(shù)組最后一個(gè)元素方法匯總
在JavaScript中,獲取數(shù)組最后一個(gè)元素的方法有很多種。今天我們就來匯總一下JavaScript獲取數(shù)組最后一個(gè)元素的幾種方法,需要的朋友可以參考下2023-02-02
10個(gè)很少使用的JavaScript?Console方法分享
你一定聽說過?console.log()?,而且可能一直在使用它,在本文中,我們將探討一些最有用的控制臺(tái)方法,以及它們?cè)跀?shù)據(jù)可視化、調(diào)試等方面的用途,感興趣的小伙伴可以學(xué)習(xí)一下2023-09-09

