今天来分享一个用CSS3实现的翻牌效果,有点类似那种3D卡片翻转的交互。你看下面的动图,鼠标悬停上去,卡片就会像被翻动一样,正面是图片,背面是文字介绍。如果把这个效果用在相册或者人物展示页面上,那视觉效果绝对拉满。

一、HTML代码
整个实现全靠CSS3,JS基本不用登场。这里用一组ul来承载多个卡片,每个li里面放一个a(方便点击跳转),a里再套两个div:第一个div放正常显示的图片,第二个div放翻转后显示的文字介绍。结构很清晰。
百度帖吧 CSS3 翻牌效果
百度帖吧 CSS3 翻牌效果
二、CSS3代码
关键样式都写在下面了,注释也加了一些,方便理解。核心就是利用perspective、transform-style: preserve-3d和backface-visibility这几个属性,配合rotateY实现3D翻转。
#content ul{ width:960px; padding:60px 0; margin:0 auto;}
#content ul li{ width:225px; height:180px; margin-right:20px; float:left;}
#content ul li:last-child{ margin-right: 0;}
#content ul li a{ display:block; height:180px;
-webkit-perspective:500px;
-moz-perspective:500px;
-ms-perspective:500px;
perspective:500px;
position: relative;}
#content ul li a > div{ top:0; left:0; width:100%; height:180px; color:#fff;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-webkit-transition:0.8s ease-in-out ;
-moz-transition:0.8s ease-in-out ;
-ms-transition:0.8s ease-in-out ;
position:absolute;}
#content ul li a div:first-child{
-webkit-transform: rotateY(0);
-moz-transform: rotateY(0);
-ms-transform: rotateY(0);
z-index: 2;}
#content ul li a:hover div:first-child{
-webkit-transform: rotateY(-180deg);
-moz-transform: rotateY(-180deg);
-ms-transform: rotateY(-180deg);}
#content ul li a div:last-child{
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-ms-transform: rotateY(180deg);
z-index: 1;
background:url('../images/bg.jpg') no-repeat;}
#content ul li a:hover div:last-child{
-webkit-transform: rotateY(0);
-moz-transform: rotateY(0);
-ms-transform: rotateY(0);
z-index: 1;}
#content ul li a div h3{ margin:0 auto 15px; padding:15px 0; width:200px; height:16px; line-height:16px; font-size: 14px; text-align: center; border-bottom:1px #fff dashed;}
#content ul li a div p{ padding:0 10px; font-size: 12px; text-indent: 2em; line-height:18px;}
三、实现原理
默认状态下,图片所在的div:first-child的rotateY为0,即正面朝前;而介绍所在的div:last-child的rotateY为180度,相当于背面朝前(但被隐藏了)。当鼠标悬停时,图片div从0度逆时针旋转到-180度,介绍div从180度逆时针旋转到0度,两者同时旋转,就形成了流畅的翻牌效果。
注意这里为什么介绍默认是180度?因为当它被图片遮盖时,你看到的其实是它的背面(180度状态),而鼠标悬停后它旋转回0度,才露出正面文字。这样两个div一前一后,协同完成翻转。
四、总结
CSS3的transform系列属性确实带来了很多可能性,像perspective、preserve-3d、backface-visibility这些,组合起来就能做出很棒的3D交互效果。当然,老旧的IE6-8不支持这些特性,但没关系——在那些浏览器里,效果会优雅降级,直接显示图片,也不难看。而在现代浏览器里,用户就能体验到流畅的翻牌动画。这种渐进增强的思路,既避免了堆砌大量JS,又让新浏览器用户获得了更好的体验,何乐而不为呢?
本文转载于:https://www.jb51.net/article/83976.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。