vue.js - 在导航和组件 Vue 之间滚动
问题描述
我以这种方式创建了一个 vue 单页:
我的应用程序.vue
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<template>
<div id="app">
<Navegacion/>
<Cabecera/>
<Contenido/>
<Aside/>
<Footer/>
</div>
</template>
我的导航.vue
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<template>
<div class="flex flex-row blanco">
<div class="item-uno">
<nav class="flex flex-row items-center">
<a @click="desplazar" href="#">Quienes somos</a>
<a @click="desplazar" href="#">Cómo funciona</a>
<a @click="desplazar" href="#">Servicios a empresas</a>
<a @click="desplazar" href="#">Compromiso</a>
</nav>
</div>
<div class="item-dos flex justify-center">
<img id="logo" src="../assets/logo.svg" alt="logo apeteat">
</div>
<div class="item-uno flex justify-center items-center">
<a class="btn blue">Nuevo pedido</a>
<div class="flex flex-row items-center">
<i class="fas fa-shopping-bag"></i>
<p>0,00 €</p>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Navegacion',
props: {
},
methods: {
desplazar: function() {
window.scrollTo(0,200);
}
}
}
</script>
单击导航链接时,我想滚动到相应的组件。
我已经安装了 npm scroll-to,并且我尝试添加一个函数 methd desplazar,但它不起作用。
在此先感谢您的帮助。
解决方案
window.scrollTo()
是javascript窗口方法,你不需要安装任何东西来使用它。
它适用于您的代码,但href="#"
总是将您放在页面顶部,因此它取消了 window.scrollTo()。您需要href="#"
从链接中删除。
要首先滚动到组件,您需要像这样向它添加 ref:
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<template>
<div id="app">
<Navegacion ref="Navegacion" />
<Cabecera ref="Cabecera" />
<Contenido ref="Contenido" />
<Aside ref="Aside" />
<Footer ref="Footer" />
</div>
</template>
你的功能应该是这样的
scrollToNavegacion() {
window.scrollTo(0, this.$refs.Navegacion.$el.offsetTop);
}
推荐阅读
- android - 使用推迟输入转换时未调用 LiveData 观察者
- flutter - 我想更改出现在DropdownSearch中的项目的TextStyle,它位于flutter中的dropdown_search包下
- arrays - 使用包含数组的键循环遍历哈希数组
- php - SVG sprite 文件 - 它是否必须具有“.svg”扩展名,或者只要内容类型标题设置正确,php/nothing 就可以了吗?
- java - 如何在Java中将字符串转换为int数组时抛出异常?
- python - 无法打开 Python 文件,IDLE 错误 Python 3.9.1
- javascript - 附加选项以通过 AJAX 请求进行选择未按预期工作
- javascript - 无法从反应组件上的 mapStateToProps 获取值
- sql - 如何将日期转换为不同的格式而不使其成为 varchar?
- mysql - 错误:连接 ECONNREFUSED 127.0.0.1:3306。:使用node.js(使用xampp)时mysql连接失败