当前位置: 首页 > wzjs >正文

淘宝小程序开发文档江东seo做关键词优化

淘宝小程序开发文档,江东seo做关键词优化,招标网与采购网官网,关键词长尾词优化#技术栈Vue3TypeScript# 相比大家没少见过这个的效果: 作为视觉效果是很不错的 同时实现也很简单,本质是封装一个Vue指令 1,创建指令文件 src / directives / vSlidenIn.ts import type { Directive } from vueconst vSlideIn: Directive …

#技术栈Vue3+TypeScript#

相比大家没少见过这个的效果:

作为视觉效果是很不错的 同时实现也很简单,本质是封装一个Vue指令

1,创建指令文件 src / directives / vSlidenIn.ts

import type { Directive } from 'vue'const vSlideIn: Directive = {mounted(element) {// 组件记载后会触发的逻辑}
}export default vSlideIn

2,Animation API 添加入场动画

        同学们可能会想到改变stye或者class类,这些都是偏麻烦的,入侵性太大的指令泛用性会很低。我们这里使用Animation API封装动画,保证复用性

const MOVE_DISTANCE = 8
const MOVE_DURATION = 1000......const vSlideIn: Directive = {mounted(element) {const animation = element.animate([{transform: `translateY(${MOVE_DISTANCE}rem)`,opacity: 0,},{transform: 'translateY(0)',opacity: 1,},], {duration: MOVE_DURATION,easing: 'ease'})animation.pause()}
}.......

        这样是实现了动画,但动画会在所有组件出现时执行---那该如何让每个元素被滑动到时执行呢?请问下面

3,Intersection Observer API 判断执行时机

        调用其中的IntersectionObserver去监听使用该指令的元素,通过内置返回的元素的isInterscting值判断元素是否与窗口重叠

......const ob = new IntersectionObserver(entries => {// entries是一起监听的所有元素,是数组for (const entry of entries) {if (entry.isIntersecting){const element = entry.target// 执行动画逻辑}}
})......const vSlideIn: Directive = {mounted(element) {const animation = element.animate([{transform: `translateY(${MOVE_DISTANCE}rem)`,opacity: 0,},{transform: 'translateY(0)',opacity: 1,},], {duration: MOVE_DURATION,easing: 'ease'})ob.observe(element) // 监听},unmounted(element) {ob.unobserve(element)  // 记得组件销毁后取消监听}
}

但是,如何让每个元素和执行的动画对上号呢?

4,New Map存放映射

        在元素初始化时 暂停后动画pause()   全局new一个WeakMap来存放元素及其对应的动画 在监听函数中调用map找到对应的animation进行执行

// 滑动入场指令
import type { Directive } from 'vue'const MOVE_DISTANCE = 8
const MOVE_DURATION = 1000
const animationMap = new WeakMap()const ob = new IntersectionObserver(entries => {// entries是一个重叠状态的一个数组for (const entry of entries) {if (entry.isIntersecting){const element = entry.targetconst animation = animationMap.get(element)if (animation) {animation.play()ob.unobserve(element)}}}
})const vSlideIn: Directive = {mounted(element) {const animation = element.animate([{transform: `translateY(${MOVE_DISTANCE}rem)`,opacity: 0,},{transform: 'translateY(0)',opacity: 1,},], {duration: MOVE_DURATION,easing: 'ease'})animation.pause()animationMap.set(element, animation)ob.observe(element)},unmounted(element) {ob.unobserve(element)}
}export default vSlideIn

5,组件的应用

开袋即食,引入后在元素内加入v-slide-in即可,Vue会自己编译的

<template><main class="space-y-10"><article v-for="i in 10" :key="i" class="w-100 h-50 bg-red-500 shadow-md text-center leading-50 mx-auto text-white text-2xl" v-slide-in><h1>测试{{ i }}</h1></article></main>
</template><script setup lang="ts">
import vSlideIn from '@/directives/vSlideIn'</script>

http://www.dtcms.com/wzjs/794499.html

相关文章:

  • 海淘科技上海网站设计wordpress 判断置顶
  • 邓卅做网站在什么地方开源软件
  • 义乌 网站建设赌粉在哪个平台引流
  • 做前端的女生压力大吗秦皇岛网站建设seo
  • 弹幕网站开发代码动漫做的游戏 迅雷下载网站
  • 上海简约网站建设公司汕头网站建设方案维护
  • 用手机做网站经济型网站建设
  • 12380举报网站制度建设建行官方网站登录
  • 开平市住房和城乡建设局网站应用软件下载大全
  • 做网站和网页网站备案 营业执照副本
  • win2003 建设网站建设类似衣联网的网站
  • 中国建设网官方网站企业登录网站建设流程 文档
  • 西安官网seo方法优化公司排行榜
  • 做一个网站一般要多少钱wordpress默认主题下载地址
  • 固原门户网站建设网页制作与设计alt什么意思
  • 江苏淮安建设局网站wordpress页面标题去除
  • 网站开发公司推荐网页游戏大全链接
  • 东莞做网站贴吧wordpress直播购物插件
  • 百度引流推广怎么收费北京网站优化站优化
  • 深圳南山区住房和建设局网站官网企业信息系统英文
  • 成都分类信息网站开发网站设计师如何让客户信任你
  • seo营销优化软件东营企业网站排名优化
  • 上海工程建设交易信息网站网站如何做线上支付功能
  • 黄浦建设机械网站网站开发客户需求分析
  • 兼职做网站的软件网站备案需要什么资料
  • 兼职做Ppt代抄论文的网站如何做分类网站信息营销
  • 学编程可以建设网站吗域名注册长沙有限公司
  • 昆明本地网站建站之星如何建网站
  • 在门户网站上爆光怎么做珠海网站建设成功案例
  • 手机网站设计案例个人网站做百度推广