相关文章推荐
乐观的针织衫  ·  法鼓全集2020紀念版·  3 月前    · 
坐怀不乱的铅笔  ·  蔚来ES6 ...·  11 月前    · 
有爱心的煎鸡蛋  ·  在 Linux 上安装 ...·  2 年前    · 
首发于 前端开发

纯css实现翻牌特效

HTML5 纯css实现翻牌特效 [3/17]

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


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

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转到正面来。


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


HTML

< div class= "flip_wrap" ><!-- 大容器 -->
< div class= "flip" ><!--实现翻牌容器 -->
< div class= "side front" ><!--牌正面 -->
< img src= " wap.cmread.com/rbc/t/co " >
</ div >
< div class= "side back" ><!-- 牌背面 -->
< img src= " wap.cmread.com/rbc/t/co " >
</ div >
</ div >
</ div >


CSS

.flip_wrap{
width :210 px ;
height :220 px ;
margin :0 auto ;
perspective :800 px ;/*perspective属性定义3D元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。*/
-webkit-perspective :800 px ;
-moz-perspective :800 px ;
-ms-perspective :800 px ;
-o-perspective :800 px ;
}
.flip{
width :210 px ;
height :220 px ;
backface-visibility : hidden ;/*背对屏幕时隐藏*/
-webkit-backface-visibility : hidden ;
-moz-backface-visibility : hidden ;
-ms-backface-visibility : hidden ;
-o-backface-visibility : hidden ;
transition : all 1 s ease ; /*为翻牌添加过渡效果*/
-webkit-transition : all 1 s ease ;
-moz-transition : all 1 s ease ;
-ms-transition : all 1 s ease ;
-o-transition : all 1 s ease ;
transform-style : preserve-3d ; /*子元素将保留其 3D 位置。*/
}
.side{
width :100%;
height :100%;
position : absolute ;/*让背面和正面重叠*/
left :50%;
margin-left :-105 px ;
}
.front{
z-index :2;/*让正面朝上*/
}
.back{
transform : rotateY (180 deg );
-webkit-transform : rotateY (180 deg );
-moz-transform : rotateY (180 deg );
-ms-transform : rotateY (180 deg );
-o-transform : rotateY (180 deg );
}
.flip_wrap:hover .flip{
transform : rotateY (180 deg );(180);
-webkit-transform : rotateY (180 deg );
-moz-transform : rotateY (180 deg );
-ms-transform : rotateY (180 deg );
-o-transform : rotateY (180 deg );
}


案例展示


完整代码

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

微信号:migufe

Web前端Talk,你身边的前端助手,值得期待

发布于 2019-05-06 14:09

文章被以下专栏收录