图片/图形

仿宝丽莱Polaroid图片相册画廊

阿里云


这是一款使用纯 js 和 CSS3 制作的仿宝丽莱 Polaroid 图片相册画廊。开始时所有的图片被制作为 Polaroid 图片,堆叠放在一起。当用户使用鼠标 hover 图片时,图片会展开。点击图片时,最上面的图片会切换到最下面去。

HTML 结构

该宝丽莱 Polaroid 图片相册画廊的基本 HTML 结构如下:

也想出现在这里?联系我们
创客主机
  1. <div class='images'>
  2.   <img class='image' src='img/1.jpg'>
  3.   <img class='image' src='img/2.jpg'>
  4.   <img class='image' src='img/3.jpg'>
  5.   <img class='image' src='img/4.jpg'>
  6.   <img class='image' src='img/5.jpg'>
  7. </div>

CSS 样式

宝丽莱 Polaroid 图片相册画廊的基本 CSS 样式如下:

  1. .image {
  2.   position: absolute;
  3.   top: 50%;
  4.   left: 50%;
  5.   height: 200px;
  6.   width: 200px;
  7.   margin-top: -110px;
  8.   margin-left: -105px;
  9.   border: 5px solid #fff;
  10.   border-bottom-width: 15px;
  11.   -moz-box-shadow: 0 2px 5px rgba(30, 30, 30, 0.25);
  12.   -webkit-box-shadow: 0 2px 5px rgba(30, 30, 30, 0.25);
  13.   box-shadow: 0 2px 5px rgba(30, 30, 30, 0.25);
  14.   z-index: 2;
  15.   -moz-transition: -moz-transform 0.3s ease-in-out;
  16.   -o-transition: -o-transform 0.3s ease-in-out;
  17.   -webkit-transition: -webkit-transform 0.3s ease-in-out;
  18.   transition: transform 0.3s ease-in-out;
  19. }
  20.  
  21. .image:first-child {
  22.   -moz-transform: rotate(8deg);
  23.   -ms-transform: rotate(8deg);
  24.   -webkit-transform: rotate(8deg);
  25.   transform: rotate(8deg);
  26. }
  27.  
  28. .image:nth-child(2) {
  29.   -moz-transform: rotate(2deg);
  30.   -ms-transform: rotate(2deg);
  31.   -webkit-transform: rotate(2deg);
  32.   transform: rotate(2deg);
  33. }
  34.  
  35. .image:nth-child(3) {
  36.   -moz-transform: rotate(-3deg);
  37.   -ms-transform: rotate(-3deg);
  38.   -webkit-transform: rotate(-3deg);
  39.   transform: rotate(-3deg);
  40. }
  41.  
  42. .image:nth-child(4) {
  43.   -moz-transform: rotate(-10deg);
  44.   -ms-transform: rotate(-10deg);
  45.   -webkit-transform: rotate(-10deg);
  46.   transform: rotate(-10deg);
  47. }
  48.  
  49. .image:last-child {
  50.   -moz-transform: rotate(-5deg);
  51.   -ms-transform: rotate(-5deg);
  52.   -webkit-transform: rotate(-5deg);
  53.   transform: rotate(-5deg);
  54. }                  
  55.  
  56. 当鼠标hover图片时,使用下面的代码来制作图片展开动画效果。
  57. .images:hover .image:nth-child(4) {
  58.   -moz-transform: rotate(10deg) translateX(50px);
  59.   -ms-transform: rotate(10deg) translateX(50px);
  60.   -webkit-transform: rotate(10deg) translateX(50px);
  61.   transform: rotate(10deg) translateX(50px);
  62. }
  63.  
  64. .images:hover .image:nth-child(3) {
  65.   -moz-transform: rotate(3deg) translateX(75px);
  66.   -ms-transform: rotate(3deg) translateX(75px);
  67.   -webkit-transform: rotate(3deg) translateX(75px);
  68.   transform: rotate(3deg) translateX(75px);
  69. }
  70.  
  71. .images:hover .image:nth-child(2) {
  72.   -moz-transform: rotate(-2deg) translateX(-50px);
  73.   -ms-transform: rotate(-2deg) translateX(-50px);
  74.   -webkit-transform: rotate(-2deg) translateX(-50px);
  75.   transform: rotate(-2deg) translateX(-50px);
  76. }
  77.  
  78. .images:hover .image:first-child {
  79.   -moz-transform: rotate(-8deg) translateX(-75px) translateY(-10px);
  80.   -ms-transform: rotate(-8deg) translateX(-75px) translateY(-10px);
  81.   -webkit-transform: rotate(-8deg) translateX(-75px) translateY(-10px);
  82.   transform: rotate(-8deg) translateX(-75px) translateY(-10px);
  83. }
  84.  
  85. .image.slide-right {
  86.   -moz-transform: rotate(290deg) translateX(250px);
  87.   -ms-transform: rotate(290deg) translateX(250px);
  88.   -webkit-transform: rotate(290deg) translateX(250px);
  89.   transform: rotate(290deg) translateX(250px);
  90. }
  91.  
  92. .image.slide-left {
  93.   -moz-transform: rotate(-290deg) translateX(-250px);
  94.   -ms-transform: rotate(-290deg) translateX(-250px);
  95.   -webkit-transform: rotate(-290deg) translateX(-250px);
  96.   transform: rotate(-290deg) translateX(-250px);
  97. }
  98.  
  99. .image.back { z-index: 1; }

JavaScript

最后通过下面的 javascript 代码来完成鼠标点击的交互动画效果。

  1. (function() {
  2.   var cssTransition, imageOffset, imageWidth, images, queue, timeout, touch;
  3.  
  4.   cssTransition = function() {
  5.     var body, i, len, style, vendor, vendors;
  6.     body = document.body || document.documentElement;
  7.     style = body.style;
  8.     vendors = ['Moz', 'Webkit', 'O'];
  9.     if (typeof style['transition'] === 'string') {
  10.       return true;
  11.     }
  12.     for (i = 0, len = vendors.length; i < len; i++) {if (window.CP.shouldStopExecution(1)){break;}
  13.       vendor = vendors[i];
  14.       if (typeof style[vendor + 'Transition'] === 'string') {
  15.         return true;
  16.       }
  17.     }
  18. window.CP.exitedLoop(1);
  19.  
  20.     return false;
  21.   };
  22.  
  23.   queue = false;
  24.  
  25.   touch = document.documentElement['ontouchstart'] !== void 0;
  26.  
  27.   images = document.querySelector('.images');
  28.  
  29.   imageWidth = images.firstElementChild.offsetWidth;
  30.  
  31.   imageOffset = images.firstElementChild.offsetLeft;
  32.  
  33.   timeout = cssTransition() ? [300, 400] : [0, 0];
  34.  
  35.   images.addEventListener((touch ? 'touchend' : 'click'), function(event) {
  36.     var direction, lastClassList;
  37.     if (queue) {
  38.       return;
  39.     }
  40.     queue = true;
  41.     if (((touch ? event.changedTouches[0].pageX : event.pageX) - imageOffset) > imageWidth / 2) {
  42.       direction = 'slide-right';
  43.     } else {
  44.       direction = 'slide-left';
  45.     }
  46.     lastClassList = images.lastElementChild.classList;
  47.     lastClassList.add(direction);
  48.     return setTimeout(function() {
  49.       lastClassList.remove(direction);
  50.       lastClassList.add('back');
  51.       return setTimeout(function() {
  52.         images.insertBefore(images.lastElementChild, images.firstElementChild);
  53.         lastClassList.remove('back');
  54.         return queue = false;
  55.       }, timeout[0]);
  56.     }, timeout[1]);
  57.   }, false);
  58.  
  59. }).call(this);

仿宝丽莱 Polaroid 图片相册画廊

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

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

发表回复

热销模板

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

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