• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 手把手教你使用Vue3实现图片散落效果

手把手教你使用Vue3实现图片散落效果

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了Vue3效果,图片散落效果等相关知识,希望对您有所帮助

基于Vue3怎么实现图片散落效果?下面本篇文章给大家介绍一下使用Vue3实现图片散落效果的方法,希望对大家有所帮助!


手把手教你使用Vue3实现图片散落效果


今天又是美好的摸鱼一天,刚刚进入职场,觉得一切都很新鲜,导师给的任务也不多(要是每天都是这样就好了),于是开始带薪学习。


做啥好呢

没事在网上乱逛的时候,偶然间看到一个动画效果不错,就决定上手做一些,简单的说就是一个完整的图片,在一段时间之后回突然破裂开来,觉得很有意思,就新建了一个文件夹。


出现问题

一下午的摸鱼时光,间公司熙熙攘攘,我在其中却格格不入(太闲了),不知多少人投来质疑的眼光(这家伙不工作吗),但我只沉浸在我的代码里。终于勉强完成了一个不怎么丑的版本。


手把手教你使用Vue3实现图片散落效果


原理

图片破裂效果说白了就是搞了100个div,每个div都有自己的背景图片,通过backgroundPosition属性来控制每个div的背景图片方位,最后拼在一起,就像一张完整的图片一样,给每个div都加上动画效果,每个div的旋转角度不同,移动距离不同,移动方位不同来让整个图片像玻璃一样散开来。


HTML结构

这里用到了两个div,#break是用作为100个div的容器,#InBox是用来绑定下一张的背景图片

<div id="animateBox" v-show="showImg">        <div id="break"></div>        <div id="InBox"></div></div>

准备5张图片

import bgImg5 from '../../assets/img/1/y1.png'import bgImg4 from '../../assets/img/1/y2.png'import bgImg3 from '../../assets/img/1/y3.png'import bgImg2 from '../../assets/img/1/y4.png'import bgImg6 from '../../assets/img/1/y5.png'import { ref, onMounted, onUnmounted } from 'vue'let index = 0onMounted(() => {  let imageSrcArr = [bgImg2, bgImg3, bgImg4, bgImg5, bgImg6]  let imgloadPromiseArr: Array<Promise<HTMLImageElement>> = []  let imageArr: Array<string> = []  for (let i = 0; i < imageSrcArr.length; i++) {    imgloadPromiseArr[i] = new Promise((resolve, reject) => {      let img = new Image()      img.src = imageSrcArr[i]      img.onload = () => {        resolve(img)      }    })  }  imgloadPromiseArr.forEach(item => {    item.then(res => {      imageArr.push(`url(${(<HTMLImageElement>res).currentSrc})`)      index = imageArr.length    })  })})


创建div

通过createElement创建200个div,每个div绑定长宽,给div添加背景图片,使用backgroundPosition来让整个div变得像一张图片,给div绑定动画效果。

for (let i = 0; i < 100; i++) {      let div = document.createElement('div')      let div1 = document.createElement('div')      div.style.width = '76px'      div.style.height = '41px' // 这里为什么是41px后面会提到      div1.style.width = '76px'      div1.style.height = '40px'      div1.style.overflow = 'hidden'      div.style.boxSizing = 'border-box'      div.style.backgroundImage = imageArr[0]      let positionX = -(i % 10) * 76 + 'px'      let positionY = -Math.floor(i / 10) * 40 + 'px'      div.style.backgroundPosition = positionX + ' ' + positionY      div.style.backgroundSize = '760px 400px'      let style = document.styleSheets[0]      style.insertRule(`@keyframes secondrotate${i}        {            0%,30%{                transform:scale(1)            }            70%            {transform: rotateX(${180 + Math.random() * 720}deg) rotateY(${180 + Math.random() * 720}deg)}            100%            {transform: rotateX(${180 + Math.random() * 720}deg) rotateY(${180 + Math.random() * 720}deg)}        }`)      style.insertRule(`@keyframes secondrotateS${i}        {            0%,32%{                transform:scale(1);opacity:1;            }70%            {transform: translateZ(${300 + Math.random() * 1500}px) translate(${(0.5 - Math.random()) * 500}px,${        (0.5 - Math.random()) * 500      }px);opacity:0}            100%            {transform: translateZ(${300 + Math.random() * 1500}px) translate(${(0.5 - Math.random()) * 500}px,${        (0.5 - Math.random()) * 500      }px);opacity:0}         }`)      div1.style.animation = `secondrotateS${i} 4.5s ease-out infinite`      div.style.animation = `secondrotate${i} 4.5s ease-out infinite`      div.style.transformOrigin =&
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 手把手教你使用Vue3实现图片散落效果

相关文章

  • PS+AI打造一个中国风字体LOGO设计过程教程
  • DEDECMS用函数实现隔行换色以及分组加线
  • 使用Jquery提交页面上多个表单数据的方法
  • Photoshop简单方法制作时尚的艺术字教程
  • Apache怎么修改php版本
  • 聊聊ThinkPHP3.2.3从php5升级到php7艰辛之路
  • 如何将label标签与input标签进行绑定
  • PHP保存数组到数据库
  • 织梦CMS系统正式收费:5800元,开源时代逐步没落!织梦CMS,将告别免费
  • 飞飞CMS后台密码是什么?忘记了怎么办?

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • WordPress后台出现多篇英文文章
    • 浅谈小程序如何授权登录,获取信息和手机号
    • 详解通过WordPress内置函数批量添加文章的方法
    • 说说PHP太空船运算符的使用场景
    • 利用图层样式制作漂亮的彩色霓虹字
    • 如何解决php错误代码0x80070002问题
    • PhotoShop绘制反光水晶玻璃球按钮教程
    • PHP中如何读取CSV内容并存入一个数组中
    • php中如何获取当前的函数名
    • 如何使用微信获取openid的静默及非静默

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有