vue中锚点的三种方法

第一种:大笑

    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
}
}
})

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值