index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <template>
  2. <view class="u-demo">
  3. <view class="u-demo-wrap">
  4. <view class="u-demo-title">演示效果</view>
  5. <view class="u-demo-area">
  6. <u-row :justify="justify" @click="rowClick">
  7. <u-col :span="span" :offset="offset" @click="click" stop>
  8. <view class="demo-layout bg-purple-dark">
  9. </view>
  10. </u-col>
  11. <u-col :span="span" :offset="offset">
  12. <view class="demo-layout bg-purple-dark">
  13. </view>
  14. </u-col>
  15. <u-col :span="span" :offset="offset">
  16. <view class="demo-layout bg-purple-dark">
  17. </view>
  18. </u-col>
  19. </u-row>
  20. </view>
  21. </view>
  22. <view class="u-config-wrap">
  23. <view class="u-config-title u-border-bottom">
  24. 参数配置
  25. </view>
  26. <view class="u-config-item">
  27. <view class="u-item-title">每个栅格占用栏数(演示共3个栅格)</view>
  28. <u-subsection :current="2" :list="[1, 2, 3, 4]" @change="spanChange"></u-subsection>
  29. </view>
  30. <view class="u-config-item">
  31. <view class="u-item-title">分栏偏移</view>
  32. <u-subsection :list="[0, 1, 2, 3]" @change="offsetChange"></u-subsection>
  33. </view>
  34. <!-- #ifndef MP -->
  35. <view class="u-config-item">
  36. <view class="u-item-title">水平排列方式(微信小程序无效)</view>
  37. <u-subsection :list="['start', 'end', 'around', 'between']" @change="justifyChange"></u-subsection>
  38. </view>
  39. <!-- #endif -->
  40. </view>
  41. </view>
  42. </template>
  43. <script>
  44. export default {
  45. data() {
  46. return {
  47. span: 3,
  48. offset: 0,
  49. justify: 'start'
  50. }
  51. },
  52. methods: {
  53. click() {
  54. console.log('col click');
  55. },
  56. rowClick() {
  57. console.log('row click');
  58. },
  59. spanChange(e) {
  60. switch (e) {
  61. case 0:
  62. this.span = 1;
  63. break;
  64. case 1:
  65. this.span = 2;
  66. break;
  67. case 2:
  68. this.span = 3;
  69. break;
  70. case 3:
  71. this.span = 4;
  72. break;
  73. case 4:
  74. this.span = 5;
  75. break;
  76. }
  77. },
  78. offsetChange(e) {
  79. switch (e) {
  80. case 0:
  81. this.offset = 0;
  82. break;
  83. case 1:
  84. this.offset = 1;
  85. break;
  86. case 2:
  87. this.offset = 2;
  88. break;
  89. case 3:
  90. this.offset = 3;
  91. break;
  92. }
  93. },
  94. justifyChange(e) {
  95. switch (e) {
  96. case 0:
  97. this.justify = 'start';
  98. break;
  99. case 1:
  100. this.justify = 'end';
  101. break;
  102. case 2:
  103. this.justify = 'around';
  104. break;
  105. case 3:
  106. this.justify = 'between';
  107. break;
  108. }
  109. },
  110. }
  111. }
  112. </script>
  113. <style scoped lang="scss">
  114. .demo-layout {
  115. height: 70rpx;
  116. border-radius: 8rpx;
  117. margin: 20rpx 0;
  118. }
  119. .bg-purple {
  120. background: #d3dce6;
  121. }
  122. .bg-purple-light {
  123. background: #e5e9f2;
  124. }
  125. .bg-purple-dark {
  126. background: #99a9bf;
  127. }
  128. // H5中,电脑端文档演示时,可能会导致演示块挤出边界,特别处理。
  129. // 真实使用环境不会产生此问题
  130. /* #ifdef H5 */
  131. .u-demo-area /deep/ .u-row {
  132. display: flex;
  133. flex-wrap: wrap;
  134. }
  135. /* #endif */
  136. </style>