开发者社区> 问答> 正文

vue中锚点的三种方法

vue中锚点的三种方法

展开
收起
社区秘书 2019-12-16 14:43:45 838 0
1 条回答
写回答
取消 提交回答
  • 
    router.js中添加
    
    mode: 'history',
       srcollBehavior(to,from,savedPosition){
        if(to.hash){
      return {
    selector:to.hash
     }
      }
     }
    组件:
    
    <template>
    <div>
    <ul class="list">
    <li><a href="#1" rel="external nofollow" >星期1</a></li>
    <li><a href="#2" rel="external nofollow" >星期2</a></li>
    <li><a href="#3" rel="external nofollow" >星期3</a></li>
    <li><a href="#4" rel="external nofollow" >星期4</a></li>
    <li><a href="#5" rel="external nofollow" >星期5</a></li>
    <li><a href="#6" rel="external nofollow" >星期6</a></li>
    <li><a href="#7" rel="external nofollow" >星期7</a></li>
    </ul>
    <div class="main_con" id="1">11111111111111111111111111111111</div>
    <div class="main_con" id="2">22222222222222222222222222222222222</div>
    <div class="main_con" id="3">33333333333333333333333333333333333333</div>
    <div class="main_con" id="4">444444444444444444444444444444444444444</div>
    <div class="main_con" id="5">555555555555555555555555555555555555555</div>
    <div class="main_con" id="6">666666666666666666666666666666666666666</div>
    <div class="main_con" id="7">7777777777777777777777777777777777777777</div>
    </div>
    </template>
    <script>
    export default {
    data(){
    return {
    }
    }
    }
    </script>
    <style>
    .list{
    width: 100%;
    height: 50px;
    }
    li{
    width: 11%;
    height: 50px;
    line-height: 50px;
    text-align: center;
    border: 1px solid #ccc;
    color: #ff6c00;
    float: left;
    list-style: none!important;
    }
    .main_con{
    width: 100%;
    height: 200px;
    border: 1px solid #ccc;
    line-height: 200px;
    text-align: center;
    color: blue;
    }
    </style>
    //前端全栈学习交流圈:866109386
    //面向1-3经验年前端开发人员
    //帮助突破技术瓶颈,提升思维能力
    第二种:
    
    写一个方法 组件
    
    <template>
     <div>
      <div><a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" @click="goAnchor('#anchor-'+index)" v-for="index in 20"> {{index}} </a></div>
      <div :id="'anchor-'+index" class="item" v-for="index in 20">{{index}}</div>
    </div>
      </template>
    <script>
    export default{
    data(){
    return {
    }
    },
    methods: {
      goAnchor(selector) {
         var anchor = this.$el.querySelector(selector)
         document.documentElement.scrollTop = anchor.offsetTop
      }
     }
    }
    </script>
    <style>
    .item{
    width: 100%;
    height: 200px;
    line-height: 200px;
    text-align: center;
    }
    </style>
    //前端全栈学习交流圈:866109386
    //面向1-3经验年前端开发人员
    //帮助突破技术瓶颈,提升思维能力
    第三种: 自定义指令
    
    <template>
    <div>
      <div><a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" v-anchor="index" v-for="index in 20"> {{index}} </a></div>
      <div :id="'anchor-'+index" class="item" v-for="index in 20" >{{index}}</div>
    </div>
    </template>
    <script>
    export default{
    data(){
    return {
    }
    }
    }
    </script>
    <style>
    .item{
    width: 100%;
    height: 200px;
    line-height: 200px;
    text-align: center;
    }
    </style>
    main.js 定义全局指令 方便其他地方复用
    
    Vue.directive('anchor',{
    inserted : function(el,binding){
    el.onclick = function(){
      document.documentElement.scrollTop = $('#anchor-'+binding.value).offset().top
    }
    }
    })
    
    2019-12-16 14:43:57
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于VUE的单页面性能优化实践 立即下载
Vue.js 在前端服务化上的探索与实践 立即下载
Vue.js在前端服务化上的实践与探索 立即下载