demo.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <div>
  3. <!-- DEMO区域 -->
  4. <h4>默认用法</h4>
  5. <nut-tab @tab-switch="tabSwitch">
  6. <nut-tab-panel tabTitle="页签1">页签1</nut-tab-panel>
  7. <nut-tab-panel tabTitle="页签2">页签2</nut-tab-panel>
  8. <nut-tab-panel tabTitle="页签3">页签3</nut-tab-panel>
  9. </nut-tab>
  10. <h4>支持导航条在上下左右位置</h4>
  11. <nut-tab @tab-switch="tabSwitch">
  12. <nut-tab-panel
  13. v-for="value in editableTabs"
  14. v-bind:key="value.tabTitle"
  15. :tabTitle="value.tabTitle"
  16. :iconUrl="value.iconUrl"
  17. v-html="value.content"
  18. ></nut-tab-panel>
  19. </nut-tab>
  20. <nut-tab @tab-switch="tabSwitch" positionNav="left">
  21. <nut-tab-panel
  22. v-for="value in editableTabs"
  23. v-bind:key="value.tabTitle"
  24. :tabTitle="value.tabTitle"
  25. :iconUrl="value.iconUrl"
  26. v-html="value.content"
  27. ></nut-tab-panel>
  28. </nut-tab>
  29. <nut-tab @tab-switch="tabSwitch" positionNav="right">
  30. <nut-tab-panel
  31. v-for="value in editableTabs"
  32. v-bind:key="value.tabTitle"
  33. :tabTitle="value.tabTitle"
  34. :iconUrl="value.iconUrl"
  35. v-html="value.content"
  36. ></nut-tab-panel>
  37. </nut-tab>
  38. <nut-tab @tab-switch="tabSwitch" positionNav="bottom">
  39. <nut-tab-panel
  40. v-for="value in editableTabs"
  41. v-bind:key="value.tabTitle"
  42. :tabTitle="value.tabTitle"
  43. :iconUrl="value.iconUrl"
  44. v-html="value.content"
  45. ></nut-tab-panel>
  46. </nut-tab>
  47. <h4>禁止选中,默认选中某个标签</h4>
  48. <h4>如需要更新页面,请将监听变化的数据传入init-data</h4>
  49. <nut-tab :defIndex="defIndex" class="customer-css" @tab-switch="tabSwitch" :contentShow="true" :init-data="disableTabs">
  50. <nut-tab-panel
  51. v-for="value in disableTabs"
  52. v-bind:key="value.tabTitle"
  53. :tabTitle="value.tabTitle"
  54. :disable="value.disable"
  55. v-html="value.content"
  56. ></nut-tab-panel>
  57. </nut-tab>
  58. <div style="width:100%;height=50px;text-align:center">
  59. <Button @click="resetHandler" type="light">重置Tab页面</Button>
  60. <Button @click="clickHandler">更新Tab页面</Button>
  61. </div>
  62. </div>
  63. </template>
  64. <script>
  65. import Button from '../button/button.vue';
  66. export default {
  67. components:{
  68. Button
  69. },
  70. data() {
  71. return {
  72. defIndex:1,
  73. positionNavCurr: "top",
  74. editableTabs: [
  75. {
  76. tabTitle: "衣物",
  77. iconUrl:
  78. "http://img13.360buyimg.com/uba/jfs/t27280/289/2061314663/2392/872e32ff/5bf76318Ndc80c1d8.jpg",
  79. content: "<p>衣物内容</p>"
  80. },
  81. {
  82. tabTitle: "日用品",
  83. iconUrl:
  84. "http://img13.360buyimg.com/uba/jfs/t30331/209/562746340/2190/6619973d/5bf763aaN6ff02099.jpg",
  85. content: "<p>日用品内容</p>"
  86. },
  87. {
  88. tabTitle: "器材",
  89. iconUrl:
  90. "http://img20.360buyimg.com/uba/jfs/t30346/262/553689202/2257/5dfa3983/5bf76407N72deabf4.jpg",
  91. content: "<p>运动器材内容</p>"
  92. },
  93. {
  94. tabTitle: "电影票",
  95. iconUrl:
  96. "http://img10.360buyimg.com/uba/jfs/t26779/215/2118525153/2413/470d1613/5bf767b2N075957b7.jpg",
  97. content: "<p>电影票内容</p>"
  98. }
  99. ],
  100. disableTabs: [
  101. {
  102. tabTitle: "衣物",
  103. disable: false,
  104. iconUrl:
  105. "http://img13.360buyimg.com/uba/jfs/t27280/289/2061314663/2392/872e32ff/5bf76318Ndc80c1d8.jpg",
  106. content: "<p>衣物内容</p>"
  107. },
  108. {
  109. tabTitle: "日用品",
  110. iconUrl:
  111. "http://img13.360buyimg.com/uba/jfs/t30331/209/562746340/2190/6619973d/5bf763aaN6ff02099.jpg",
  112. content: "<p>日用品内容</p>"
  113. },
  114. {
  115. tabTitle: "运动器材",
  116. iconUrl:
  117. "http://img20.360buyimg.com/uba/jfs/t30346/262/553689202/2257/5dfa3983/5bf76407N72deabf4.jpg",
  118. content: "<p>运动器材内容</p>"
  119. },
  120. {
  121. tabTitle: "电影票",
  122. iconUrl:
  123. "http://img10.360buyimg.com/uba/jfs/t26779/215/2118525153/2413/470d1613/5bf767b2N075957b7.jpg",
  124. content: "<p>电影票内容</p>"
  125. }
  126. ]
  127. };
  128. },
  129. methods: {
  130. tabSwitch: function(index, event) {
  131. console.log(index + "--" + event.target);
  132. //this.defIndex = index;
  133. },
  134. clickHandler:function(){
  135. let newEditableTabs = [
  136. {
  137. tabTitle: "衣物2",
  138. iconUrl:
  139. "http://img13.360buyimg.com/uba/jfs/t27280/289/2061314663/2392/872e32ff/5bf76318Ndc80c1d8.jpg",
  140. content: "<p>改变衣物内容</p>"
  141. },
  142. {
  143. tabTitle: "日用品2",
  144. iconUrl:
  145. "http://img13.360buyimg.com/uba/jfs/t30331/209/562746340/2190/6619973d/5bf763aaN6ff02099.jpg",
  146. content: "<p>改变日用品内容</p>"
  147. },
  148. {
  149. tabTitle: "器材2",
  150. iconUrl:
  151. "http://img20.360buyimg.com/uba/jfs/t30346/262/553689202/2257/5dfa3983/5bf76407N72deabf4.jpg",
  152. content: "<p>改变运动器材内容</p>"
  153. },
  154. {
  155. tabTitle: "电影票2",
  156. iconUrl:
  157. "http://img10.360buyimg.com/uba/jfs/t26779/215/2118525153/2413/470d1613/5bf767b2N075957b7.jpg",
  158. content: "<p>改变电影票内容</p>"
  159. }
  160. ]
  161. this.disableTabs = newEditableTabs;
  162. },
  163. resetHandler:function(){
  164. let newEditableTabs = [
  165. {
  166. tabTitle: "衣物",
  167. disable: false,
  168. iconUrl:
  169. "http://img13.360buyimg.com/uba/jfs/t27280/289/2061314663/2392/872e32ff/5bf76318Ndc80c1d8.jpg",
  170. content: "<p>衣物内容</p>"
  171. },
  172. {
  173. tabTitle: "日用品",
  174. iconUrl:
  175. "http://img13.360buyimg.com/uba/jfs/t30331/209/562746340/2190/6619973d/5bf763aaN6ff02099.jpg",
  176. content: "<p>日用品内容</p>"
  177. },
  178. {
  179. tabTitle: "运动器材",
  180. iconUrl:
  181. "http://img20.360buyimg.com/uba/jfs/t30346/262/553689202/2257/5dfa3983/5bf76407N72deabf4.jpg",
  182. content: "<p>运动器材内容</p>"
  183. },
  184. {
  185. tabTitle: "电影票",
  186. iconUrl:
  187. "http://img10.360buyimg.com/uba/jfs/t26779/215/2118525153/2413/470d1613/5bf767b2N075957b7.jpg",
  188. content: "<p>电影票内容</p>"
  189. }
  190. ]
  191. this.disableTabs = newEditableTabs;
  192. }
  193. }
  194. };
  195. </script>
  196. <style lang="scss">
  197. .customer-css {
  198. .nut-tab-active .nut-tab-link {
  199. color: #fff;
  200. transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
  201. }
  202. .nut-title-nav-list {
  203. background: #fff;
  204. border-left: 1px solid #e4e7ed;
  205. }
  206. .nut-title-nav-list:first-child {
  207. border-left: 0;
  208. }
  209. .nut-tab-active {
  210. background: $primary-color;
  211. border: 0;
  212. }
  213. .nav-bar {
  214. background: $primary-color;
  215. }
  216. .nut-tab-link {
  217. width: 100%;
  218. }
  219. }
  220. </style>