当前位置:   article > 正文

vue 实现左侧导航栏,右侧锚点定位滚动到指定位置(超简单方法)_vue 实现点击目录定位滚动条

vue 实现点击目录定位滚动条

项目截图:

实现方法:

点击左侧菜单根据元素id定位到可视内容区域。

浏览器原生提供了一种方法scrollIntoView 。

通过scrollIntoView方法可以把元素滚动到可视区域内。

 

behavior: "smooth"是指定滚动方式为平滑效果。

 具体代码如下:

  1. <div class="main">
  2. <div class="sidebar">
  3. <el-menu default-active="1" class="nav" @open="handleOpen" @close="handleClose">
  4. <el-submenu index="1">
  5. <template slot="title">
  6. <span>应用API</span>
  7. </template>
  8. <el-menu-item-group>
  9. <el-menu-item
  10. v-for="(item, index) in sections"
  11. :key="item.name"
  12. :index="index"
  13. @click="changeMenu(item)"
  14. >{{ item.name }}</el-menu-item
  15. >
  16. </el-menu-item-group>
  17. </el-submenu>
  18. </el-menu>
  19. </div>
  20. <div class="content">
  21. <div id="Start" class="content-item">
  22. <h2 class="name">快速开始</h2>
  23. </div>
  24. <div id="UpDate" class="content-item">
  25. <h2 class="name">检查更新</h2>
  26. </div>
  27. <div id="DownLoad" class="content-item">
  28. <h2 class="name">下载应用</h2>
  29. </div>
  30. <div id="History" class="content-item">
  31. <h2 class="name">更新历史</h2>
  32. </div>
  33. </div>
  34. </div>
  1. data(){
  2. return {
  3. sections: [
  4. {
  5. name: '快速开始',
  6. value: 'Start'
  7. },
  8. {
  9. name: '检查更新',
  10. value: 'UpDate'
  11. },
  12. {
  13. name: '下载应用',
  14. value: 'DownLoad'
  15. },
  16. {
  17. name: '更新历史',
  18. value: 'History'
  19. }
  20. ]
  21. }
  22. },
  23. methods:{
  24. changeMenu(item) {
  25. const el = this.$el.querySelector(`#${item.value}`);
  26. if (el) {
  27. el.scrollIntoView({ behavior: 'smooth' });
  28. }
  29. }
  30. }

css样式

  1. .main {
  2. display: flex;
  3. .sidebar {
  4. width: 260px;
  5. .nav {
  6. height: 100%;
  7. }
  8. }
  9. .content {
  10. flex: 1;
  11. height: 78vh;
  12. overflow-y: auto;
  13. padding: 20px 30px;
  14. }
  15. .content-item {
  16. margin-bottom: 30px;
  17. &-p {
  18. padding: 2px 0;
  19. }
  20. }
  21. .content-item-name {
  22. font-weight: bold;
  23. padding: 30px 0 20px 0;
  24. }
  25. .name {
  26. margin-bottom: 10px;
  27. }
  28. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/507185
推荐阅读
相关标签
  

闽ICP备14008679号