CSS动画非常的有趣;这种技术的美就在于,通过使用很多简单的属性,你能创建出漂亮的消隐效果。其中代表性的一种就是CSS图片翻转效果,能让你看到一张卡片的正反两面上的内容。本文就是要用最简单的方法向大家介绍如何创建这种效果。

网上有很多其它的教材,但里面添加了很多多余的代码样式,需要读者去分清哪些是必要的,那些是无用的;本文避免了这些问题,只列出了必要的CSS代码,你可以在其上添加自己喜欢的风格来美化这些卡片。

HTML代码

实现正反面效果的HTML代码,估计你也能想到应该是这样的:

正如你想到的,应该有两个容器,分别存放卡片“前面”和“背面”,通过CSS,我们会指定这两个容器元素自己的作用。还有需要注意的是ontouchstart这段js,它能让你使用触屏来触发翻转动作。显然,你应该把这段代码单独提取出来,让JavaScript代码放到一起。

CSS代码

/* entire container, keeps perspective */

.flip-container {

perspective:;

}

/* flip the pane when hovered */

.flip-container:hover .flipper, .flip-container.hover .flipper {

transform: rotateY(180deg);

}

.flip-container, .front, .back {

width: 320px;

height: 480px;

}

/* flip speed goes here */

.flipper {

transition: 0.6s;

transform-style: preserve-3d;

position: relative;

}

/* hide back of pane during swap */

.front, .back {

backface-visibility: hidden;

position: absolute;

top:;

left:;

}

/* front pane, placed above back */

.front {

z-index:;

}

/* back, initially hidden pane */

.back {

transform: rotateY(180deg);

}

下面是大概的整个过程的原理:

在最外层的容器元素上设置整个动画区域的透视(perspective)属性。

当外层容器元素遇到鼠标悬停事件时,内部存放卡片的容器旋转180度。这里也是控制旋转速度的地方。如果将旋转值设置为-180deg,是反向旋转。

表示卡片正面和背面的元素都要绝对定位,这样它们才能在相同的位置相互遮挡。它们的背面可视性(backface-visibility)属性设置为隐藏,这样每个卡片的背面在翻转时都是看不见的。

将卡片的正面设置为一个比背面要高的z-index值,这样保证卡片的正面在最上面。

将背面卡片旋转180度,这样让它扮演背面的角色。

这就是全部这些代码的作用!你把这段代码放到你的网页里,然后修饰一下卡片的样式就行了!

注:对卡片元素的overflow: hidden)会导致其子元素丧失3D变换功能。我认可他的观点,因为正是在本文的例子中我正好遇到了overflow: hidden相关的麻烦,它导致了3D变换子元素全都出现在了同一个平面上,有几个是被旋转了180度。

触发CSS翻转

如果你喜欢用JavaScript来触发翻转动作,下面这个简单的css样式类就能帮你做到这样:

.flip-container:hover .flipper, .flip-container.hover .flipper, .flip-container.flip .flipper {

transform: rotateY(180deg);

}

使用javascript给容器元素添加这个css flip类就能触发卡片翻转——不需要用户悬停鼠标在上面。用document.querySelector("#myCard").classList.toggle("flip")实现它!

CSS竖向翻转

执行竖向翻转也很简单,跟横向翻转一样,只需要修改一下 transform-origin的值,然后让它按X轴旋转。

.vertical.flip-container {

position: relative;

}

.vertical .back {

transform: rotateX(180deg);

}

.vertical.flip-container .flipper {

transform-origin: 100% 213.5px; /* 高的一半 */

}

.vertical.flip-container:hover .flipper {

transform: rotateX(-180deg);

}

注意这里用的是rotateX,而不是之前的rotateY。

让IE支持这种动画技术

需要针对IE对这段标准的卡片翻转代码进行特殊的修改,因为IE还没有实现现代浏览器中的transform功能。基本的做法就是对正面和背面两个卡片同时分别翻转:

/* entire container, keeps perspective */

.flip-container {

perspective:;

transform-style: preserve-3d;

}

/* UPDATED! flip the pane when hovered */

.flip-container:hover .back {

transform: rotateY(0deg);

}

.flip-container:hover .front {

transform: rotateY(180deg);

}

.flip-container, .front, .back {

width: 320px;

height: 480px;

}

/* flip speed goes here */

.flipper {

transition: 0.6s;

transform-style: preserve-3d;

position: relative;

}

/* hide back of pane during swap */

.front, .back {

backface-visibility: hidden;

transition: 0.6s;

transform-style: preserve-3d;

position: absolute;

top:;

left:;

}

/* UPDATED! front pane, placed above back */

.front {

z-index:;

transform: rotateY(0deg);

}

/* back, initially hidden pane */

.back {

transform: rotateY(-180deg);

}

/*

Some vertical flip updates

*/

.vertical.flip-container {

position: relative;

}

.vertical .back {

transform: rotateX(180deg);

}

.vertical.flip-container:hover .back {

transform: rotateX(0deg);

}

.vertical.flip-container:hover .front {

transform: rotateX(180deg);

}

使用上面的这段代码,IE10里也能正确的进行卡片翻转了!

这个CSS卡片翻转动画技术一直是一个经典的案例,代表着CSS动画能够实现的效果,甚至3DCSS动画能实现的强大效果。优点就是使用的代码很少很简单。对于制作HTML5动画来说这种效果非常的实用,可以说完美。

参考地址

CSS图片翻转动画技术详解

因为不断有人问我,现在我补充一下:IE是支持这种技术的!尽管会很麻烦.需要做的是旋转front和back元素,而不是旋转整个容器元素.如果你使用的是最新版的IE,可以忽略这一节.IE10+是支持的,I ...

「视频直播技术详解」系列之七:直播云 SDK 性能测试模型

​关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 本系列文章大纲如下: ...

腾讯技术分享:GIF动图技术详解及手机QQ动态表情压缩技术实践

本文来自腾讯前端开发工程师“ wendygogogo”的技术分享,作者自评:“在Web前端摸爬滚打的码农一枚,对技术充满热情的菜鸟,致力为手Q的建设添砖加瓦.” 1.GIF格式的历史 GIF ( Gr ...

IPv6技术详解:基本概念、应用现状、技术实践(下篇)

本文来自微信技术架构部的原创技术分享. 1.前言 在上篇,我们讲解了IPV6的基本概念. 本篇将继续从以下方面展开对IPV6的讲解 ...

IPv6技术详解:基本概念、应用现状、技术实践(上篇)

本文来自微信技术架构部的原创技术分享. 1.前言 普及IPV6喊了多少年了,连苹果的APP上架App Store也早已强制IPV6的支持,然并卵,因为历史遗留问题,即使在IPV4地址如果饥荒的情况下, ...

Protocol Buffer技术详解(数据编码)

Protocol Buffer技术详解(数据编码) 之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和J ...

CSS3盒模型display:box详解

display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box ...

CDN学习笔记二(技术详解)

一本好的入门书是带你进入陌生领域的明灯,绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把的精华放上网.公诸同 ...

CDN技术详解及实现原理

CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把的精 ...

随机推荐

转载《Android Adapter简单总结》

1.概念 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的View(List View,Grid View)等地方都需要用到Adapter.如下 ...

Decorator模式

Decorator模式能够像标准的继承一样为类添加新的功能. 不同于标准继承机制的是,如果对象进行了实例化,Decorator模式能够在运行时动态地为对象添加新的功能. <?php abstra ...

dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法

查找替换 正则表达式  \btppabs="h[^"]*" 后面不能有空格 你懂得的 选中右下角的 √[使用正则表达式] 替换全部

Chapter 1&period; OpenGL基础回顾 - Review of OpenGL Basics

译自 本章主要回顾OpenGL应用编程接口,为后续章节中的材质铺垫基础.这并不是详尽的回顾.如果你已经 ...

ARC forbids explicit message send of &&num;39&semi;autorelease&&num;39&semi;错误

(ARC forbids explicit message send of 'autorelease'错误) 在ios中经常会遇到:ARC forbids explicit message send ...

JavaSE初步学习笔记

PS:个人用来随时记录学习的过程,格式比较混乱,仅供个人参考与复习知识点 Dos命令行,课程中常见的命令 Dir:列出当前目录下包含的文件 Md:在当前目录下创建文件 Rd:在当前目录下删除指定文件夹 ...

开发者说 &vert; 使用Visual Studio Code编译、调试Apollo项目

转载地址:https://mp.weixin.qq.com/s?__biz=MzI1NjkxOTMyNQ==&mid=2247484266&idx=1&sn=d6bcd4842 ...

自动化脚本中click&lpar;&rpar;或sendKeys&lpar;&rpar;没有反应

前提: 排除xpath引用错误或元素的xpath每次都不同的情形. 问题描述 自动化脚本中click()方法和sendKeys()方法报错, 返回异常InvocationTargetException ...

Oracle的导入和导出

导出命令: EXP 用户名/密码@数据库名  BUFFER=64000 file=G:\dmp\full1.dmp  OWNER=用户名 导入命令: IMP 用户名/密码@数据库名 BUFFER=64 ...

【Linux】 Ncures库的介绍与安装

Ncures库的介绍 ncurses(new curses)是一套编程库,它提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面. ncurses名字中的n意味着“new”,因为它是curse ...

拐道交叉的css3动画,CSS3图片翻转动画技术详解相关推荐

  1. html渐变线条代码,CSS3实现线性渐变用法示例代码详解

    前言 演示下太老版本浏览器的渐变实现了[IE9-]; IE9以前,渐变都是通过滤镜实现的,大体的写法就是这样; .testDiv { width:400px; height:400px; border ...

  2. php 自动获取头像,PHP_WordPress中用于获取及自定义头像图片的PHP脚本详解,get_avatar()(获取头像) get_avat - phpStudy...

    WordPress中用于获取及自定义头像图片的PHP脚本详解 get_avatar()(获取头像)get_avatar() 函数用来获取置顶邮箱或者用户的头像代码,在评论列表中非常常用. 这个函数提供 ...

  3. python二维图颜色函数_通过python改变图片特定区域的颜色详解

    通过python改变图片特定区域的颜色详解 首先让我祭出一张数学王子高斯的照片,这位印在德国马克上的神人有多牛呢? 他是近代数学的奠基人之一,与牛顿, 阿基米德并称顶级三大数学家,随便找一个编程语言的 ...

  4. html5离线存储图片,HTML5教程 离线存储技术详解

    本篇教程探讨了HTML5教程 离线存储技术详解,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < 随着Web App的发展,越来越多的移动端App使用HTML5 ...

  5. 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解

    本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...

  6. python图像特征提取进行分割_python实现图片处理和特征提取详解

    这是一张灵异事件图...开个玩笑,这就是一张普通的图片. 毫无疑问,上面的那副图画看起来像一幅电脑背景图片.这些都归功于我的妹妹,她能够将一些看上去奇怪的东西变得十分吸引眼球.然而,我们生活在数字图片 ...

  7. python抓取图片数字_python实现图片处理和特征提取详解

    这是一张灵异事件图...开个玩笑,这就是一张普通的图片. 毫无疑问,上面的那副图画看起来像一幅电脑背景图片.这些都归功于我的妹妹,她能够将一些看上去奇怪的东西变得十分吸引眼球.然而,我们生活在数字图片 ...

  8. php带旋转动画刷新页面,css旋转动画效果的简单实现示例详解

    我们可以通过css来做出动画效果,下面我为大家演示的是p的旋转,颜色过渡的动画 a{ text-align:center; line-height:100px; transition:all 2s; ...

  9. 关于css3中的2d样式skew倾斜详解

    简介: 在css3中,transform有个属性skew,能使元素产生倾斜效果,不少小伙伴接触到时都很费解,为什么倾斜效果和自己想的不一样,当然网上也有不少死记硬背规律口诀的方法,但我个人觉得都不是很 ...

最新文章

  1. Java学习笔记32
  2. 基于能量或过零率的实时语音分割--学习笔记
  3. 主从mysql能过滤指定dml吗_MyCat教程二:mysql主从复制实现 - HG-93
  4. TextBox字符串转换为数字类型
  5. 【C++深度剖析教程13】函数对象的分析
  6. 谷歌AI为达目的,把自己的身体改造成了这样……
  7. 2018 “百度之星”程序设计大赛 - 初赛(A)P1001度度熊拼三角(贪心)
  8. Mac天真答疑「6」mac系统使用技巧入门
  9. 把百度首页放到博客里看看
  10. NASM 汇编编程(八)int 10h
  11. Jprofiler激活码
  12. 金桔蓝牙LoRa主被动一体定位系统原理
  13. python之道03
  14. 随笔2022.12.6
  15. 跨越技术鸿沟:从TCPIP到NDN
  16. Java之socket网络编程
  17. 运算符之 --- 取余运算 %
  18. 什么是软文, 软文怎么写
  19. linux shell中'',和``的区别
  20. 中国植入式起搏器市场趋势报告、技术动态创新及市场预测

热门文章

  1. 荣耀30可以升级鸿蒙系统,惊喜!荣耀手机也能升鸿蒙:这5款机型用户有福了
  2. 串口和TCP互相转发工具
  3. iOS中app启动闪退的原因
  4. 【Python_PyQtGraph 学习笔记(五)】基于PyQtGraph和GraphicsLayoutWidget动态绘图并实现窗口模式,且保留全部绘图信息
  5. H.264笔记整理3
  6. NAND FLASH加载ramdisk文件系统
  7. 时钟表24进制HTML,24进制数字电子钟时计器、译码显示电路 具有自动清零功能
  8. ResNet、ResNeXt网络详解及复现
  9. 布斯乘法 Mips实现 - Booth Algorithm
  10. html列表序号为圆点的,HTML_列表标签