微信小程序開發(fā)前端實(shí)現(xiàn)下拉框選擇的小彈出層示例代碼
1、商品庫(kù)的文字和下拉箭頭組成一個(gè)可點(diǎn)擊的按鈕,如圖;
2、點(diǎn)擊后會(huì)在這個(gè)按鈕下方顯示一個(gè)矩形的彈出層,里面會(huì)有若干個(gè)選項(xiàng)
3、點(diǎn)擊彈出層意外的區(qū)域時(shí),彈出層會(huì)小時(shí)
以下是完整的實(shí)現(xiàn)方案(先直接上代碼)

<view class="search-container search-container-one">
<view class="search-box searh-original">
<!-- 下拉選擇器部分 -->
<view class="flex-center type" bindtap="togglePopup">
<view class="search-type">{{selectedOption || '商品庫(kù)'}}</view>
<image src="/assets/arrow-down.png" mode="widthFix" class="{{showPopup ? 'arrow-up' : 'arrow-down'}}"/>
</view>
<!-- 搜索輸入框部分 -->
<view class="s-input">
<input class="search-input" value="{{content}}" placeholder="按商品名搜索" bindinput="searchChange" placeholder-class="gray-color" bindconfirm="searchChange"/>
<image src="/assets/search.png" class="search-image" bindtap="searchChange" mode="aspectFit"/>
</view>
<!-- 彈出層 -->
<view class="popup-mask" wx:if="{{showPopup}}" bindtap="hidePopup"></view>
<view class="popup-container" wx:if="{{showPopup}}">
<view class="popup-item" bindtap="selectOption" data-value="商品庫(kù)">商品庫(kù)</view>
<view class="popup-item" bindtap="selectOption" data-value="自定義庫(kù)">自定義庫(kù)</view>
</view>
</view>
</view>/* 原有樣式保持不變,新增以下樣式 */
.flex-center.type {
position: relative;
padding-right: 10rpx;
}
.arrow-down {
width: 24rpx;
height: 24rpx;
margin-left: 8rpx;
transition: transform 0.3s;
}
.arrow-up {
width: 24rpx;
height: 24rpx;
margin-left: 8rpx;
transform: rotate(180deg);
transition: transform 0.3s;
}
.popup-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: transparent;
z-index: 99;
}
.popup-container {
position: absolute;
top: 80rpx;
left: 20rpx;
width: 200rpx;
background: #fff;
border-radius: 8rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
z-index: 100;
overflow: hidden;
}
.popup-item {
padding: 20rpx;
text-align: center;
font-size: 28rpx;
color: #333;
border-bottom: 1rpx solid #f5f5f5;
}
.popup-item:last-child {
border-bottom: none;
}Page({
data: {
showPopup: false,
selectedOption: '', // 當(dāng)前選中的選項(xiàng)
content: '' // 搜索內(nèi)容
},
// 切換彈出層顯示狀態(tài)
togglePopup() {
this.setData({
showPopup: !this.data.showPopup
});
},
// 隱藏彈出層
hidePopup() {
this.setData({
showPopup: false
});
},
// 選擇選項(xiàng)
selectOption(e) {
const value = e.currentTarget.dataset.value;
this.setData({
selectedOption: value,
showPopup: false
});
// 這里可以添加選擇后的邏輯
},
// 搜索相關(guān)方法保持不變
searchChange(e) {
this.setData({
content: e.detail.value
});
// 你的搜索邏輯
}
});代碼解析:
WXML 結(jié)構(gòu)解析
該代碼實(shí)現(xiàn)了一個(gè)帶下拉選擇器的搜索框組件,主要包含三部分:下拉選擇器、搜索輸入框和彈出層。
flex-center.type 是下拉選擇器容器,顯示當(dāng)前選中的選項(xiàng)(默認(rèn)為"商品庫(kù)")和下拉箭頭圖標(biāo)。點(diǎn)擊后會(huì)觸發(fā) togglePopup 方法。
s-input 是搜索輸入框容器,包含文本輸入框和搜索圖標(biāo)。輸入時(shí)會(huì)觸發(fā) searchChange 方法。
popup-mask 和 popup-container 構(gòu)成彈出層,當(dāng)點(diǎn)擊下拉選擇器時(shí)顯示。popup-container 包含兩個(gè)選項(xiàng):"標(biāo)準(zhǔn)庫(kù)"和"自定義庫(kù)"。
WXSS 樣式解析
新增樣式主要控制下拉選擇器和彈出層的視覺效果:
arrow-down 和 arrow-up 控制下拉箭頭的旋轉(zhuǎn)動(dòng)畫,通過 transform: rotate(180deg) 實(shí)現(xiàn)箭頭方向切換。
popup-container 使用絕對(duì)定位顯示在下拉選擇器下方,添加陰影和圓角邊框增強(qiáng)視覺效果。
popup-mask 是半透明遮罩層,點(diǎn)擊后會(huì)關(guān)閉彈出層。
JavaScript 邏輯解析
data 對(duì)象包含三個(gè)關(guān)鍵狀態(tài):
showPopup控制彈出層顯示/隱藏selectedOption存儲(chǔ)當(dāng)前選中的選項(xiàng)content存儲(chǔ)搜索框輸入內(nèi)容
togglePopup() 方法切換 showPopup 狀態(tài),控制彈出層顯示/隱藏。
hidePopup() 方法直接關(guān)閉彈出層。
selectOption(e) 方法處理選項(xiàng)選擇:
- 獲取點(diǎn)擊選項(xiàng)的值(data-value)
- 更新
selectedOption - 關(guān)閉彈出層
searchChange(e) 方法處理搜索輸入:
- 將輸入值更新到
content - 可在此處添加實(shí)際搜索邏輯
交互流程
- 點(diǎn)擊下拉選擇器區(qū)域觸發(fā)
togglePopup,顯示彈出層 - 點(diǎn)擊彈出層選項(xiàng)觸發(fā)
selectOption,更新選中項(xiàng)并關(guān)閉彈出層 - 點(diǎn)擊彈出層外部觸發(fā)
hidePopup,直接關(guān)閉彈出層 - 在輸入框輸入內(nèi)容觸發(fā)
searchChange,更新搜索內(nèi)容
該組件實(shí)現(xiàn)了常見的下拉選擇+搜索功能組合,適用于需要分類搜索的場(chǎng)景。
總結(jié)
到此這篇關(guān)于微信小程序開發(fā)前端實(shí)現(xiàn)下拉框選擇的小彈出層的文章就介紹到這了,更多相關(guān)前端下拉框選擇的小彈出層內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
判斷js數(shù)據(jù)類型的函數(shù)實(shí)例詳解
這篇文章主要介紹了一個(gè)判斷js數(shù)據(jù)類型的函數(shù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
js+html5實(shí)現(xiàn)的自由落體運(yùn)動(dòng)效果代碼
這篇文章主要介紹了js+html5實(shí)現(xiàn)的自由落體運(yùn)動(dòng)效果,通過JavaScript結(jié)合html5元素調(diào)用時(shí)間函數(shù)實(shí)時(shí)計(jì)算實(shí)現(xiàn)物體自由下落及動(dòng)能損耗的效果,需要的朋友可以參考下2016-01-01
JavaScript Event學(xué)習(xí)第六章 事件的訪問
在這一章我會(huì)講解如何去訪問一個(gè)事件對(duì)象。2010-02-02
javascript通過獲取html標(biāo)簽屬性class實(shí)現(xiàn)多選項(xiàng)卡的方法
這篇文章主要介紹了javascript通過獲取html標(biāo)簽屬性class實(shí)現(xiàn)多選項(xiàng)卡的方法,涉及javascript針對(duì)頁(yè)面元素屬性與事件的相關(guān)操作技巧,需要的朋友可以參考下2015-07-07
echarts 移動(dòng)端豎著顯示效果實(shí)現(xiàn)
這篇文章主要為大家介紹了echarts 移動(dòng)端豎著顯示效果實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
JavaScript 結(jié)構(gòu)型設(shè)計(jì)模式使用場(chǎng)景分析
本文詳解JS結(jié)構(gòu)型設(shè)計(jì)模式,涵蓋代理、適配器、裝飾器、橋接、組合、外觀、享元等,用于權(quán)限控制、緩存、接口適配、功能擴(kuò)展、解耦實(shí)現(xiàn)、構(gòu)建樹形結(jié)構(gòu)、簡(jiǎn)化復(fù)雜系統(tǒng)及優(yōu)化內(nèi)存使用,提升代碼靈活性與性能,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-09-09
uni-app如何頁(yè)面?zhèn)鲄?shù)的幾種方法總結(jié)
這篇文章主要介紹了uni-app如何頁(yè)面?zhèn)鲄?shù)的幾種方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
JavaScript幾種形式的樹結(jié)構(gòu)菜單
今天我主要講3種不同展示的JavaScript樹結(jié)構(gòu)菜單,分別是懸浮層樹(Tree)、右鍵菜單樹(ContextMenu)和節(jié)點(diǎn)樹(TreeMenu),目前都支持無(wú)限級(jí)層次。2010-05-05
微信小程序有旋轉(zhuǎn)動(dòng)畫效果的音樂組件實(shí)例代碼
這篇文章主要介紹了微信小程序有旋轉(zhuǎn)動(dòng)畫效果的音樂組件,需要的朋友可以參考下2018-08-08

