微信小程序開發(fā)前端實現(xiàn)下拉框選擇的小彈出層示例代碼
1、商品庫的文字和下拉箭頭組成一個可點擊的按鈕,如圖;
2、點擊后會在這個按鈕下方顯示一個矩形的彈出層,里面會有若干個選項
3、點擊彈出層意外的區(qū)域時,彈出層會小時
以下是完整的實現(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 || '商品庫'}}</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="商品庫">商品庫</view>
<view class="popup-item" bindtap="selectOption" data-value="自定義庫">自定義庫</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)前選中的選項
content: '' // 搜索內(nèi)容
},
// 切換彈出層顯示狀態(tài)
togglePopup() {
this.setData({
showPopup: !this.data.showPopup
});
},
// 隱藏彈出層
hidePopup() {
this.setData({
showPopup: false
});
},
// 選擇選項
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)解析
該代碼實現(xiàn)了一個帶下拉選擇器的搜索框組件,主要包含三部分:下拉選擇器、搜索輸入框和彈出層。
flex-center.type 是下拉選擇器容器,顯示當(dāng)前選中的選項(默認為"商品庫")和下拉箭頭圖標(biāo)。點擊后會觸發(fā) togglePopup 方法。
s-input 是搜索輸入框容器,包含文本輸入框和搜索圖標(biāo)。輸入時會觸發(fā) searchChange 方法。
popup-mask 和 popup-container 構(gòu)成彈出層,當(dāng)點擊下拉選擇器時顯示。popup-container 包含兩個選項:"標(biāo)準(zhǔn)庫"和"自定義庫"。
WXSS 樣式解析
新增樣式主要控制下拉選擇器和彈出層的視覺效果:
arrow-down 和 arrow-up 控制下拉箭頭的旋轉(zhuǎn)動畫,通過 transform: rotate(180deg) 實現(xiàn)箭頭方向切換。
popup-container 使用絕對定位顯示在下拉選擇器下方,添加陰影和圓角邊框增強視覺效果。
popup-mask 是半透明遮罩層,點擊后會關(guān)閉彈出層。
JavaScript 邏輯解析
data 對象包含三個關(guān)鍵狀態(tài):
showPopup控制彈出層顯示/隱藏selectedOption存儲當(dāng)前選中的選項content存儲搜索框輸入內(nèi)容
togglePopup() 方法切換 showPopup 狀態(tài),控制彈出層顯示/隱藏。
hidePopup() 方法直接關(guān)閉彈出層。
selectOption(e) 方法處理選項選擇:
- 獲取點擊選項的值(data-value)
- 更新
selectedOption - 關(guān)閉彈出層
searchChange(e) 方法處理搜索輸入:
- 將輸入值更新到
content - 可在此處添加實際搜索邏輯
交互流程
- 點擊下拉選擇器區(qū)域觸發(fā)
togglePopup,顯示彈出層 - 點擊彈出層選項觸發(fā)
selectOption,更新選中項并關(guān)閉彈出層 - 點擊彈出層外部觸發(fā)
hidePopup,直接關(guān)閉彈出層 - 在輸入框輸入內(nèi)容觸發(fā)
searchChange,更新搜索內(nèi)容
該組件實現(xiàn)了常見的下拉選擇+搜索功能組合,適用于需要分類搜索的場景。
總結(jié)
到此這篇關(guān)于微信小程序開發(fā)前端實現(xiàn)下拉框選擇的小彈出層的文章就介紹到這了,更多相關(guān)前端下拉框選擇的小彈出層內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript Event學(xué)習(xí)第六章 事件的訪問
在這一章我會講解如何去訪問一個事件對象。2010-02-02
javascript通過獲取html標(biāo)簽屬性class實現(xiàn)多選項卡的方法
這篇文章主要介紹了javascript通過獲取html標(biāo)簽屬性class實現(xiàn)多選項卡的方法,涉及javascript針對頁面元素屬性與事件的相關(guān)操作技巧,需要的朋友可以參考下2015-07-07
JavaScript 結(jié)構(gòu)型設(shè)計模式使用場景分析
本文詳解JS結(jié)構(gòu)型設(shè)計模式,涵蓋代理、適配器、裝飾器、橋接、組合、外觀、享元等,用于權(quán)限控制、緩存、接口適配、功能擴展、解耦實現(xiàn)、構(gòu)建樹形結(jié)構(gòu)、簡化復(fù)雜系統(tǒng)及優(yōu)化內(nèi)存使用,提升代碼靈活性與性能,本文結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧2025-09-09
uni-app如何頁面?zhèn)鲄?shù)的幾種方法總結(jié)
這篇文章主要介紹了uni-app如何頁面?zhèn)鲄?shù)的幾種方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
JavaScript幾種形式的樹結(jié)構(gòu)菜單
今天我主要講3種不同展示的JavaScript樹結(jié)構(gòu)菜單,分別是懸浮層樹(Tree)、右鍵菜單樹(ContextMenu)和節(jié)點樹(TreeMenu),目前都支持無限級層次。2010-05-05

