Lightbox/弹窗

超酷jQuery+css3图片预览插件

阿里云

这是一款使用 css3 和 Velocity.js 制作的 jquery 图片预览插件。电子商务网站设计的宗旨是通过简化的设计提高用户体验,提高转化率也有一定的模式。另外一种模式是在需要的地方提供更多的信息来达到同样的目的。这款 jquery 图片预览插件使用的就是第二种模式。这个插件的操作十分简单:点击 quick view 按钮触发模态窗口来显示大图和图片的信息。一个插件程序的设计理念是为用户提供最好的体验,有很多工具可以帮助我们制作平滑的动画效果,例如:Joel Besada 的 Bounce.js 和 Julian Shapiro 的 Velocity.js。回到我们的教程,下面是一张显示该插件功能的 gif 图片:

HTML 结构:

html 结构中图片画廊使用一个无序列表制作。.cd-quick-view [div]是插件的重点部分,它包含一个 slider .cd-slider-wrapper 和图片信息 .cd-item-info。

也想出现在这里?联系我们
创客主机
  1. <ul class="cd-items cd-container">
  2.   <li class="cd-item">
  3.     <img src="img/item-1.jpg" alt="Item Preview">
  4.     <a href="#0" class="cd-trigger">Quick View</a>
  5.   </li> <!-- cd-item -->
  6.   <li><!-- ... --></li>
  7. </ul> <!-- cd-items -->
  8. <div class="cd-quick-view">
  9.   <div class="cd-slider-wrapper">
  10.     <ul class="cd-slider">
  11.       <li class="selected"><img src="img/item-1.jpg" alt="Product 1"></li>
  12.       <li><img src="img/item-2.jpg" alt="Product 2"></li>
  13.       <li><img src="img/item-3.jpg" alt="Product 3"></li>
  14.     </ul> <!-- cd-slider -->
  15.  
  16.     <ul class="cd-slider-navigation">
  17.       <li><a class="cd-next" href="#0">Prev</a></li>
  18.       <li><a class="cd-prev" href="#0">Next</a></li>
  19.     </ul> <!-- cd-slider-navigation -->
  20.   </div> <!-- cd-slider-wrapper -->
  21.  
  22.   <div class="cd-item-info">
  23.     <h2>Produt Title</h2>
  24.     <p>Lorem ipsum dolor sit amet, consectetur adipisicing...</p>
  25.  
  26.     <ul class="cd-item-action">
  27.       <li><button class="add-to-cart">Add to cart</button></li>         
  28.       <li><a href="#0">Learn more</a></li>  
  29.     </ul> <!-- cd-item-action -->
  30.   </div> <!-- cd-item-info -->
  31.   <a href="#0" class="cd-close">Close</a>
  32. </div> <!-- cd-quick-view -->

CSS 样式:

首先需要注意的是,该插件的效果在移动设备和手机上隐藏的。原因是使用手机很容易就可以进入到产品页面。大部分的动画效果都使用 jQuery 和 Velocity.js 来完成。半透明的遮罩层使用 body::after 伪元素来制作。

  1. body::after {
  2.   /* dark overlay layer - visible when we fire .cd-quick-view */
  3.   position: fixed;
  4.   top: 0;
  5.   left: 0;
  6.   width: 100%;
  7.   height: 100%;
  8.   background: rgba(71, 55, 78, 0.8);
  9.   visibility: hidden;
  10.   opacity: 0;
  11.   transition: opacity .3s 0s, visibility 0s .3s;
  12. }
  13. @media only screen and (min-width: 1024px) {
  14.   body.overlay-layer::after {
  15.     visibility: visible;
  16.     opacity: 1;
  17.     transition: opacity .3s 0s, visibility 0s 0s;
  18.   }
  19. }

插件中很多元素的动画都带有 CSS3 transition。为了是插件性能更好,我们使用了 translateZ(0) hack 技术。

  1. .cd-quick-view {
  2.     display: block;
  3.     position: fixed;
  4.     max-width: 900px;
  5.     visibility: hidden;
  6.  
  7.     /* Force Hardware Acceleration in WebKit */
  8.     transform: translateZ(0);
  9.     -webkit-backface-visibility: hidden;
  10.     backface-visibility: hidden;
  11.  
  12.     will-change: left, top, width;
  13.     z-index: 1;
  14. }

JAVASCRIPT 代码:

当用户点击了.cd-trigger 元素,我们获取被选择图片的 top、left 和宽度值,并将它放入到.cd-quick-view 元素中(该元素是 position: fixed 的)。通过这个方法使.cd-quick-view 拥有和图片相同的大小。当我们移动 .cd-quick-view 元素,第一步我们移动 .cd-quick-view 的宽度到最终宽度(在插件中是 400px)。我们也移动 .cd-quick-view 的位置,使它相对于屏幕居中。在这一步中,只有图片是可见的,图片说明仍被隐藏。第二步我们 改变 .cd-quick-view 到它的最终值(屏幕宽度的 80%,最大宽度 900px),并改变它的位置使其居中。我们使用 Velocity.js 来制作动画效果。这个插件重新实现了 jQuery 的$.animate() 方法,使其性能更加优秀。在插件中,第一步动画使用了 spring easing 效果,第二步中使用量为 ease easing 效果。

  1. $('.cd-trigger').on('click', function(event){
  2.  
  3.   $('.cd-quick-view').css({
  4.       "top": topSelected, // this is the selected image top value
  5.       "left": leftSelected, // this is the selected image left value
  6.       "width": widthSelected, // this is the selected image width
  7.   }).velocity({
  8.     //animate the quick view: animate its width and center it in the viewport
  9.     //during this animation, only the slider image is visible
  10.       'width': sliderFinalWidth+'px',
  11.       'left': finalLeft+'px', // ($(window).width - sliderFinalWidth)/2,
  12.       'top': finalTop+ 'px', // ($(window).height - slider final height)/2,
  13.   }, 1000, [ 400, 20 ])
  14.   .velocity({
  15.     'width': quickViewWidth+'px', // 80% of the viewport
  16.     'left': quickViewLeft+'px', // 10% of the viewport
  17.   }, 300, 'ease' ,function(){
  18.     //show quick view content
  19.     $('.cd-quick-view').addClass('add-content');
  20.   }).addClass('is-visible');
  21.  
  22.   //assign .overlay-layer class to the body, assign the .empty-box class to the selected .cd-item
  23.   //...
  24.  
  25. });

当用户关闭图片预览窗口,动画效果也是非常酷的。

注意:在关闭图片预览窗口之前,我们改变了图片的 src 的值。

超酷 jQuery+css3 图片预览插件

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

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

发表回复

热销模板

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

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