vue电商项目归纳总结(1)

简介: vue电商项目归纳总结(1)

1.吸顶效果


手写实现

思路:利用原生js的API和css的固定定位样式实现吸顶

核心步骤: 

01.获取滚动条滚动距离

document.documentElement.scrollTop

02. 事件监听

window.addEventListener('scroll', update)

03.先写一个类名使用固定定位及在钩子函数里监听和销毁

04简单的代码实现:

<template>
<nav><div :class="{show:y>78}">测试吸顶效果</div></nav>
</template>
<script>
import { onMounted, onUnmounted, ref } from 'vue'
export default {
  setup () {
    // 定义一个响应式数据
    const y = ref(0)
    const update = () => {
      y.value = document.documentElement.scrollTop
      console.log(y.value) // Y 获取滚动距离
    }
     //钩子函数(dom)页面加载时监听滚动距离
    onMounted(() => { window.addEventListener('scroll', update) })
       //钩子函数销毁定时器
    onUnmounted(() => { window.removeEventListener('scroll', update) })
    return { y }
  }
}
</script>
<style scoped>
nav{
  height: 3000px;
}
div{
  display: none;
  height: 50px;
  border: orange;
  background-color: skyblue;
  text-align: center;
  font-size: 20px;
}
.aaa{
  display: block;
  height: 300px;
  background-color: skyblue;
}
</style>

image.png

2.组装数据


业务场景:

利用v-for渲染的时候,有时候数据并不是只有一个数组,有可能是嵌套的,需要我们组装数据,如下图所示:

image.png

思路:写好我们想要的结构,然后一一赋值

image.png

image.png

注意点:1.map返回新数组list

               2.起名(如id和name要和后台的数据对应)

               3.拿到数据后v-for渲染,用然后children里面的数据 可以v-for item(父数据的每一项)

3.轮播图


业务场景:vue3手写轮播图

思路:

1.制作静态结构

2.传入图片之后渲染(通过ajax获取)

3.逻辑功能实现(渲染后的是静态的第一张图片),需要实现自动轮播、鼠标进去离开暂停开启效果 ,清理定时器

因为轮播图以后可能要用,所以注册全局组件(导入,在install里定义)

引入轮播图组件,几个小按钮

总体来言,还算简单,放出各功能核心代码:

自动轮播实现:利用v-for的下标和自己定义的变量相等时为true,控制样式(图片的显示隐藏)

 let timer = null
+    const autoPlayFn = () => {
+      clearInterval(timer)
+      timer = setInterval(() => {
+        index.value++
+        if (index.value >= props.sliders.length) {
+          index.value = 0
+        }
+      }, props.duration)
+    }
+    watch(() => props.sliders, (newVal) => {
+      // 有数据&开启自动播放,才调用自动播放函数
+      if (newVal.length && props.autoPlay) {
+        index.value = 0
+        autoPlayFn()
+      }
+    }, { immediate: true })
+

鼠标进入离开暂停 :利用鼠标进入时间@mouseenter事件和@mouseleave事件控制定时器(清除)

clearInterval(定时器ID)

销毁定时器:如果不销毁一直监听,容易出bug

1. // 组件销毁,清理定时器
2. onUnmounted(() => { clearInterval(timer)})



相关文章
|
8天前
|
JavaScript
vue组件中的插槽
本文介绍了Vue中组件的插槽使用,包括单个插槽和多个具名插槽的定义及在父组件中的使用方法,展示了如何通过插槽将父组件的内容插入到子组件的指定位置。
|
6天前
|
JavaScript
vue消息订阅与发布
vue消息订阅与发布
|
6天前
|
API UED
升级 Vue3 后,项目的打包体积会有什么变化?
升级 Vue3 后,项目的打包体积会有什么变化?
93 57
|
3天前
|
JavaScript
理解 Vue 的 setup 应用程序钩子
【10月更文挑战第3天】`setup` 函数是 Vue 3 中的新组件选项,在组件创建前调用,作为初始化逻辑的入口。它接收 `props` 和 `context` 两个参数,内部定义的变量和函数需通过 `return` 暴露给模板。`props` 包含父组件传入的属性,`context` 包含组件上下文信息。`setup` 可替代 `beforeCreate` 和 `created` 钩子,并提供类似 `data`、`computed` 和 `methods` 的功能,支持逻辑复用和 TypeScript 类型定义。
20 11
|
6天前
|
JavaScript 前端开发 IDE
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
Vue学习笔记5:用Vue的事件监听 实现数据更新的实时视图显示
|
6天前
|
JavaScript 前端开发 API
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
Vue学习笔记4:用reactive() 实现数据更新的实时视图显示
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
vue尚品汇商城项目-day07【vue插件-50.(了解)表单校验插件】
14 4
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【51.路由懒加载】
vue尚品汇商城项目-day07【51.路由懒加载】
15 4
|
6天前
|
JavaScript 前端开发
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
Vue学习笔记8:解决Vue学习笔记7中用v-for指令渲染列表遇到两个问题
|
5天前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
vue尚品汇商城项目-day07【vue插件-54.(了解)生成二维码插件】
14 2
下一篇
无影云桌面