123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <template>
- <view>
- <view class="grace-drawer-shade" v-if="show" @click.stop="closeDrawer" @touchmove.stop="" :style="{backgroundColor:background}"></view>
- <view ref="graceDrawerMenu" v-if="show" class="grace-drawer-nav" @tap.stop="stopFun"
- :style="{width:width+'rpx', left : direction == 'left' ? (width*-1)+'rpx' : 'none',
- right : direction == 'right' ? (width*-1)+'rpx' : 'none',
- padding:padding, backgroundColor:slotBg}">
- <view class="grace-drawer-main"><slot name="links"></slot></view>
- </view>
- </view>
- </template>
- <script>
- export default {
- name: "graceDrawer",
- props: {
- width : {
- type : Number,
- default : 500
- },
- show : {
- type : Boolean,
- default : true
- },
- direction : {
- type : String,
- default : 'left'
- },
- background:{
- type : String,
- default : 'rgba(0, 0, 0, 0.5)'
- },
- slotBg:{
- type : String,
- default : 'rgba(255, 255, 255, 1)'
- },
- padding : {
- type : String,
- default : '30rpx'
- }
- },
- updated:function(){
- if(this.show){
- setTimeout(()=>{
- var moveX = this.direction == 'left' ? uni.upx2px(this.width) + 'px' : (uni.upx2px(this.width) * -1) + 'px';
- var animation = weex.requireModule('animation');
- animation.transition(this.$refs.graceDrawerMenu, {
- styles: {transform:'translate('+moveX+', 0)'},
- duration:200,
- timingFunction: 'linear',
- needLayout:false,
- delay: 0
- }, function (){}
- );
- }, 100);
- }
- },
- methods:{
- closeDrawer : function(){
- this.$emit('closeDrawer');
- },
- stopFun : function(){}
- }
- }
- </script>
- <style scoped>
- .grace-drawer-shade{position:fixed; width:750rpx; bottom:0; top:0; left:0; background-color:rgba(0, 0, 0, 0.5);}
- .grace-drawer-nav{background-color:#FFFFFF; position:fixed; bottom:0; top:0;}
- .grace-drawer-main{}
- </style>
|