anchorItem.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <div>
  3. <div v-for="item in data" :key="item.tar">
  4. <div class="anchor-link-item" @click="goAnchor(item.tar)">
  5. <a
  6. :class="currentAnchor === item.tar ? 'active-a' : ''"
  7. href="javascript:void(0)"
  8. >
  9. {{ item.title }}
  10. </a>
  11. </div>
  12. <div
  13. v-if="item.children && item.children.length > 0"
  14. class="anchor-link-group"
  15. >
  16. <!-- 递归当前组件,对应的props 及方法一定要带上,否则不生效 -->
  17. <AnchorLink
  18. :data="item.children"
  19. :current-anchor="currentAnchor"
  20. @goAnchor="goAnchor"
  21. />
  22. </div>
  23. </div>
  24. </div>
  25. </template>
  26. <script>
  27. export default {
  28. name: 'AnchorLink',
  29. props: {
  30. data: {
  31. type: Array,
  32. default: () => []
  33. },
  34. currentAnchor: {
  35. type: String,
  36. default: ''
  37. }
  38. },
  39. methods: {
  40. goAnchor(tar) {
  41. this.$emit('goAnchor', tar)
  42. }
  43. }
  44. }
  45. </script>
  46. <style lang="scss" scoped>
  47. a {
  48. color: black;
  49. margin: 10px 0;
  50. display: block;
  51. text-decoration: none;
  52. }
  53. .active-a {
  54. color: #2db7f5;
  55. }
  56. .anchor-link-group {
  57. margin-left: 10px;
  58. }
  59. </style>