前端程序媛教你美颜年终账单

简介: 从技术人员的角度来说: 年终账单= 页面滑动 + dom动画 + 数据对前端工作人员来说: 页面滑动和dom动画是最重要。页面滑动和dom动画分开做,都不难,都很容易实现。 但如何让页面滑动和dom动画配合的天一无缝呢??

1. 开发过程


1)引入 vue-awesome-swiper实现页面滑动


npm install --save vue-awesome-swiper


引入方式两种分别


a)  全局引入(在main.js中引入)


import vueAwesomeSwiper from 'vue-awesome-swiper'
import  './static/css/swiper.min.css'(下载到了本地)
Vue.use(vueAwesomeSwiper)


b) 局部(在组件中)


import { swiper, swiperSlide } from 'vue-awesome-swiper'
components: {
      swiper,
      swiperSlide,
    }


页面初始化


<swiper :options="swiperOption" ref="mySwiper" class="swiper-wrapper">
      <swiper-slide >
        <first-page></first-page>
      </swiper-slide>
      <swiper-slide class="swiper-slide">
        <old-driver-page></old-driver-page>
      </swiper-slide>
      <swiper-slide class="swiper-slide">
        <join-page></join-page>
      </swiper-slide>
    </swiper>


data() {
      return {
        swiperOption: { // 初始化参数
          direction: 'vertical', // 垂直切换选项
          autoplay: false, // 是否自动播放
          height : window.innerHeight, // 高
          width:window.innerWidth //宽
        }
      }
    },
    computed: {
      swiper() {
        return this.$refs.mySwiper.swiper 
      }
    },
    mounted(){
       this.swiper.slideTo(0,0, false); //跳到指定页
    },


引入选择任意一种方式都可以,项目启动,页面滑动效果完成。


2)引入animate.css


引入animate.css


npm install animate.css --save


main.js中引入


import animated from 'animate.css'
Vue.use(animated)


####3)引入swiper.animate1.0.3.min.js


重点来了!!!!


页面滑动和dom动画的链接着:swiper.animate


下载地址:https://www.swiper.com.cn/download/index.html#file8



组件引入:


import * as swiperAnimated from './../../static/js/swiper.animate1.0.3.min.js'


组件配置:


data() {
   return {
     swiperOption: {
       direction: 'vertical', // 垂直切换选项
       autoplay: false,
       height: window.innerHeight,
       width: window.innerWidth,
       on: {
         init: function () {
           swiperAnimated.swiperAnimateCache(this); //隐藏动画元素 
           swiperAnimated.swiperAnimate(this); //初始化完成开始动画
         },
         slideChangeTransitionEnd: function () {
           swiperAnimated.swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
         }
       }
     }
   }
 },


动画的Dom上添加:


swiper-animate-effect:切换效果
swiper-animate-duration:可选,动画持续时间(单位秒
swiper-animate-delay:可选,动画延迟时间(单位秒)



启动项目,项目报错



我们打开swiper.animate1.0.3.min.js发现该文件并没有export使用的几个方法,



自己修改swiper.animate1.0.3.min.js文件, 修改完后的文件:


export function swiperAnimateCache(a) {
  for (var  j = 0; j < a.slides.length; j++)
    for (let allBoxes = a.slides[j].querySelectorAll(".ani"), i = 0; i < allBoxes.length; i++){
      allBoxes[i].attributes["style"] ? allBoxes[i].setAttribute("swiper-animate-style-cache", allBoxes[i].attributes["style"].value) : allBoxes[i].setAttribute("swiper-animate-style-cache", " "), allBoxes[i].style.visibility = "hidden"
    }
}
export function swiperAnimate(a) {
   clearSwiperAnimate(a); 
   const b = a.slides[a.activeIndex].querySelectorAll(".ani");
    for (let  i = 0; i < b.length; i++){
      b[i].style.visibility = "visible"
      const effect = b[i].attributes["swiper-animate-effect"] ? 
      b[i].attributes["swiper-animate-effect"].value : "" 
      b[i].className = b[i].className + "  " + effect + " " + "animated"
      const style = b[i].attributes["style"].value
      const duration = b[i].attributes["swiper-animate-duration"] ?
      b[i].attributes["swiper-animate-duration"].value : "" 
      duration && (style = style + "animation-duration:" + duration + ";-webkit-animation-duration:" + duration + ";")
      const  delay = b[i].attributes["swiper-animate-delay"] ? b[i].attributes["swiper-animate-delay"].value : ""
      delay && (style = style + "animation-delay:" + delay + ";-webkit-animation-delay:" + delay + ";")
      b[i].setAttribute("style", style) 
    }
  }
export function clearSwiperAnimate(a) { 
  for (var j = 0; j < a.slides.length; j++){
    let allBoxes = a.slides[j].querySelectorAll(".ani")
    for (let i = 0; i < allBoxes.length; i++){
       allBoxes[i].attributes["swiper-animate-style-cache"] && allBoxes[i].setAttribute("style", allBoxes[i].attributes["swiper-animate-style-cache"].value)
       allBoxes[i].style.visibility = "hidden"
       allBoxes[i].className = allBoxes[i].className.replace("animated", " ")
       const effectV = allBoxes[i].attributes["swiper-animate-effect"].value 
       allBoxes[i].attributes["swiper-animate-effect"] && (effectV,allBoxes[i].className = allBoxes[i].className.replace(effectV, " ")) }
    }
  } 


文件自己修改,技术能力有限,如果谁有更好的修改方法,欢迎留言沟通。


dom的动画效果配置www.swiper.com.cn/usage/anima…(swiper官网)


dome效果:pan.baidu.com/s/1pALAcGfA…


最后


以上是我实现一个年终账单的页面活动和dom动画效果的全部过程,希望对大家有所帮助


相关文章
|
6月前
|
移动开发 前端开发 HTML5
零基础学前端系列教程 | 和前端谈恋爱的第005天——约会账单
零基础学前端系列教程 | 和前端谈恋爱的第005天——约会账单
34 1
|
6月前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
|
3月前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
225 14
|
3月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
66 0
|
3月前
|
人工智能 自然语言处理 运维
前端大模型应用笔记(一):两个指令反过来说大模型就理解不了啦?或许该让第三者插足啦 -通过引入中间LLM预处理用户输入以提高多任务处理能力
本文探讨了在多任务处理场景下,自然语言指令解析的困境及解决方案。通过增加一个LLM解析层,将复杂的指令拆解为多个明确的步骤,明确操作类型与对象识别,处理任务依赖关系,并将自然语言转化为具体的工具命令,从而提高指令解析的准确性和执行效率。
|
3月前
|
存储 弹性计算 算法
前端大模型应用笔记(四):如何在资源受限例如1核和1G内存的端侧或ECS上运行一个合适的向量存储库及如何优化
本文探讨了在资源受限的嵌入式设备(如1核处理器和1GB内存)上实现高效向量存储和检索的方法,旨在支持端侧大模型应用。文章分析了Annoy、HNSWLib、NMSLib、FLANN、VP-Trees和Lshbox等向量存储库的特点与适用场景,推荐Annoy作为多数情况下的首选方案,并提出了数据预处理、索引优化、查询优化等策略以提升性能。通过这些方法,即使在资源受限的环境中也能实现高效的向量检索。
|
3月前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
151 1
|
3月前
|
前端开发 算法 测试技术
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
本文对比测试了通义千文、文心一言、智谱和讯飞等多个国产大模型在处理基础计数问题上的表现,特别是通过链式推理(COT)提示的效果。结果显示,GPTo1-mini、文心一言3.5和讯飞4.0Ultra在首轮测试中表现优秀,而其他模型在COT提示后也能显著提升正确率,唯有讯飞4.0-Lite表现不佳。测试强调了COT在提升模型逻辑推理能力中的重要性,并指出免费版本中智谱GLM较为可靠。
前端大模型应用笔记(五):大模型基础能力大比拼-计数篇-通义千文 vs 文心一言 vs 智谱 vs 讯飞vsGPT
|
4月前
|
SpringCloudAlibaba JavaScript 前端开发
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
分布式组件、nacos注册配置中心、openfegin远程调用、网关gateway、ES6脚本语言规范、vue、elementUI
谷粒商城笔记+踩坑(2)——分布式组件、前端基础,nacos+feign+gateway+ES6+vue脚手架
|
5月前
|
存储 前端开发 JavaScript
前端语言串讲 | 青训营笔记
前端语言串讲 | 青训营笔记
54 0