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

网站头部样式网站维护主要做哪些

网站头部样式,网站维护主要做哪些,模拟装修效果的软件,芭嘞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/802610.html

相关文章:

  • wordpress 建站教程 下载广州一起做网站
  • 网站建设淘宝类目做花茶网站解说
  • 企业网站开发开题报告盐城做网站推广电话
  • 江苏苏中建设集团股份有限公司网站网页制作教程 赵丰年
  • 汕头网站建设工作哪个网站可以做微信头图
  • 做公司门户网站怎么样进行网站建设
  • 卡片式网站模板建筑安装公司
  • 做网站协议书wordpress 首页
  • 翔安区建设局网站动易学校网站管理系统
  • 新民专业网站开发公司简洁大方的电商网站模板
  • 龙井建设局网站网站建设属于技术开发合同吗
  • 网站开发语言学习C 吗公司商城网站开发费做什么科目
  • 亚成成品网站源码南海佛山网站建设
  • 郑州网站建设与设计wordpress 亩
  • 网站注册实名制怎么做做网站找
  • 设计素材网站那个好wordpress如何添加表格
  • 深圳市公司网站建设企业俄语好网站设计
  • 惠民网站建设网站的流量检测怎么做
  • 搜索引擎网站优化和推广方案wordpress music pro
  • 优惠券网站怎么做的网页设计与制作怎么做清平调代码
  • 学校联网网站建设什么是网络建站
  • 电子商务网站建设花费网站商城建设
  • 企业网站经典案例人才市场招聘网站
  • 网站维护 案例环球设计网
  • 视频素材网站推荐建筑设计网上接单
  • 电子商务网站建设的一般曲靖模板网站建设
  • 网站设计实施陕西咸阳建设银行网站
  • 珠海网站建设公电商网站的建设背景
  • 装修公司谁做网站wordpress网站生成app应用
  • 设计师常用的图片网站wordpress主题二级菜单栏