HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交

今天给大家带来一个CSS3制作的翻牌效果,就是鼠标移到元素上,感觉可以看到元素背后的信息。大家如果制作考验记忆力的连连看、扑克类的游戏神马的,甚至给女朋友写一些话语,放在使用该实例制作的相册之后都可以尝试下,哈~

效果图:

HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交

实例用到的一些CSS3的新属性:

 a、-webkit-perspective: 800px;

   perspective (透视,视角):属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。决定了你所看到的是2D transform 还是3D transform 。

b、-webkit-transform-style: preserve-3d;

 transform-style 属性规定如何在 3D 空间中呈现被嵌套的元素。默认flat(平的),我们3D效果,然后选择3D。

c、-webkit-backface-visibility: hidden; 是否显示该选择元素旋转到背面后的样子。

d、-webkit-transform: rotateY(0);  元素绕Y轴旋转。

上面的属性先给大家一个感性的认识,看完例子再细细品味这些属性,或者baidu,google神马的。


例子:

Html:

[html] view plain copy
  1. <body>  
  2.   
  3.   
  4. <div id="content">  
  5.     <ul>  
  6.         <li>  
  7.             <a href="#" target="_blank">  
  8.                 <div><img alt="" src="images/1.jpg"/></div>  
  9.                 <div>  
  10.                     <h3>漩涡鸣人</h3>  
  11.   
  12.                     <p>日本漫画家岸本齐史作品《火影忍者》中男主角。因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在。</p>  
  13.                 </div>  
  14.             </a>  
  15.         </li>  
  16.         <li>  
  17.             <a href="#" target="_blank">  
  18.                 <div>  
  19.                     <img alt="" src="images/2.jpg"/>  
  20.                 </div>  
  21.                 <div>  
  22.                     <h3>日向雏田</h3>  
  23.   
  24.                     <p>  
  25.                         日本漫画家岸本齐史作品《火影忍者》中的3号女主角。木叶忍者村的女忍者,木叶名门日向一族宗家族长的长女。喜欢漩涡鸣人,原本是个性格柔弱的女孩,但是在鸣人的影响下逐渐变得坚强,并逐渐成长为一名优秀的忍者。</p>  
  26.                 </div>  
  27.             </a>  
  28.         </li>  
  29.         <li>  
  30.             <a href="#" target="_blank">  
  31.                 <div><img alt="" src="images/3.jpg"/></div>  
  32.                 <div>  
  33.                     <h3>蒙奇·D·路飞</h3>  
  34.   
  35.                     <p>蒙奇·D·路飞 是日本人气动漫 《海贼王》中的主人公。是日本人气动漫 《海贼王》中的主人公。草帽海贼团船长,梦想是找到传说中的宝藏 —— ONE PIECE,成为海贼王。</p>  
  36.                 </div>  
  37.             </a>  
  38.         </li>  
  39.         <li>  
  40.             <a href="#" target="_blank">  
  41.                 <div>  
  42.                     <img alt="" src="images/4.jpg"/>  
  43.                 </div>  
  44.                 <div>  
  45.                     <h3>盒子先生</h3>  
  46.   
  47.                     <p>  
  48.                         Danbo是一只用废纸盒DIY出来的可爱玩偶,圆圆的眼睛和三角形的嘴巴,时刻露出无辜的表情,让人看到就心软,Danbo是个纯真善良的小家伙,在它单纯的幻想世界里,总是透露出最纯真可爱的动人气息。</p>  
  49.                 </div>  
  50.             </a>  
  51.         </li>  
  52.     </ul>  
  53. </div>  
  54.   
  55.   
  56. </body>  

还是相当简单的:

ul为一组图片,每个li中有个a(因为我们希望点击图片可以跳转),a中包含两个div,一个是正常显示时的(即显示图片),一个是图片旋转后显示的(即介绍)。


CSS:

[css] view plain copy
  1. <link href="css/reset.css" rel="stylesheet" type="text/css">  
  2.   
  3.    <style type="text/css">  
  4.   
  5.        body  
  6.        {  
  7.            font-size14px;  
  8.            font-family: Microsoft YaHei, Tahoma, Geneva, sans-serif;  
  9.            background#111;  
  10.        }  
  11.   
  12.        #content ul  
  13.        {  
  14.            width960px;  
  15.            margin150px auto;  
  16.            padding60px 0;  
  17.        }  
  18.   
  19.        #content ul li  
  20.        {  
  21.            margin-right20px;  
  22.            width225px;  
  23.            height180px;  
  24.            floatleft;  
  25.        }  
  26.   
  27.        #content ul li:last-child  
  28.        {  
  29.            margin-right0;  
  30.        }  
  31.   
  32.        #content ul li a  
  33.        {  
  34.            positionrelative;  
  35.            displayblock;  
  36.            width100%;  
  37.            height100%;  
  38.            /*舞台(动画元素的父容器)perspective*/  
  39.            -webkit-perspective: 800px;  
  40.            -moz-perspective: 800px;  
  41.   
  42.        }  
  43.   
  44.        #content ul li a > div  
  45.        {  
  46.            positionabsolute;  
  47.            left: 0;  
  48.            height0;  
  49.            width100%;  
  50.            height100%;  
  51.            color#fff;  
  52.            /*动画元素transform-style*/  
  53.            -webkit-transform-style: preserve-3d;  
  54.            -webkit-transition: .8s ease-in-out ;  
  55.            /*动画元素背后设置为hidden*/  
  56.            -webkit-backface-visibilityhidden;  
  57.        }  
  58.   
  59.        #content ul li a div:first-child  
  60.        {  
  61.            /* 
  62.            绕y轴旋转 
  63.            */  
  64.            -webkit-transform: rotateY(0);  
  65.            z-index2;  
  66.        }  
  67.   
  68.        #content ul li a div:last-child  
  69.        {  
  70.            backgroundurl("images/bg.jpg"no-repeat 0 0;  
  71.            -webkit-transform: rotateY(180deg);  
  72.            z-index1;  
  73.        }  
  74.   
  75.        #content ul li a:hover div:first-child  
  76.        {  
  77.            -webkit-transform: rotateY(-180deg);  
  78.        }  
  79.   
  80.        #content ul li a:hover div:last-child  
  81.        {  
  82.            -webkit-transform: rotateY(0);  
  83.        }  
  84.   
  85.        #content ul li a div h3  
  86.        {  
  87.            margin0 auto 15px;  
  88.            padding15px 0;  
  89.            width200px;  
  90.            height16px;  
  91.            line-height16px;  
  92.            font-size14px;  
  93.            text-aligncenter;  
  94.            border-bottom1px #fff dashed;  
  95.        }  
  96.   
  97.        #content ul li a div p  
  98.        {  
  99.            padding0 10px;  
  100.            font-size12px;  
  101.            text-indent2em;  
  102.            line-height18px;  
  103.        }  
  104.   
  105.   
  106.    </style>  

好了,上面的CSS中就可以发现文章前面说的那些CSS属性了。

1、最主要的是理解rotateY ,绕y轴旋转,记得我在HTML5 CSS3 精美案例 : 实现VCD包装盒个性幻灯片中也使用到类似属性 transform: rotate(2520deg);使用的是2D旋转。

rotateY字面上看绕y轴旋转,肯定有人问y轴在哪:

HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交

默认旋转元素的中心点就是旋转中心(可以通过transform-origin修改),x,y轴都在图上,z轴是从中心往外发的箭头(就是屏幕射向你头的箭头)。

我们例子中,默认图片rotateY=0;鼠标指向为rotateY=-180,负数,也就是逆时针绕y轴旋转,正数,则为顺时针;其他两个轴同理;

我们例子的核心就是鼠标指向时:图片(div:first-child),从0度绕y轴逆时针旋转180度到达-180度;介绍(div:last-child)从180度绕y轴逆时针旋转180度到达0度。造成两个一起逆时针旋转的效果。有人可能会问为啥介绍默认不是0度,这里注意下,介绍逆时针旋转180度之后是正面状态,所以当倍图片遮盖时,相当于从正常状态顺时针旋转了180度,因为鼠标指向时需要恢复正常状态。


perspective,有个技巧,对于舞台(动画的父元素)设置。

transform-style对3d变化当然是3d了,没啥好说的。


----------------------------------------------------------------------------------------------------------------------------------------------------------


上传基本是项目中经常出现的,一般采用:

1、form提交 

2、flash

3、html5

form提交会刷新页面,很难做到异步上传;flash可能是用得比较多了,因为可以兼顾到几乎所有的浏览器,我之前一直会用jquery的uploadify作为项目中的上传工具,uploadify也有基于html5好像是收费的,大家可以去官网看看;当然了,现在html5提供了API以及File,FileReader,XMLHttpRequest等强大的API,为我们拖放实现上传提供了可能。

效果图1:

HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交

效果图2:

HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交

由于本地上传实在太快,录了个80M的gif,终于可以看到上传的细节效果了,是不是还是很不错的,建议CSDN的博客编辑器也支持下拖拽上传,省的我去找文件了。

由于代码比较多:

这一片主要讲一下HTML和CSS:

HTML代码:

[html] view plain copy
  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <title></title>  
  5.     <meta charset="utf-8"/>  
  6.     <link href="reset.css" type="text/css" rel="stylesheet"/>  
  7.     <link href="01.css" type="text/css" rel="stylesheet"/>  
  8.   
  9. </head>  
  10. <body>  
  11.   
  12.   
  13. <div id="uploadBox">  
  14.     <ul>  
  15.         <li>  
  16.             <img src="images/pic1.jpg"/>  
  17.             <span class="progress"></span>  
  18.             <span class="percentage"></span>  
  19.         </li>  
  20.   
  21.   
  22.         <li>  
  23.             <img src="images/pic2.jpg"/>  
  24.             <span class="progress"></span>  
  25.             <span class="percentage">12%</span>  
  26.         </li>  
  27.   
  28.   
  29.         <li class="done">  
  30.             <img src="images/pic2.jpg"/>  
  31.             <span class="progress"></span>  
  32.             <span class="percentage"></span>  
  33.         </li>  
  34.   
  35.         <div class="clearfix"></div>  
  36.     </ul>  
  37.   
  38. </div>  
  39.   
  40. </body>  
  41. </html>  

还是很简洁的:

a、一个div#uploadBox,里面ul li 代表每个上传图片单元

b、li img 图片

c、li span.progress用于显示进度,有种水上涨的效果,从height:0% -100%;

d、li span.percentage 用于在图片*显示 1% 到100%数字,当到达100%时,显示一个正确的图片


CSS:

[css] view plain copy
  1. body  
  2. {  
  3.     background#eee;  
  4. }  
  5.   
  6. #uploadBox  
  7. {  
  8.     width622px;  
  9.     height362px;  
  10.     background-color#fff;  
  11.     border1px solid #777;  
  12.     margin120px auto;  
  13. }  
  14.   
  15. #uploadBox ul li  
  16. {  
  17.     floatleft;  
  18.     positionrelative;  
  19.     margin-left5px;  
  20.     margin-top5px;  
  21. }  
  22.   
  23. #uploadBox  li img  
  24. {  
  25.     border1px solid #D1D1D1;  
  26.     width198px;  
  27.     height112px;  
  28.     vertical-alignmiddle;  
  29. }  
  30.   
  31. #uploadBox  li  .percentage  
  32. {  
  33.     width69px;  
  34.     height69px;  
  35.     positionabsolute;  
  36.     left: 50%;  
  37.     top: 50%;  
  38.     margin-left-34.5px;  
  39.     margin-top-34.5px;  
  40.     text-aligncenter;  
  41.     font-size18px;  
  42.     line-height69px;  
  43.     color#fff;  
  44.     border-radius: 34.5px;  
  45.     background: rgba(000, .8);  
  46. }  
  47.   
  48. #uploadBox  li.done .percentage  
  49. {  
  50.     backgroundurl("images/done.png"no-repeat 0 0;  
  51.     text-indent-1000em;  
  52. }  
  53.   
  54. #uploadBox li .progress  
  55. {  
  56.     positionabsolute;  
  57.     height22.4px;  
  58.     bottom: 0px;  
  59.     width200px;  
  60.     background#000;  
  61.     opacity: .5;  
  62. }  
  63.   
  64. .clearfix  
  65. {  
  66.     clearboth;  
  67. }  

都是比较简单的,基本就是定位的简单使用~大家自己看下~

最后效果图:

HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果 以及图片提交