图片翻转

本人录制技术视频地址:https://edu.csdn.net/lecturer/1899 欢迎观看。

这一节继续为大家介绍CSS3的动画效果: 图片翻转。 在iOS中的章节中,我也介绍过类似的效果,如果感兴趣的话,请点击这里查看:动画特效一:图片翻转 。

先看看最终的效果图:

一、所用素材:

       

两张图片的大小均为258 * 258。


二、思路分析:

从最终的效果图可以看出, "Baby" 默认是显示在前面的, 而 "小明" 是显示在后面的。并且旋转过来之后, "小明" 也应该是正面显示在前面,如素材所列出的。那么,默认情况下, "小明" 应该显示在后面,所以它需要绕着y轴旋转180°。立体图如下:

三、代码分析:

1. HTML代码:

<body><div id="box"><div class="xiaoming"></div><div class="angelababy"></div></div>
</body>

2. CSS代码:

<style type="text/css">#box{width:258px;height:258px;position: relative;}#box .xiaoming{width:258px;height:258px;position: absolute;top:0;left:0;border-radius:129px;-webkit-transform:rotateY(-180deg);/* FireFox对backface-visibility的支持有点问题*/-webkit-backface-visibility:hidden;background: url(xiaoming.png) no-repeat;transition:all 2s ease 0s;}#box .angelababy{width:258px;height:258px;position: absolute;top:0;left:0;border-radius:129px;-webkit-transform:rotateY(0deg);-webkit-backface-visibility:hidden;background: url(angelababy.png) no-repeat;transition:all 2s ease 0s;}#box:hover .xiaoming{-webkit-transform:rotateY(0deg);}#box:hover .angelababy{-webkit-transform:rotateY(-180deg);}</style>

1)#box 是父容器,用来存放 "Baby" 和 "小明" 的图片信息, 并且它的大小是 258 * 258, 就是所用素材图片的大小。因为它是父容器,所以设置position: relative.

2)由于"Baby" 和 "小明" 都是圆形显示,所以设置他们的 border-radius 为 129px; 即为图片宽度的一半。

3)由于 "小明" 默认是在后面的,而 "Baby" 是正面显示的,所以设置-webkit-transform属性值分别为 rotateY(-180deg) 和 rotateY(0)。

4)-webkit-backface-visibility 这个属性,如果不设置的话,图片就算翻转180°之后,还是可以看到翻转之后的图片的;这样的话,在翻转过程中,两张图片就会同时看到了,这样就达不到想要的效果了,大家可以将代码中的这个属性注释掉,可以看看效果。

5)transition这个属性是CSS3的一个特有属性,可以方便的用来执行动画过度效果。

对这个属性的支持,主流浏览器如下:

这个属性各个值的含义如下:

transition-property 规定设置过渡效果的 CSS 属性的名称。
transition-duration 规定完成过渡效果需要多少秒或毫秒。
transition-timing-function 规定速度效果的速度曲线。
transition-delay 定义过渡效果何时开始。

本例中,所用的这个属性的第一个值,是设置为all。所以当元素有任何属性值发生变化的话,都会触发这个属性,执行动画。

6):hover 伪类就会触发鼠标进入或者离开时候的事件,而它触发的是元素的旋转属性,因此就会调用transition属性,进行图片的翻转效果。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注