实现一个 Vue 吸顶锚点组件方法(4)

<template> <div> <sticky :top="top" :z-index="zIndex"> <sticky-menu :top="top" :data="menus" :parent="parent"></sticky-menu> </sticky> // 滚动区内容存放位置 <slot></slot> </div> </template> <script> import Sticky from './sticky.vue' import StickyMenu from './menu.vue' export default { // 这里简写了,因为上面已经有了。 props: { top, menus, parent, zIndex, offsetHeight }, components: { Sticky, StickyMenu } } </script>

使用示例

<template> <div> ... 其他内容 <sticky-anchor menus="menus" parent=".page-demo"> <ul> <li>视图一</li> <li>视图二</li> </ul> </sticky-anchor> </div> </template> <script> import StickyAnchor from 'components/sticky-anchor.vue' export default { data() { return { menus: [ { label: '按钮一', value: '.button-1' }, { label: '按钮二', value: '.button-2' } ] } }, components: { StickyAnchor } } </script>

总结

到这里整个功能已经全部实现了,我们来总结一下。

吸顶效果用两种解决方案,如果浏览支持 sticky 布局,使用 css 更加方便。 使用 a 标签做锚点定位更加简单,但遇到定位布局需要特殊处理,但会改变路由 hash。 做锚点与滚动联动时需要注意按钮点击事件与滚动事件冲突。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a494f6f30d5249d12d32871655426aac.html