index.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <demo-section>
  3. <demo-block :title="$t('basicUsage')">
  4. <van-button @click="show1 = true">{{ $t('button1') }}</van-button>
  5. <van-popup v-model="show1">{{ $t('content') }}</van-popup>
  6. </demo-block>
  7. <demo-block :title="$t('position')">
  8. <van-button @click="show2 = true;">{{ $t('button2') }}</van-button>
  9. <van-popup
  10. v-model="show2"
  11. position="bottom"
  12. >
  13. <van-picker
  14. show-toolbar
  15. :columns="$t('columns')"
  16. @confirm="show2 = false"
  17. @cancel="show2 = false"
  18. />
  19. </van-popup>
  20. <van-button @click="show3 = true">{{ $t('button4') }}</van-button>
  21. <van-popup
  22. v-model="show3"
  23. position="top"
  24. :overlay="false"
  25. >
  26. {{ $t('content') }}
  27. </van-popup>
  28. <van-button @click="show4 = true">{{ $t('button5') }}</van-button>
  29. <van-popup
  30. v-model="show4"
  31. position="right"
  32. >
  33. <van-button @click="show4 = false">{{ $t('button6') }}</van-button>
  34. <van-button @click="show5 = true">{{ $t('button5') }}</van-button>
  35. <van-popup
  36. v-model="show5"
  37. position="right"
  38. >
  39. <van-button @click="show5 = false">{{ $t('button6') }}</van-button>
  40. </van-popup>
  41. </van-popup>
  42. </demo-block>
  43. </demo-section>
  44. </template>
  45. <script>
  46. export default {
  47. i18n: {
  48. 'zh-CN': {
  49. position: '弹出位置',
  50. button1: '弹出 Popup',
  51. button2: '底部弹出',
  52. button3: '弹出 Dialog',
  53. button4: '顶部弹出',
  54. button5: '右侧弹出',
  55. button6: '关闭弹层',
  56. columns: ['杭州', '宁波', '温州', '嘉兴', '湖州']
  57. },
  58. 'en-US': {
  59. position: 'Position',
  60. button1: 'Show Popup',
  61. button2: 'From Bottom',
  62. button3: 'Show Dialog',
  63. button4: 'From Top',
  64. button5: 'From Right',
  65. button6: 'Close Popup',
  66. columns: ['Delaware', 'Florida', 'Georqia', 'Indiana', 'Maine']
  67. }
  68. },
  69. data() {
  70. return {
  71. show1: false,
  72. show2: false,
  73. show3: false,
  74. show4: false,
  75. show5: false
  76. };
  77. },
  78. watch: {
  79. show3(val) {
  80. if (val) {
  81. setTimeout(() => {
  82. this.show3 = false;
  83. }, 2000);
  84. }
  85. }
  86. },
  87. methods: {
  88. showDialog() {
  89. this.$dialog.confirm({
  90. title: 'confirm标题',
  91. message: '弹窗提示文字,左右始终距离边20PX,上下距离20PX,文字左对齐。弹窗提示文字,左右始终距离边20PX,上下距离20PX,文字左对齐。'
  92. });
  93. }
  94. }
  95. };
  96. </script>
  97. <style lang="less">
  98. @import '../../style/var';
  99. .demo-popup {
  100. .van-button {
  101. margin: 10px 0 10px 15px;
  102. }
  103. .van-popup {
  104. width: 60%;
  105. padding: 20px;
  106. box-sizing: border-box;
  107. &--bottom {
  108. width: 100%;
  109. padding: 0;
  110. border-radius: 0;
  111. }
  112. .van-tabs__content {
  113. height: 156px;
  114. overflow-y: scroll;
  115. -webkit-overflow-scrolling: touch;
  116. }
  117. .van-tab__pane:not(:first-child) {
  118. padding: 10px;
  119. line-height: 1.4;
  120. color: @gray-darker;
  121. }
  122. &--top {
  123. color: @white;
  124. width: 100%;
  125. border-radius: 0;
  126. line-height: 20px;
  127. background-color: rgba(0, 0, 0, 0.8);
  128. }
  129. &--left,
  130. &--right {
  131. width: 100%;
  132. height: 100%;
  133. }
  134. }
  135. }
  136. </style>