gracePopupMenu.vue 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template name="gracePopupMenu">
  2. <view>
  3. <view
  4. class="grace-popup-mask" v-if="show" @tap.stop="hideMenu" @touchmove.stop=""
  5. :style="{background:background, zIndex:zIndex}"></view>
  6. <view class="grace-popup-menu" v-if="show"
  7. :style="{top:top+'px', background:bgColor, width:menuWidth, borderRadius:borderRadius, zIndex:zIndex+1}">
  8. <slot></slot>
  9. </view>
  10. </view>
  11. </template>
  12. <script>
  13. export default {
  14. name: "gracePopupMenu",
  15. props: {
  16. show:{
  17. type : Boolean,
  18. default : false
  19. },
  20. top:{
  21. type : Number,
  22. default : 0
  23. },
  24. bgColor:{
  25. type : String,
  26. default :'#FFFFFF'
  27. },
  28. menuWidth :{
  29. type : String,
  30. default : '258rpx'
  31. },
  32. background : {
  33. type : String,
  34. default : 'rgba(0,0,0, 0.3)'
  35. },
  36. borderRadius:{
  37. type : String,
  38. default:'0rpx'
  39. },
  40. zIndex : {type:Number, default:3}
  41. },
  42. methods: {
  43. hideMenu : function() {
  44. this.$emit('hideMenu');
  45. }
  46. },
  47. }
  48. </script>
  49. <style scoped>
  50. .grace-popup-menu{background:#FFFFFF; width:258rpx; padding:10rpx; right:0px; top:0px; position:absolute; z-index:3;}
  51. .grace-popup-mask{background:rgba(0,0,0, 0.3); width:100%; height:100%; position:fixed; left:0; top:0; z-index:4;}
  52. </style>