div 组件模拟选项卡

选项卡效果常见于传统 H5 开发中,开发者一般使用div和js代码控制布局交互得以实现

在框架中,开发者也可以使用div组件实现简单的效果,示例代码如下:

  1. <template>
  2. <div class="tutorial-page">
  3. <!-- div组件模拟选项卡功能 -->
  4. <div class="div-tabs">
  5. <!-- tabs的head部分 -->
  6. <div class="div-tabbar">
  7. <text onclick="showContent(1)">menu1</text>
  8. <text onclick="showContent(2)">menu2</text>
  9. <text onclick="showContent(3)">menu3</text>
  10. </div>
  11. <!-- tabs的body部分 -->
  12. <div class="div-tabcontent">
  13. <div class="div-tabcontent-section" show="{{type === 'content_1'}}">
  14. <text>content1</text>
  15. </div>
  16. <div class="div-tabcontent-section" show="{{type === 'content_2'}}">
  17. <text>content2</text>
  18. </div>
  19. <div class="div-tabcontent-section" show="{{type === 'content_3'}}">
  20. <text>content3</text>
  21. </div>
  22. </div>
  23. </div>
  24. </div>
  25. </template>
  26. <style lang="less">
  27. .tutorial-page {
  28. flex: 1;
  29. flex-direction: column;
  30. .div-tabs {
  31. flex: 1;
  32. flex-direction: column;
  33. .div-tabbar {
  34. height: 100px;
  35. text {
  36. margin: 10px;
  37. flex-grow: 1;
  38. text-align: center;
  39. border: 1px solid #eeeeee;
  40. }
  41. }
  42. .div-tabcontent {
  43. flex: 1;
  44. background-color: #eeeeee;
  45. .div-tabcontent-section {
  46. flex: 1;
  47. justify-content: center;
  48. margin: 10px;
  49. background-color: #ffffff;
  50. text {
  51. color: #FF0000;
  52. text-align: center;
  53. }
  54. }
  55. }
  56. }
  57. }
  58. </style>
  59. <script>
  60. export default {
  61. private: {
  62. type: 'content_1'
  63. },
  64. onInit () {
  65. this.$page.setTitleBar({ text: 'div组件模拟选项卡' })
  66. },
  67. showContent (num) {
  68. this.type = 'content_' + num
  69. }
  70. }
  71. </script>

使用div组件实现的选项卡效果,功能还是有限,为了带来最佳用户体验,建议使用框架提供的tabs组件完成需求