纯css实现翻牌特效

大家有没有看到过网上很炫的翻牌效果,牌正面对着我们,然后点击一下,牌就被翻过来了,效果很酷炫,是不是很想知道是怎么实现的么,代码很简单,跟着小编往下走。

先给大家介绍一下翻牌的原理:

1、父容器设置设置perspective,让其子元素支持3d透视。
注:perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。

2、牌正面和背面设置absolute属性,让正面的背面处于同一水平线上,用z-index属性设置背面朝上

3、让背面设置translateY(180),沿y轴旋转180度,背面朝后,backface-visibility属性让背对屏幕的时候隐藏隐藏。

4、hover属性,当鼠标经过flip_wrap时,让flip沿y轴旋转180度,让正面绕y轴旋转180度到背面隐藏,背面沿y轴旋转180转到正面来。

原理就是这样,下面就开始看具体代码吧。

<div class="flip_wrap"><!-- 大容器 -->
  <div class="flip"><!--实现翻牌容器 -->
    <div class="side front"><!--牌正面 -->
      <img src="http://wap.cmread.com/rbc/t/content/repository/ues/image/s109/fpbg2.png">
    </div>
    <div class="side back"><!-- 牌背面 -->
      <img src="http://wap.cmread.com/rbc/t/content/repository/ues/image/s109/fpbg.png">
    </div>
  </div>
</div>
.flip_wrap{
 width:210px;
 height:220px;
 margin:0 auto;
 perspective:800px;/*perspective属性定义3D元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。*/
 -webkit-perspective:800px;
 -moz-perspective:800px;
 -ms-perspective:800px;
 -o-perspective:800px;
}
.flip{
 width:210px;
 height:220px;
 backface-visibility:hidden;/*背对屏幕时隐藏*/
 -webkit-backface-visibility:hidden;
 -moz-backface-visibility:hidden;
 -ms-backface-visibility:hidden;
 -o-backface-visibility:hidden;
 transition: all 1s ease; /*为翻牌添加过渡效果*/
 -webkit-transition: all 1s ease;
 -moz-transition: all 1s ease;
 -ms-transition: all 1s ease;
 -o-transition: all 1s ease;
 transform-style: preserve-3d; /*子元素将保留其 3D 位置。*/
}
.side{
 width:100%;
 height:100%;
 position: absolute;/*让背面和正面重叠*/
 left:50%;
 margin-left:-105px;
}
.front{
 z-index:2;/*让正面朝上*/
}
.back{
 transform:rotateY(180deg);
 -webkit-transform:rotateY(180deg);
 -moz-transform:rotateY(180deg);
 -ms-transform:rotateY(180deg);
 -o-transform:rotateY(180deg);
}
.flip_wrap:hover .flip{
 transform:rotateY(180deg);(180);
 -webkit-transform:rotateY(180deg);
 -moz-transform:rotateY(180deg);
 -ms-transform:rotateY(180deg);
 -o-transform:rotateY(180deg);
}
<html>
<head>
 <meta charset="UTF-8">
 <title>翻牌</title>
 <style type="text/css">
   body,div{margin:0;padding:0;}
   .flip_wrap{
     width:210px;
     height:220px;
     margin:0 auto;
     perspective:800px;/*perspective属性定义3D元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。*/
     -webkit-perspective:800px;
     -moz-perspective:800px;
     -ms-perspective:800px;
     -o-perspective:800px;
   }
   .flip{
     width:210px;
     height:220px;
     backface-visibility:hidden;/*背对屏幕时隐藏*/
     -webkit-backface-visibility:hidden;
     -moz-backface-visibility:hidden;
     -ms-backface-visibility:hidden;
     -o-backface-visibility:hidden;
     transition: all 1s ease; /*为翻牌添加过渡效果*/
     -webkit-transition: all 1s ease;
     -moz-transition: all 1s ease;
     -ms-transition: all 1s ease;
     -o-transition: all 1s ease;
     transform-style: preserve-3d; /*子元素将保留其 3D 位置。*/
   }
   .side{
     width:100%;
     height:100%;
     position: absolute;/*让背面和正面重叠*/
     left:50%;
     margin-left:-105px;
   }
   .front{
     z-index:2;/*让正面朝上*/
   }
   .back{
     transform:rotateY(180deg);
     -webkit-transform:rotateY(180deg);
     -moz-transform:rotateY(180deg);
     -ms-transform:rotateY(180deg);
     -o-transform:rotateY(180deg);
   }
   .flip_wrap:hover .flip{
     transform:rotateY(180deg);(180);
     -webkit-transform:rotateY(180deg);
     -moz-transform:rotateY(180deg);
     -ms-transform:rotateY(180deg);
     -o-transform:rotateY(180deg);
   }
 </style>
</head>
<body>
<div class="flip_wrap"><!-- 大容器 -->
 <div class="flip"><!-- 实现翻牌容器 -->
   <div class="side front"><!-- 牌正面 -->
     <img src="http://wap.cmread.com/rbc/t/content/repository/ues/image/s109/fpbg2.png">
   </div>
   <div class="side back"><!-- 牌背面 -->
     <img src="http://wap.cmread.com/rbc/t/content/repository/ues/image/s109/fpbg.png">
   </div>
 </div>
</div>
</body>
</html>

案例展示:

http://211.140.7.173:8081/t/wuhairui/fanpai/index.html

时间: 2024-10-24 13:47:31

纯css实现翻牌特效的相关文章

CSS制作翻牌特效

应一个朋友要求替他把原本静态页面做成翻牌的特效. 主要应用了CSS3的transform,transiton.首先写好标签,一个ul下两个li元素,通过position的absolue设置两个li元素重合,设置z-index大小使不同呈现.然后css中设置hover事件并更改相应CSS属性.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&g

CSS3实战开发: 纯CSS实现图片过滤分类显示特效

各位网友大家好,今天我要带领大家开发一个纯CSS的图片分类显示的网址导航,单纯看标题大家可能有些困惑,依照以往惯例,我先给大家演示一下实际运行效果: 从上面的运行效果,大家不难发现,当我点击某一菜单时,导航区域会相应高亮显示此分类的图标,而其他图标则会变暗. 很多人可能会说,这个这么简单,直接使用javascript或jQuery等前端框架,再配合一些CSS,就可以很快实现同样的效果了.如果你是这一部分人,我也希望你停下脚步,看看这篇教程.因为在今天这篇教程中,我会用另一个思维方式来思考问题,我

纯CSS打造的安卓系统开机画面动画特效代

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>纯CSS打造的安卓系统开机画面动画特效代码</title> <style> .android{ position:relative; width:200px; heigh

前端每日实战:2.纯 CSS 创作一个矩形旋转 loader 特效

原文地址:2.纯 CSS 创作一个矩形旋转 loader 特效 扩展后地址:https://scrimba.com/c/cNJVWUR  扩展地址:https://codepen.io/pen/ HTML代码: <div class="loader"> <span></span> <span></span> <span></span> </div> CSS代码: /* 居中显示 */ htm

前端每日实战3.纯 CSS 创作一个容器厚条纹边框特效

原文地址:3.纯 CSS 创作一个容器厚条纹边框特效 没有啥好点子呀,不爽 HTML代码: <div class="box"> <div class="content"> <h2>What is Lorem Ipsum?</h2> <p>Mauris volutpat risus quis nisi tempus hendrerit. Nullam nisi urna, suscipit quis risu

如何使用纯CSS制作特效导航条?

先上张图,如何使用纯 CSS 制作如下效果? 在继续阅读下文之前,你可以先缓一缓.尝试思考一下上面的效果或者动手尝试一下,不借助 JS ,能否巧妙的实现上述效果. OK,继续.这个效果是我在业务开发的过程中遇到的一个类似的小问题.其实即便让我借助 Javascript ,我的第一反应也是,感觉很麻烦啊.所以我一直在想,有没有可能只使用 CSS 完成这个效果呢? 定义需求 我们定义一下简单的规则,要求如下: <ul> <li>不可思议的CSS</li> <li>

支持多种浏览器的纯css下拉菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312

纯css实现照片墙3D效果

每张照片都有美丽的故事.美好的回忆.家居中的照片墙则帮你展现出这些承载着家庭重要记忆的照片,除了用画框装饰照片挂在墙上外,照片墙还可以演变为手绘照片墙.也经常在网上看到一些关于照片墙的特效案例,决定自己动手试试. v直接上代码 这篇博客呢就是演示一个照片墙的效果.所以废话不多说,直接上代码然后展示特效.有兴趣的道友可以自己练练手试试.也可以改动改动其中的属性多玩玩,自己测试的时候建议用美女的照片,绝对"乐在其中". 1.准备材料:  准备材料就是没什么材料,自己麻溜赶快的去:百度找几张

纯css实现鼠标感应弹出二级菜单

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ