【Vue3.0移动端项目--旅游网】-- 详情页的标签定位滚动

简介: 【Vue3.0移动端项目--旅游网】-- 详情页的标签定位滚动

新建 detail 分支


通过 Git 管理项目,养成良好的开发习惯,可以创建分支。最后开发完可以合并分支。

1.创建新分支并且跳转到改分支上

git checkout -b detail 

2.查看分支

git branch

image.png


标签滚动定位


1. 创建一个 tabcontrol全局组件

<template>
  <div class="tab-control">
    <template
      v-for="(item, index) in titles"
      :key="item"
    >
      <div
        class="tab-control-item"
        :class="{ active: index === currentIndex }"
        @click="itemClick(index)"
      >
        <span>{{ item }}</span>
      </div>
    </template>
  </div>
</template>
<script setup>
import { ref } from "@vue/reactivity"
const props = defineProps({
  titles: {
    type: Array,
    default: () => []
  }
})
const currentIndex = ref(0)
const emits = defineEmits(["tabItemClick"])
const itemClick = (index) => {
  currentIndex.value = index
  emits("tabItemClick", index)
}
const setCurrentIndex = (index) => {
  currentIndex.value = index
}
</script>
<style lang="less" scoped>
.tab-control {
  display: flex;
  height: 44px;
  line-height: 44px;
  text-align: center;
  background-color: #fff;
}
.tab-control-item {
  flex: 1;
}
.tab-control-item.active {
  color: var(--primary-color);
  font-weight: 700;
}
.tab-control-item.active span {
  border-bottom: 3px solid var(--primary-color);
  padding: 8px;
}
</style>


微信图片_20221012152921.png

2. 监听滚动


这里需要用到我们重构之前封装过的 useScroll.js 工具函数。使其既能监听 window的滚动也可以监听元素的滚动。

在detail页面中,是一整个大的div 包裹很多个小的div在滚动

微信图片_20221012153013.png

微信图片_20221012153038.png

3. 监听标签点击,点击之后滚动到指定位置

思路:准备一个对象,key 是每一个组件的name,value是每一个组件的根元素

微信图片_20221012153112.png

// 创建标签对象
const sectionEls = ref({})
const getSectionRef = (value) => {
  if (!value) return
  const name = value.$el.getAttribute("name")
  sectionEls.value[name] = value.$el
}
const names = computed(() => {
  return Object.keys(sectionEls.value)
})
  1. 监听整个大的detial div盒子的滚动,如果滚动距离大于等于300就显示标签栏
  2. 点击标签栏跳到对应的位置上

微信图片_20221012153225.png

4. 滚动到一定位置显示出标签


这里涉及一个算法,有点类似根据歌曲的播放时间显示对应的歌词

微信图片_20221012153307.png

完整效果:

Git 管理和代码托管(github)


1.添加到暂存区

git add .

2.添加到仓库

git commit -m "detail分支"

3.推送代码

git push -u origin detail

4.将本地的 detail分支 合并到主分支上master (注意要先切换在主分支上)

git checkout mater

5.分支合并

git merge detail


6.更新远程仓库 detail 分支

git push

7.删除 detail 分支

git branch -d detail

补充:

网络数据请求地址数据

项目github 地址:https://github.com/fdfd-0313/cz-trip.git

相关文章
|
3天前
|
JavaScript
如何创建一个Vue项目(手把手教你)
这篇文章是一篇手把手教读者如何创建Vue项目的教程,包括使用管理员身份打开命令行窗口、找到存放项目的位置、通过vue-cli初始化项目、填写项目信息、进入项目目录、启动项目等步骤,并提供了一些常见第三方库的引入方法。
如何创建一个Vue项目(手把手教你)
|
4天前
|
JavaScript 前端开发
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
本文介绍了在Vue2或Vue3项目中如何使用Isotope(同位素)布局库来创建动态的网格布局,并提供了详细的代码实现和效果展示,包括过滤和排序功能。
10 0
在Vue2或Vue3中项目中使用 Isotope(同位素) 过滤和排序神奇的布局神器,全网独家实现!
|
4天前
|
数据可视化 JavaScript
Vue3项目使用G6可视化组件实现一个树形机构图
在Vue 3项目中使用G6可视化组件库实现树形机构图的构建和展示。
32 1
Vue3项目使用G6可视化组件实现一个树形机构图
|
10天前
|
JavaScript UED
以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!
以 Vue 3 项目为例,多个请求下如何全局封装 Loading 的展示与关闭?其中大有学问!
|
4天前
|
JavaScript UED
如何在Vue3项目中使用防抖节流技巧
在Vue 3项目中使用防抖和节流技巧以优化组件性能,包括使用`lodash`库和自定义实现这两种方法。
8 0
如何在Vue3项目中使用防抖节流技巧
|
4天前
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
本文介绍了在Vue3 + ElementPlus项目中如何使用`el-autocomplete`控件实现自动补全输入功能,并探讨了不同版本ElementPlus中`clearable`属性的兼容性问题。
21 0
在 Vue3 + ElementPlus 项目中使用 el-autocomplete 控件
|
4天前
Vue3项目打包时开启 Gzip 压缩和移动端调试时开启 vConsole 调试
本文介绍了如何在Vue3项目中配置开启Gzip压缩以减小打包文件体积,并在移动端调试时集成vConsole插件,同时使用webpack-bundle-analyzer插件进行打包分析。
12 0
Vue3项目打包时开启 Gzip 压缩和移动端调试时开启 vConsole 调试
|
4天前
|
JavaScript
Vue中router路由的使用、router-link的使用(在项目中的实际运用方式)
这篇文章介绍了Vue中router路由和router-link的使用方式,包括router配置、router-link在模板中的使用,以及实现的导航菜单和页面路由效果。
Vue中router路由的使用、router-link的使用(在项目中的实际运用方式)
|
4天前
|
JavaScript IDE 开发工具
在vue项目中禁用eslint
这篇文章提供了多种方法来禁用Vue项目中的ESLint校验,包括修改配置文件和IDE设置,以适应不同版本的Vue项目和开发者的需求。
在vue项目中禁用eslint
|
10天前
|
JavaScript 前端开发 安全
【Vue3 + Vite】6个非常强大的后台管理项目!开源且免费!
【Vue3 + Vite】6个非常强大的后台管理项目!开源且免费!