1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <template>
- <view class="grace-drawer-shade" v-if="show" @tap.stop="closeDrawer" @touchmove.stop.prevent="" :style="{background:background,zIndex:zIndex, top:top+'px'}">
- <view :class="['grace-drawer-shade-nav', direction == 'left' ? 'gdSlideLeft' : 'gdSlideRight']" :style="{width:width,padding:padding, zIndex:zIndex+1, background:slotBg}" @tap.stop="stopFun">
- <slot name="links"></slot>
- </view>
- </view>
- </template>
- <script>
- export default {
- name: "graceDrawer",
- props: {
- show : {
- type : Boolean,
- default : false
- },
- direction : {
- type : String,
- default : 'left'
- },
- width : {
- type : String,
- default : '60%'
- },
- background:{
- type : String,
- default : 'rgba(0, 0, 0, 0.5)'
- },
- slotBg:{
- type : String,
- default : 'rgba(255, 255, 255, 1)'
- },
- padding :{
- type : String,
- default : '30rpx'
- },
- zIndex : {
- type : Number,
- default : 1
- },
- // #ifdef H5
- top:{
- type : Number,
- default : 44
- },
- // #endif
- // #ifndef H5
- top:{
- type : Number,
- default : 0
- },
- // #endif
- },
- methods:{
- closeDrawer : function(){
- this.$emit('closeDrawer');
- },
- stopFun : function(){}
- }
- }
- </script>
- <style>
- @keyframes gdSlideLeft{ from {left:-300px; } 100% { left:0px; }}
- .gdSlideLeft {animation:gdSlideLeft 200ms linear; left:0;}
- @keyframes gdSlideRight{ from {right:-300px; } 100% { right:0px; }}
- .gdSlideRight {animation:gdSlideRight 200ms linear; right:0;}
- .grace-drawer-shade{position:fixed; width:100%; height:100%; top:0; left:0; z-index:1; background:rgba(0, 0, 0, 0.5);}
- .grace-drawer-shade-nav{height:100%; background:#FFFFFF; position:absolute; top:0; z-index:2; box-sizing:border-box;}
- </style>
|