vue中锚点的三种方法

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Null_Bugs/article/details/80930166

第一种:大笑

    router.js中添加

          mode: 'history',
              srcollBehavior(to,from,savedPosition){
              if(to.hash){
          return {
      selector:to.hash
         }
          }

          }

    组件:

        <template>
<div>
<ul class="list">
<li><a href="#1">星期1</a></li>
<li><a href="#2">星期2</a></li>
<li><a href="#3">星期3</a></li>
<li><a href="#4">星期4</a></li>
<li><a href="#5">星期5</a></li>
<li><a href="#6">星期6</a></li>
<li><a href="#7">星期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>

第二种:吐舌头

    写一个方法  组件

    <template>
<div>
    <div><a href="javascript:void(0)" @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>

第三种:得意  自定义指令   更倾向这种

<template>
<div>
    <div><a href="javascript:void(0)" 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
}
}
})

展开阅读全文

没有更多推荐了,返回首页