微信小程序CSS3動畫下拉菜單效果
微信小程序沒有自帶的下拉菜單組件,因此我們需要自己需要寫一個
思路
利用列表來存儲菜單項(xiàng),在外面套一個view元素作為外框,將其設(shè)置為overflow:hidden,使用CSS3動畫逐漸改變外層view元素的高度,當(dāng)高度為0時,里面嵌套的列表元素被完全隱藏,相當(dāng)于菜單關(guān)閉。而當(dāng)view元素的高度大于列表元素的高度時,相當(dāng)于菜單顯示。
效果圖

wxml
button按鈕用于觸發(fā)菜單的打開和關(guān)閉,first_click參數(shù)使用戶第一次點(diǎn)擊按鈕之前菜單不可見,state參數(shù)用于控制菜單的打開和關(guān)閉狀態(tài)
<view id="text_box">
<text decode='true'> 歷 史 記 錄</text>
</view>
<button id="slide" bindtap="toggle">▼</button>
<view id="box" class="{{first_click?'show':'hide'}} {{state?'open':'close'}}">
<view id="item_list">
<view>111</view>
<view>222</view>
<view>333</view>
</view>
</view>
css
使用@keyframes動畫實(shí)現(xiàn)菜單的漸變打開和關(guān)閉動畫
#box{
width: 100%;
border-top: 1px solid #ddd;
overflow: hidden;
height: 0;
animation-fill-mode: forwards;
}
#item_list{
background-color: white;
width: 100%;
}
#item_list view{
text-align: right;
overflow: auto;
white-space: nowrap;
}
@keyframes slidedown{
from {
height: 0;
}
to {
height: 240rpx;
}
}
@keyframes slideup{
from {
height: 240rpx;
}
to {
height: 0;
}
}
.open{
animation: slidedown 1s;
}
.close{
animation: slideup 1s;
}
.hide{
display: none;
}
.show{
display: block;
}
js
頁面加載完成時,菜單初始狀態(tài)為隱藏和關(guān)閉,用戶一旦點(diǎn)擊按鈕,菜單就顯示,并逐漸打開
data: {
state:false,
first_click:false,
},
toggle: function(){
var list_state = this.data.state,
first_state = this.data.first_click;
if (!first_state){
this.setData({
first_click: true
});
}
if (list_state){
this.setData({
state: false
});
}else{
this.setData({
state: true
});
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript數(shù)組操作學(xué)習(xí)之splice()函數(shù)入門與精通
這篇文章介紹了JavaScript數(shù)組操作中的splice()方法,詳細(xì)講解了其定義、語法和用法,并通過實(shí)例展示了如何使用該方法進(jìn)行數(shù)組元素的添加、刪除和替換,需要的朋友可以參考下2024-11-11
"好玩的放大鏡效果" 的另一種實(shí)現(xiàn)方法
"好玩的放大鏡效果" 的另一種實(shí)現(xiàn)方法...2006-11-11
詳解JavaScript發(fā)送埋點(diǎn)請求的兩種方式
對于發(fā)送埋點(diǎn)請求這種應(yīng)用場景,我們有兩種簡單的處理方式:動態(tài)創(chuàng)建<script>和<img>兩種方式。本文就詳細(xì)講講二種方式的實(shí)現(xiàn),需要的可以參考一下2022-06-06
uni-app實(shí)現(xiàn)全局變量的方式小結(jié)
uni-app是一個使用 Vue.js 開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到 iOS、Android、Web(響應(yīng)式)、以及各種 小程序,下面我們就來看看uni-app實(shí)現(xiàn)全局變量有哪些方法吧2024-12-12
使用js正則表達(dá)式驗(yàn)證文件擴(kuò)展名方法實(shí)例
文件上傳時,為了安全驗(yàn)證,對于手工改動文件后綴名產(chǎn)生的偽造文件進(jìn)行判斷過濾,下面這篇文章主要給大家介紹了關(guān)于如何使用js正則表達(dá)式驗(yàn)證文件擴(kuò)展名的相關(guān)資料,需要的朋友可以參考下2022-11-11

