照片翻转的二种方式

最近在学习使用动画效果,经常去鑫空间翻看大神写得博客,最近看到最新3月份出炉的博客–小tips: 在canvas上实现元素图片镜像翻转动画效果,我就想到自己也有需要展示照片的时候,只实现过一种鼠标mouseover时照片放大,鼠标mouseleave时照片复原的效果,实在是太简陋了!看到这个canvas图片水平镜像翻转动画实例页面后,很想在用css实现这个效果(后话是css实现太简单了)。

1.css展示的2种方式

我想到2种使用css实现照片旋转的方式,其一是hover,其二是点击事件绑定class。其核心代码是:

ul li >section{transition: 0.6s;
}
ul li:hover .back{transform: rotateY(180deg);
}
ul li .back2{transform: rotateY(180deg);
}

大家是不是觉得很low,寥寥几行代码,想哭的心都有了,原来css的实现方式就是这么简单。

2.页面代码

<template><section><h1>照片旋转演示组件</h1><section id="container"><ul><li><section class="back"><img src="~assets/img/people/1.jpg" alt="" ></section><p>CSS方式一:hover</p></li><li @click="isPositive = !isPositive"><section :class="isPositive ? 'back2' : ''"><img src="~assets/img/people/2.jpg" alt="" ></section><p>CSS方式二:点击事件绑定class</p></li><li @click="onFlip"><section><img src="~assets/img/people/3.jpg" alt="" id="img" ></section><p>JS方式一:使用Tween.js动画算法加载不同旋转角度</p></li></ul><select v-model="picParam.algorithm"><option v-for="item in tweenStr.algorithm" v-text="item"></option></select><select v-model="picParam.rapidity"><option v-for="item in tweenStr.rapidity" v-text="item"></option></select></section></section>
</template>

3.使用Tween.js运动缓动算法实现照片翻转,更加灵活!

看到了大神张花废篇幅介绍的运动缓动算法Tween.js,就特别想在照片翻转中用到它!这个算法用于实现动画效果的,而且代码量特别少,使用灵活。
Tween.js使用示例如下:

// 使用Tween.js动画库实现图片翻转onFlip () {let self = thisif (self.picParam.isMove) {return}self.picParam.isMove = true// 水平翻转动画let img = document.getElementById('img')Math.animation(-180 + self.picParam.deg, 0 + self.picParam.deg, 600, self.picParam.algorithm + '.' + self.picParam.rapidity, function (value, isEnding) {img.style.transform = 'rotateY('+value+'deg)'if (isEnding) {self.picParam.isMove = falseself.picParam.isflip = !self.picParam.isflipself.picParam.deg = self.picParam.isflip ? 0 : 180}})}

实现效果如下:

使用css3和tween.js二种方式实现照片翻转相关推荐

  1. Ajax的异步同步原理以及js几种方式的实现

    Ajax的异步同步原理以及js几种方式的实现的个人详细解析 Ajax简介 Ajax的全称是:Asynchronous JavaScript And XML,指的是异步 JavaScript 及 XML ...

  2. Python之selenium的打开浏览器的二种方式

    Python之selenium的打开浏览器的二种方式 文章目录 Python之selenium的打开浏览器的二种方式 第一步我们要先按照selenium: 第一种打开方式: 第二种打开方式: 第一步我 ...

  3. Unity Android 之 获取系统语言(手机设备设置的系统语言)的二种方式(中文区分简体、繁体、日文)

    Unity Android 之 获取系统语言的二种方式(中文区分简体.繁体.日文) 目录 Unity Android 之 获取系统语言的二种方式(中文区分简体.繁体.日文) 一.简单介绍 二.实现原理 ...

  4. js中遍历数组加到新数组_JS数组遍历的十二种方式

    遍历有如下几种方式 数组方法 map forEach filter find findIndex every some reduce reduceRight 其他方法 for for in for o ...

  5. vue.js 三种方式安装(vue-cli)

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...

  6. 【CSDN软件工程师能力认证学习精选】vue.js 三种方式安装(vue-cli)

    CSDN软件工程师能力认证(以下简称C系列认证)是由中国软件开发者网CSDN制定并推出的一个能力认证标准.C系列认证历经近一年的实际线下调研.考察.迭代.测试,并梳理出软件工程师开发过程中所需的各项技 ...

  7. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  8. 关于Vue下组件引入第三方外部Js几种方式

    第一种方式:利用Vue的mounted生命周期 const oScript = document.createElement('script'); oScript.type = 'text/javas ...

  9. mongodb存储二进制数据的二种方式——binary bson或gridfs

    python 版本为2.7 mongodb版本2.6.5 使用mongodb存储文件,可以使用两种方式,一种是像存储普通数据那样,将文件转化为二进制数据存入mongodb,另一种使用gridfs,咱们 ...

最新文章

  1. 未经任何测试的源代码开放
  2. asp.net 命令行工具初步了解
  3. 找不到java.vbs_无法找到脚本*.VBS的脚本引擎解决办法
  4. centos6 kvm网卡桥接
  5. The Constructor with No Arguments
  6. GDCM:gdcm::Parser的测试程序
  7. 打了断点为直接运行完_黑社会行为?男子驾校身亡,家属看现场被保安围殴,手臂被打断...
  8. 如何改变Idea的背景
  9. linux循环脚本while循环,Shell脚本while、until循环语句简明教程
  10. android 华为手机灭屏搜索不到蓝牙_华为Mate 30更新EMUI10.1.0.132版本,新增10项实用功能...
  11. golang web服务器_使用Go制作自己的Web服务器:快速指南
  12. 阿里通报前淘宝直播运营负责人违规:接受礼品及款待,安排女友入职合作方...
  13. 战斗民族的Yandex开始首次雪地无人车路测 | 视频
  14. python入门:基础,列表、元组、字典及集合类型
  15. Spring的概述及主要模块
  16. 怎么做好饮料代理?如何发展市场
  17. Kylin使用Spark构建Cube
  18. php设为首页代码,JavaScript
  19. 牛客-kotori和糖果(哈斯图吗?)
  20. 密码学编程基础——换位加密

热门文章

  1. 步进电机S曲线的生成
  2. 图片与文字排版-flex
  3. 大话 Python:python 操作 excel 系列 -- 数据的提取与筛选
  4. Frames : 一个特殊的窗口类型
  5. 惯性导航原理(2):导航基础知识
  6. Python控制结构(二)
  7. 2020年史上最全移动端Web整理从开发基础到实战(三)
  8. NetBeans的学习资源
  9. Linux性能优化实战:如何“快准狠”找到系统内存的问题?(21)
  10. 深度学习 - 开发平台