布局框架

仿 Google Now 卡片翻转动画特效

阿里云


这是一款仿 Google Now 卡片翻转的动画特效。该特效使用 CSS3 和 jQuery 来制作,所有卡片使用网格布局,当用户点击某张卡片时,该卡片会翻转移动到屏幕中间,此时任意点击空白位置,卡片又会翻转移动会原来的位置。由于 IE 浏览器不支持 transform-style: preserve-3d;属性,所以在 IE 浏览器中得不到正确的卡片翻转效果。

HTML 结构

该 Google Now 卡片翻转动画效果中,每一张卡片是一个<li>元素。div.card__flipper 是一个包裹容器,它里面是卡片的正面 div.card__front 和卡片的反面 div.card__back。开始时卡片的背面使用 CSS 来隐藏,然后在包裹容器翻转时将它进行旋转到正面来。

也想出现在这里?联系我们
创客主机
  1. <li class="card">
  2.   <div class="card__flipper">
  3.      <div class="card__front">
  4.        <p class="card__name"><span>Aaron</span><br>Rodgers</p>
  5.       <p class="card__num">12</p>
  6.     </div>
  7.     <div class="card__back">
  8.       <svg height="180" width="180">
  9.         <circle cx="90" cy="90" r="55" stroke="#35a541" stroke-width="35"  />
  10.       </svg>
  11.       <span>112.2</span>
  12.     </div>
  13.   </div>
  14. </li>

CSS 样式

包裹容器 div.card__flipper 包含着卡片的正面和反面。卡片的这两个面都使用绝对定位,背面被旋转了 180 度。为了隐藏卡片的背面,使用了 backface-visibility 属性,将它的值设置为 hidden。因为卡片被旋转了 180 度,所以它会被隐藏起来。

  1. .card {
  2.   float: left;
  3.   position: relative;
  4.   width: calc(100% * .3333 - 30px + .3333 * 30px);
  5.   height: 340px;
  6.   margin: 0 30px 30px 0;
  7.   -webkit-perspective: 1000;
  8.           perspective: 1000;
  9. }
  10. .card__flipper {
  11.   cursor: pointer;
  12.   -webkit-transform-style: preserve-3d;
  13.           transform-style: preserve-3d;
  14.   -webkit-transition: all 0.6s cubic-bezier(0.23, 1, 0.32, 1);
  15.           transition: all 0.6s cubic-bezier(0.23, 1, 0.32, 1);
  16. }
  17. .card__front, .card__back {
  18.   position: absolute;
  19.   -webkit-backface-visibility: hidden;
  20.           backface-visibility: hidden;
  21.   top: 0;
  22.   left: 0;
  23.   width: 100%;
  24.   height: 340px;
  25. }
  26. .card__front {
  27.   -webkit-transform: rotateY(0);
  28.           transform: rotateY(0);
  29.   z-index: 2;
  30.   overflow: hidden;
  31. }

JavaScript

特效中使用 jQuery 来旋转和移动包裹容器 div.card__flipper,它会被旋转 180 度。这样卡片的正面会被隐藏,而反面将显示出来。

  1. var Flipper = function () {
  2.     var card = $('.card');
  3.     var flipper = card.find('.card__flipper');
  4.     var win = $(window);
  5.     var flip = function () {
  6.         var thisCard = $(this);
  7.         var thisFlipper = thisCard.find('.card__flipper');
  8.         var offset = thisCard.offset();
  9.         var xc = win.width() / 2;
  10.         var yc = win.height() / 2;
  11.         var docScroll = $(document).scrollTop();
  12.         var cardW = thisCard.outerWidth() / 2;
  13.         var cardH = thisCard.height() / 2;
  14.         var transX = xc - offset.left - cardW;
  15.         var transY = docScroll + yc - offset.top - cardH;
  16.         if (win.width() <= 700)
  17.             transY = 0;
  18.         if (card.hasClass('active'))
  19.             unflip();
  20.         thisCard.css({ 'z-index': '3' }).addClass('active');
  21.         thisFlipper.css({
  22.             'transform': 'translate3d(' + transX + 'px,' + transY + 'px, 0) rotateY(180deg) scale(1)',
  23.             '-webkit-transform': 'translate3d(' + transX + 'px,' + transY + 'px, 0) rotateY(180deg) scale(1)',
  24.             '-ms-transform': 'translate3d(' + transX + 'px,' + transY + 'px, 0) rotateY(180deg) scale(1)'
  25.         }).addClass('active');
  26.         return false;
  27.     };
  28.     var unflip = function (e) {
  29.         card.css({ 'z-index': '1' }).removeClass('active');
  30.         flipper.css({
  31.             'transform': 'none',
  32.             '-webkit-transform': 'none',
  33.             '-ms-transform': 'none'
  34.         }).removeClass('active');
  35.     };
  36.     var bindActions = function () {
  37.         card.on('click', flip);
  38.         win.on('click', unflip);
  39.     };
  40.     var init = function () {
  41.         bindActions();
  42.     };
  43.     return { init: init };
  44. }();
  45. Flipper.init();

仿 Google Now 卡片翻转动画特效

已有 389 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!