collapse.vue 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <view>
  3. <uni-card :is-shadow="false" is-full>
  4. <text class="uni-h6">折叠面板用来折叠/显示过长的内容或者是列表。通常是在多内容分类项使用,折叠不重要的内容,显示重要内容。点击可以展开折叠部分。</text>
  5. </uni-card>
  6. <uni-section title="基础用法" type="line">
  7. <uni-collapse ref="collapse" v-model="value" @change="change">
  8. <uni-collapse-item title="默认开启" >
  9. <view class="content">
  10. <text class="text">{{content}}</text>
  11. </view>
  12. </uni-collapse-item>
  13. <uni-collapse-item title="折叠内容">
  14. <view class="content">
  15. <text class="text">折叠内容主体,这是一段比较长内容。默认折叠主要内容,只显示当前项标题。点击标题展开,才能看到这段文字。再次点击标题,折叠内容。</text>
  16. </view>
  17. </uni-collapse-item>
  18. <uni-collapse-item title="禁用状态" disabled>
  19. <view class="content">
  20. <text class="text">禁用状态内容主体,页面上是看不到这段话的。</text>
  21. </view>
  22. </uni-collapse-item>
  23. </uni-collapse>
  24. </uni-section>
  25. <button class="button" type="primary" @click="add">动态修改内容</button>
  26. <!-- TODO app 端默认不使用动画,app在使用高度动画的时候会有性能开销问题,所以应该要酌情使用 -->
  27. <uni-section title="使用动画效果" type="line">
  28. <uni-collapse >
  29. <uni-collapse-item title="使用动画" :show-animation="true">
  30. <view class="content">
  31. <text class="text">默认开启组件动画,使用动画效果折叠内容会有一个从上到下的动画。</text>
  32. </view>
  33. </uni-collapse-item>
  34. <uni-collapse-item title="不使用动画" :show-animation="false">
  35. <view class="content">
  36. <text class="text">设置 show-animation="false",关闭当前组件动画效果。</text>
  37. </view>
  38. </uni-collapse-item>
  39. </uni-collapse>
  40. </uni-section>
  41. <uni-section title="手风琴效果(只会保留一个的打开状态)" type="line">
  42. <uni-collapse accordion v-model="accordionVal" @change="change">
  43. <uni-collapse-item title="手风琴效果">
  44. <view class="content">
  45. <text class="text">手风琴效果同时只会保留一个组件的打开状态,其余组件会自动关闭。</text>
  46. </view>
  47. </uni-collapse-item>
  48. <uni-collapse-item title="手风琴效果">
  49. <view class="content">
  50. <text class="text">手风琴效果同时只会保留一个组件的打开状态,其余组件会自动关闭。</text>
  51. </view>
  52. </uni-collapse-item>
  53. <uni-collapse-item title="手风琴效果">
  54. <view class="content">
  55. <text class="text">手风琴效果同时只会保留一个组件的打开状态,其余组件会自动关闭。</text>
  56. </view>
  57. </uni-collapse-item>
  58. </uni-collapse>
  59. </uni-section>
  60. <uni-section title="配置图片" type="line">
  61. <uni-collapse>
  62. <uni-collapse-item title="标题文字"
  63. thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png">
  64. <view class="content">
  65. <text class="text">折叠内容主体,可自定义内容及样式</text>
  66. </view>
  67. </uni-collapse-item>
  68. <uni-collapse-item title="标题文字"
  69. thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png">
  70. <view class="content">
  71. <text class="text">折叠内容主体,可自定义内容及样式</text>
  72. </view>
  73. </uni-collapse-item>
  74. </uni-collapse>
  75. </uni-section>
  76. <uni-section title="使用插槽" type="line">
  77. <uni-collapse>
  78. <uni-collapse-item titleBorder="none">
  79. <template v-slot:title>
  80. <uni-list>
  81. <uni-list-item title="标题使用自定义标题插槽" :show-extra-icon="true" :extra-icon="extraIcon">
  82. </uni-list-item>
  83. </uni-list>
  84. </template>
  85. <view class="content">
  86. <text class="text">折叠内容主体,可自定义内容及样式</text>
  87. </view>
  88. </uni-collapse-item>
  89. <uni-collapse-item title="折叠内容使用 uni-list 组件">
  90. <uni-list>
  91. <uni-list-item title="列表文字"></uni-list-item>
  92. <uni-list-item :disabled="true" title="列表文字" note="列表禁用状态"></uni-list-item>
  93. <uni-list-item title="列表右侧显示 switch" :show-switch="true"></uni-list-item>
  94. <uni-list-item :show-extra-icon="true" :extra-icon="extraIcon" title="列表左侧带扩展图标"></uni-list-item>
  95. <uni-list-item title="列表左侧带略缩图" note="列表描述信息"
  96. thumb="https://vkceyugu.cdn.bspapp.com/VKCEYUGU-dc-site/460d46d0-4fcc-11eb-8ff1-d5dcf8779628.png"
  97. thumb-size="lg" rightText="右侧文字" showArrow></uni-list-item>
  98. <uni-list-item title="开启点击反馈" clickable showArrow @click="onClick"></uni-list-item>
  99. </uni-list>
  100. </uni-collapse-item>
  101. </uni-collapse>
  102. </uni-section>
  103. </view>
  104. </template>
  105. <script>
  106. export default {
  107. components: {},
  108. data() {
  109. return {
  110. value:['0'],
  111. accordionVal:'1',
  112. content: '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。',
  113. extraIcon: {
  114. color: '#4cd964',
  115. size: '26',
  116. type: 'image'
  117. },
  118. }
  119. },
  120. methods: {
  121. add() {
  122. if (this.content.length > 35) {
  123. this.content = '折叠内容主体,可自定义内容及样式,点击按钮修改内容使高度发生变化。'
  124. } else {
  125. this.content = '折叠内容主体,这是一段比较长内容。通过点击按钮修改后内容后,使组件高度发生变化,在次点击按钮恢复之前的内容和高度。'
  126. }
  127. // TODO 小程序中不支持自动更新 ,需要手动resize 更新组件高度
  128. // #ifdef MP
  129. this.$nextTick(() => {
  130. this.$refs.collapse.resize()
  131. })
  132. // #endif
  133. },
  134. onClick(e) {
  135. uni.showToast({
  136. title: '列表被点击'
  137. })
  138. },
  139. change(e) {
  140. console.log(e);
  141. }
  142. }
  143. }
  144. </script>
  145. <style lang="scss">
  146. .example-body {
  147. flex-direction: column;
  148. flex: 1;
  149. }
  150. .content {
  151. padding: 15px;
  152. }
  153. .text {
  154. font-size: 14px;
  155. color: #666;
  156. line-height: 20px;
  157. }
  158. .button {
  159. // margin-top: 10px;
  160. margin: 10px;
  161. margin-bottom: 0;
  162. }
  163. </style>