イミテーションコード潮睡眠アプレット。侵害がある場合は[リンクを削除します
最近のプロジェクトは、音楽プレーヤーのようなものに似たポップ層の効果を持っています。相互作用の一般的な感覚は、私が見爆弾層にスリープ状態に潮の姉妹に設計された、非常にエレガントではない作られた一般によると、私が行うことは非常に良い感じなので、自由なビットをモデル化乗ります。
まず、あなたのお母さんの最高の使用は逆コンパイルソースではなく、オープンしまし作ります。そして、彼らは自分の研究は、ソースが可動ビューの実装であることを発見してください。
だから、Dachuは、基本的なフレームワークをモデルに。
内蔵コンポーネント
wxml
<! - コンポーネント/ playpanel / playpanel.wxml - > < 可動領域のスタイル= "高さ:{{areaH}} PX;" クラス= "ラッパー" > < 可動ビュー bindchange = "onPresent" bindtouchend = "dragPanelEnd" bindtouchstart = "dragPanelStart" クラス= "睡眠パネルラッパー" ダンピング= "{{40}}" 方向= "垂直" 摩擦= "{{1}}" 慣性= "{{偽}}" outOfBounds = "{{偽}}" スタイル= "パディングトップ:{{0}} PX"クラス= "パネル" > < ビュークラス= "" bindtap = "presentPanel" ホバークラス= "NONE" ホバー停止伝搬= "偽" > 背景内容 </ ビュー> </ 可動ビュー> </ movable-エリア> < スクロール表示をスクロール-Yスタイル= "高さ:400rpx" クラス= "スクロール-W"をWX:もし= "{{showlist}}" > 歌曲列表 < ビューID = "グリーン"クラス=「スクロールビュー項目bc_green」> </ ビュー> < ビューID = "赤" クラス= "スクロールビュー項目はbc_red" </> 表示> < ビューID = "黄色" クラス= "スクロールビュー項目bc_yellow" > </ ビュー> < ビューID = "青「クラス「bc_blue =」スクロールビュー項目> </ ビュー> </ スクロールビュー>
あなたはスクロール可能なポップアップ層領域を無視することができていない場合の転動体とドラッグジェスチャーイベントは、お互いに影響を与えることができるので、曲のリストが抽出されます。
とても合理化が何であるかのJSの一部、これらの変数は、ソースの暗号化を行うべきabcdの......何を初期データを定義するために行くのappjs
// コンポーネント/ PlayPanel /はplaypanel.js LETのD = getApp(); 成分({ / * * *成分属性リスト * / プロパティ:{ areaHを:数 } / * * 初期データの*コンポーネント * / データ:{ sleepPanelPosition:d.globalData.screenHeight - (d.globalData.isFullScreen 24:?0) - 80 /(375 / d.globalData.screenWidth)、 topPosition:d.globalData.statusBarHeight + d.globalData.navBarHeight、 bottomPosition:D. globalData.screenHeight - (d.globalData.isFullScreen 24:0?) - 80 /(375 / d.globalData.screenWidth)、 presentProgress:0 、 disableAnimated:!1 、 showlist:偽、 } / * * *组件的方法列表 * / 方法:{ dragPanelEnd(e)は{ changedTouchesせ = e.changedTouches。 せpageY = changedTouches [0 ] .pageY。 topPositionましょう = この.data.topPositionを。 bottomPositionましょう = この.data.bottomPositionを。 距離ましょう = pageYを- この.dragOrigin。 速度せ =(bottomPosition - topPosition)/ 10。 せ、H = 0 。 H = この .data.sleepPanelPosition === topPosition?距離>スピード??bottomPosition:topPosition:距離<-speed topPosition:bottomPosition、この.setData({ sleepPanelPosition:H、 showlist:H === topPosition })。 }、 presentPanel(){ CONST {sleepPanelPosition:topPosition:B、bottomPosition:C} = この.DATA。 この.setData({ sleepPanelPosition: === B?C:B、 })。 showListましょう = これを.data.sleepPanelPosition === B この.setData({ showlist:showList }) }、 dragPanelStart(A){ CONST {changedTouches:B} = 。 もし(B [0 ]){ CONST {pageY:A} = B [0 ]。 この .dragOriginは= 。 } }、 onPresent({詳細:A}){ CONST {Y:B} C、bottomPosition:{topPosition = D} = この .DATAを、E = 1 -のparseInt(1E3の*((B - C)/ (D - C)))/ 1E3 。 E!== この .data.presentProgress && この.setData({ presentProgress:E })、この .data.disableAnimated || この.setData({ disableAnimated: 0] })、てclearTimeout(この .recoverAnimation)、この .recoverAnimation =のsetTimeout(()=> { この.setData({ disableAnimated:!1 })、この .recoverAnimation = NULL ; } 100 )。 } } })
//はapp.js ` onShow(){ wx.getSystemInfo({ A:成功 => { CONST { screenHeight:B、 screenWidth:C、 statusBarHeight:D } = ; この .globalData.isFullScreen =のparseInt(100 * (C / B))<のparseInt(100 *(9月17日))、 この .globalData.isBiggerScreen = 667 <B、この .globalData.statusBarHeight = D、この .globalData.navBarHeight = 44 、 この .globalData.navBarFontSize = 18.5、この .globalData.btnScopeSize = 40、この = 32 .globalData.btnSize 、 この .globalData.screenHeight = B、この .globalData.screenWidth = C。 } })。 }、 `` `
wxss部分は、主に.panelは何もないかのように、トップ値を設定しないでください。
/ * コンポーネント/ playpanel / playpanel.wxss * / .wrapper { 位置:固定されました。 トップ:0 ; 左:0 ; 下:0 ; 右:0 ; 幅:100vw。 高さ:200vh。 ポインタイベント:なし。 } .panel { 幅:100% 。 背景:RGBA(233、233、255、0.8) 。 高さ:100VH。 ポインタイベント:自動 ; } .scrollビュー項目 { 高さ:300rpx。 } .bc_green { 背景:緑 ; } .bc_red { 背景:赤。 } .bc_yellow { 背景:黄色。 } .bc_blue { 背景:青 ; } .scroll-W { 位置:固定されました。 下:0 ; }