用CSS创建翻转动画_html/css_WEB-ITnose
CSS动画是非常有意思的,用一些简单的属性就可以创建出来,从优雅的淡入到更加惊艳的效果都可以,翻页效果就是其中之一,它通过在容器的正面跟反面包含不同的内容来加以实现。本文就是用尽可能简单的方法来实现这种效果。
卡片翻转效果
查看演示
注:本文不是第一篇讲述这种效果怎么做的文章,但是我发现很多将这个的文章都过于复杂,添加了很多额外的样式代码到案例里面,让读者搞不清那些代码是需要的哪些不是。本文不会有这个问题,只含有一些必要的样式,你可以随意美化翻转的每个页。
HTML结构
以下HTML结构就是为了达到有两面的效果的:
<div class="flip-container" ontouchstart="this.classList.toggle('hover');"> <div class="flipper"> <div class="front"> <!-- 正面内容 --> </div> <div class="back"> <!-- 反面内容 --> </div> </div></div>
正如你预料的,有两个内容面板:正面跟反面。你将惊奇的发现包含的CSS样式不多:
/* 整个容器,包括透视 */.flip-container { perspective: 1000;}/* 鼠标放上去的时候翻转 */.flip-container:hover .flipper, .flip-container.hover .flipper { transform: rotateY(180deg);}.flip-container, .front, .back { width: 320px; height: 480px;}/* 翻转速度设置 */.flipper { transition: 1.5s; transform-style: preserve-3d; position: relative;}/* 翻转页的时候隐藏背面 */.front, .back { backface-visibility: hidden; position: absolute; top: 0; left: 0;}/* 前面板放在上面 */.front { z-index: 2; /* for firefox 31 */ transform: rotateY(0deg);}/* 背面初始的时候隐藏 */.back { transform: rotateY(180deg);}
我们来看下大体的实现过程:
- 最外面的容器设置了整个动画区域的透视范围
- 内层的容器是真正用于翻转的元素,父容器被激活的时候翻转了180度。这也是控制翻转速度的地方,把翻转角度改成-180度就会反方向翻转了。
- 正面和反面的元素被决定定位了,这样他们就可以很好的层叠在彼此之上。他们的 backface-visibility 属性是 hidden, 所以当正面或者反面显示的时候,背面就隐藏起来。
- 正面元素比反面元素有一个比较高的 z-index 属性值所以它可以预先编码和显示在上层。
- 反面元素旋转了180度,成了背面。
以上就是所有要做的了,将这个简单的结构放在你想放的地方,修改你需要的正面跟反面的样式。
来自CSS动画专家Ana Tudor的说明
在卡片元素上给属性设置确定的值(比如 overflow: hidden)将禁止有3D变换的子元素。我相信这是很重要的,因为我就曾这样设置过,导致所有的子元素都成了一样的3D变换了。
CSS翻转开关
如果你想用JavaScript代码来控制元素的翻转,一个简单的CSS类样式就可以了
.flip-container:hover .flipper, .flip-container.hover .flipper, .flip-container.flip .flipper { transform: rotateY(180deg);}
添加这个翻转的类样式到你想要用JavaScript控制的元素里面,使用下面的JavaScript代码就可以起作用了。
document.querySelector("#myCard").classList.toggle("flip")
CSS垂直翻转
想要实现垂直翻转就需要添加 transform-origin 坐标轴的值。原来的翻转样式需要更新才能实现垂直地翻转。
.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);}
你将看到绕着X轴翻转的效果。
支持IE浏览器
要兼容IE浏览器就需要对代码进行一些改动,因为IE还没兼容所有现代 transform 的属性。 本质上还是正面跟反面元素同时翻转。
/* 整个容器,包括透视 */.flip-container { perspective: 1000; transform-style: preserve-3d;}/* 注意这里有修改 */.flip-container:hover .back { transform: rotateY(0deg);}.flip-container:hover .front { transform: rotateY(180deg);}.flip-container, .front, .back { width: 320px; height: 480px;}/* 翻转速度设置 */.flipper { transition: 0.6s; transform-style: preserve-3d; position: relative;}/* 翻转页的时候隐藏背面 */.front, .back { backface-visibility: hidden; transition: 0.6s; transform-style: preserve-3d; position: absolute; top: 0; left: 0;}/* 注意这里有修改 */.front { z-index: 2; transform: rotateY(0deg);}/* 背面初始的时候隐藏 */.back { transform: rotateY(-180deg);}/* 垂直翻转的修改*/.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动画运用的代表性例子。稍加深入,就是3D CSS动画效果了,CSS代码真的算是很少了。这个效果对于HTML5游戏是很优雅的。对于卡片式的效果,简直完美。
本文译自https://davidwalsh.name/css-flip

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML、CSS和JavaScript是Web开发的三大支柱。1.HTML定义网页结构,使用标签如、等。2.CSS控制网页样式,使用选择器和属性如color、font-size等。3.JavaScript实现动态效果和交互,通过事件监听和DOM操作。

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

HTML的未来趋势是语义化和Web组件,CSS的未来趋势是CSS-in-JS和CSSHoudini,JavaScript的未来趋势是WebAssembly和Serverless。1.HTML的语义化提高可访问性和SEO效果,Web组件提升开发效率但需注意浏览器兼容性。2.CSS-in-JS增强样式管理灵活性但可能增大文件体积,CSSHoudini允许直接操作CSS渲染。3.WebAssembly优化浏览器应用性能但学习曲线陡,Serverless简化开发但需优化冷启动问题。

HTML的未来充满了无限可能。1)新功能和标准将包括更多的语义化标签和WebComponents的普及。2)网页设计趋势将继续向响应式和无障碍设计发展。3)性能优化将通过响应式图片加载和延迟加载技术提升用户体验。

HTML、CSS和JavaScript在网页开发中的角色分别是:HTML负责内容结构,CSS负责样式,JavaScript负责动态行为。1.HTML通过标签定义网页结构和内容,确保语义化。2.CSS通过选择器和属性控制网页样式,使其美观易读。3.JavaScript通过脚本控制网页行为,实现动态和交互功能。

HTML是构建网页结构的基石。1.HTML定义内容结构和语义,使用、、等标签。2.提供语义化标记,如、、等,提升SEO效果。3.通过标签实现用户交互,需注意表单验证。4.使用、等高级元素结合JavaScript实现动态效果。5.常见错误包括标签未闭合和属性值未加引号,需使用验证工具。6.优化策略包括减少HTTP请求、压缩HTML、使用语义化标签等。

HTML的作用是通过标签和属性定义网页的结构和内容。1.HTML通过到、等标签组织内容,使其易于阅读和理解。2.使用语义化标签如、等增强可访问性和SEO。3.优化HTML代码可以提高网页加载速度和用户体验。
