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

wxml
button按鈕用于觸發(fā)菜單的打開(kāi)和關(guān)閉,first_click參數(shù)使用戶(hù)第一次點(diǎn)擊按鈕之前菜單不可見(jiàn),state參數(shù)用于控制菜單的打開(kāi)和關(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動(dòng)畫(huà)實(shí)現(xiàn)菜單的漸變打開(kāi)和關(guān)閉動(dòng)畫(huà)
#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
頁(yè)面加載完成時(shí),菜單初始狀態(tài)為隱藏和關(guān)閉,用戶(hù)一旦點(diǎn)擊按鈕,菜單就顯示,并逐漸打開(kāi)
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
});
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript數(shù)組操作學(xué)習(xí)之splice()函數(shù)入門(mén)與精通
這篇文章介紹了JavaScript數(shù)組操作中的splice()方法,詳細(xì)講解了其定義、語(yǔ)法和用法,并通過(guò)實(shí)例展示了如何使用該方法進(jìn)行數(shù)組元素的添加、刪除和替換,需要的朋友可以參考下2024-11-11
"好玩的放大鏡效果" 的另一種實(shí)現(xiàn)方法
"好玩的放大鏡效果" 的另一種實(shí)現(xiàn)方法...2006-11-11
JavaScript編程的10個(gè)實(shí)用小技巧
盡管我使用Javascript來(lái)做開(kāi)發(fā)有很多年了,但它常有一些讓我很驚訝的小特性。對(duì)于我來(lái)說(shuō),Javascript是需要持續(xù)不斷的學(xué)習(xí)的。2014-04-04
詳解JavaScript發(fā)送埋點(diǎn)請(qǐng)求的兩種方式
對(duì)于發(fā)送埋點(diǎn)請(qǐng)求這種應(yīng)用場(chǎng)景,我們有兩種簡(jiǎn)單的處理方式:動(dòng)態(tài)創(chuàng)建<script>和<img>兩種方式。本文就詳細(xì)講講二種方式的實(shí)現(xiàn),需要的可以參考一下2022-06-06
uni-app實(shí)現(xiàn)全局變量的方式小結(jié)
uni-app是一個(gè)使用 Vue.js 開(kāi)發(fā)所有前端應(yīng)用的框架,開(kāi)發(fā)者編寫(xiě)一套代碼,可發(fā)布到 iOS、Android、Web(響應(yīng)式)、以及各種 小程序,下面我們就來(lái)看看uni-app實(shí)現(xiàn)全局變量有哪些方法吧2024-12-12
使用js正則表達(dá)式驗(yàn)證文件擴(kuò)展名方法實(shí)例
文件上傳時(shí),為了安全驗(yàn)證,對(duì)于手工改動(dòng)文件后綴名產(chǎn)生的偽造文件進(jìn)行判斷過(guò)濾,下面這篇文章主要給大家介紹了關(guān)于如何使用js正則表達(dá)式驗(yàn)證文件擴(kuò)展名的相關(guān)資料,需要的朋友可以參考下2022-11-11
微信小程序-橫向滑動(dòng)scroll-view隱藏滾動(dòng)條
本篇文章主要介紹了微信小程序-橫向滑動(dòng)scroll-view隱藏滾動(dòng)條的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-04-04

