详解Vue项目中实现锚点定位


Posted in Javascript onApril 24, 2019

背景

今天在开发限时练-提分加项目的时候,有一个需要锚点定位的需求,而在Vue项目中,使用传统的在a标签的href属性中写id的方法无效,会导致浏览器的地址改变从而跳转到其他页面。

详解Vue项目中实现锚点定位

解决

最终参考vue2.0中怎么做锚点定位改问题下的回答实现了效果。

<template>
<div class="score-preview-container">
 <div class="content-box">
 <div class="content-page-box">
  <GlobalAnalysis :id="#anchor-0" />
  <ErrorMerge :id="#anchor-1" />
  <DoExercise :id="#anchor-2" />
 </div>
 <div class="nav-button-box">
  <span class="nav-button-fix">
  <div class="nav-button" v-for="(item,index) in buttonArr" :key="index" :class="{active : activeBtn == index}" @click="goAnchor('#anchor-'+index,index)">{{item}}</div>
  </span>
 </div>
 </div>
</div>
</template>

<script>
import { mapActions } from "vuex";
import GlobalAnalysis from "./components/GlobalAnalysis.vue";
import ErrorMerge from "./components/ErrorMerge.vue";
import DoExercise from "./components/DoExercise.vue";
export default {
 name: "score-preview",
 components: { GlobalAnalysis, ErrorMerge, DoExercise },
 data() {
 return {
  buttonArr: ["整体分析", "错题整理", "提分训练"],
  activeBtn: 0
 };
 },
 mounted() {
 this.dataInit();
 },
 methods: {
 ...mapActions("v2-score-preview", [
  "fetchClassScoreData",
  "fetchPersonalReportData",
  "fetchErrorQuestionData",
  "fetchExerciseData"
 ]),
 //初始化
 dataInit() {
  this.fetchClassScoreData();
  this.fetchPersonalReportData();
  this.fetchErrorQuestionData();
  this.fetchExerciseData();
 },
 //锚点跳转
 goAnchor(selector, index) {
  this.activeBtn = index;
  document.querySelector("#app-root").scrollTop = this.$el.querySelector(selector).offsetTop;
 }
 }
};
</script>

另外,参考页面内锚点定位及跳转方法总结文章中的第四种方法,发现使用scrollIntoView()方法也能实现锚点定位的效果。

//锚点跳转
goAnchor(selector, index) {
 this.activeBtn = index;
 this.$el.querySelector(selector).scrollIntoView()
}

以上所述是小编给大家介绍的Vue项目中实现锚点定位详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
通过pjax实现无刷新翻页(兼容新版jquery)
Jan 31 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
利用JS屏蔽页面中的Enter按键提交表单的方法
Nov 25 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
Feb 15 Javascript
详解Vue中状态管理Vuex
May 11 Javascript
微信小程序表单验证错误提示效果
May 19 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
Vue的elementUI实现自定义主题方法
Feb 23 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
JavaScript中的this妙用实例分析
May 09 Javascript
js实现弹幕飞机效果
Aug 27 Javascript
jQuery实现tab栏切换效果
Dec 22 jQuery
微信小程序中使用echarts的实现方法
Apr 24 #Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 #Javascript
详解微信小程序开发用户授权登陆
Apr 24 #Javascript
微信小程序实现的一键拨号功能示例
Apr 24 #Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 #Javascript
微信小程序实现的图片保存功能示例
Apr 24 #Javascript
vue中的inject学习教程
Apr 24 #Javascript
You might like
全国FM电台频率大全 - 16 河南省
2020/03/11 无线电
php设计模式 Strategy(策略模式)
2011/06/26 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
js在IE与firefox的差异集锦
2014/11/11 Javascript
在JavaScript中操作时间之getMonth()方法的使用
2015/06/10 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
vue组件学习教程
2017/09/09 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
[00:33]2016完美“圣”典风云人物:Sccc宣传片
2016/12/03 DOTA
Python Socket编程入门教程
2014/07/11 Python
Python中input和raw_input的一点区别
2014/10/21 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
python数据结构之图的实现方法
2015/07/08 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
django中静态文件配置static的方法
2018/05/20 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
党员培训思想汇报
2014/01/07 职场文书
法制报告会主持词
2014/04/02 职场文书
低碳生活倡议书
2014/04/14 职场文书
学校节能减排方案
2014/06/13 职场文书
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js