这是一款基于jQuery和CSS3的图片层叠展开特效,让鼠标滑过图片时即可触发这些特效。其中有一款就像扇子展开收拢一样,看起来效果都非常不错。当然本文主要还是来分析一下用jQuery实现这一效果的方法,具体效果可以在在线演示中查看。

你也可以在这里查看在线DEMO演示

说说实现的方法和代码吧,主要由HTML、CSS以及jQuery代码组成。

HTML代码:

  1. <div id="page_wrap">
  2. <!--Stack 1 -->
  3. <div class="image_stack" style="margin-left:600px">
  4. <img id="photo1" class="stackphotos" src="data:images/lanrenzhijia2.jpg" >
  5. <img id="photo2" class="stackphotos" src="data:images/lanrenzhijia3.jpg" >
  6. <img id="photo3" class="stackphotos" src="data:images/lanrenzhijia1.jpg" >
  7. </div>
  8. <!--Stack 2 -->
  9. <div class="image_stack" style="margin-left:300px">
  10. <img id="photo1" class="stackphotos" src="data:images/lanrenzhijia4.jpg" >
  11. <img id="photo2" class="stackphotos" src="data:images/lanrenzhijia5.jpg" >
  12. <img id="photo3" class="stackphotos" src="data:images/lanrenzhijia6.jpg" >
  13. </div>
  14.  
  15. <div class="single_photo">
  16. <ul id="pics">
  17. <li><a href="#pic1" title="Photo"><img src="data:images/lanrenzhijia3.jpg" alt="picture"></a></li>
  18. </ul>
  19. </div>
  20. </div>

把要用到的小图片列出来,HTML结构非常简单。

接下来是CSS,相对复杂一点,因为有用到CSS3相关的一些特性。

CSS代码:

  1. .image_stack img { /* css style for photo stack */
  2. border: none;
  3. text-decoration: none;
  4. position: absolute;
  5. margin-left:0px;
  6. width: 158px;
  7. height: 158px;
  8. }
  9. .image_stack { /* css style for photo stack */
  10. width: 400px;
  11. position: absolute;
  12. margin:60px 10px 10px;
  13. }
  14. .image_stack img { /* css style for photo stack */
  15. position: absolute;
  16. border: 4px solid #FFF;
  17. box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.5);
  18. -moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.5);
  19. -webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.5);
  20. z-index:;
  21. /* Firefox */
  22. -moz-transition: all 0.2s ease;
  23. /* WebKit */
  24. -webkit-transition: all 0.2s ease;
  25. /* Opera */
  26. -o-transition: all 0.2s ease;
  27. /* Standard */
  28. transition: all 0.2s ease;
  29. }
  30. .image_stack #photo1 { /* position of last photo in the stack */
  31. top: 8px;
  32. left: 108px;
  33. }
  34. .image_stack #photo2 {/* position of middle photo in the stack */
  35. top: 6px;
  36. left: 104px;
  37. }
  38. .image_stack #photo3 {/* position of first photo at the top in the stack */
  39. top: 4px;
  40. left: 100px;
  41. right: 100px;
  42. }
  43. .image_stack .rotate1 {/* rotate last image 15 degrees to the right */
  44. -webkit-transform: rotate(15deg); /* safari and chrome */
  45. -moz-transform: rotate(15deg);/*firefox browsers */
  46. transform: rotate(15deg);/*other */
  47. -ms-transform:rotate(15deg); /* Internet Explorer 9 */
  48. -o-transform:rotate(15deg); /* Opera */
  49. }
  50. .image_stack .rotate2 {/* css not used*/
  51. -webkit-transform: rotate(0deg); /* safari and chrome */
  52. -moz-transform: rotate(0deg);/*firefox browsers */
  53. transform: rotate(0deg);/*other */
  54. -ms-transform:rotate(0deg); /* Internet Explorer 9 */
  55. -o-transform:rotate(0deg); /* Opera */
  56. }
  57. .image_stack .rotate3 {/*rotate first image 15 degrees to the left*/
  58. -webkit-transform: rotate(-15deg); /* safari and chrome */
  59. -moz-transform: rotate(-15deg); /*firefox browsers */
  60. transform: rotate(-15deg);/*other */
  61. -ms-transform:rotate(-15deg); /* Internet Explorer 9 */
  62. -o-transform:rotate(-15deg); /* Opera */
  63. cursor: pointer;
  64. }

看出来了吧,主要是rotate实现图片翻转折叠的效果,另外指定了0.2s的ease动画。

jQuery代码:

  1. $(document).ready(function() {
  2. $(".image_stack").delegate('img', 'mouseenter', function() {//when user hover mouse on image with div id=stackphotos
  3. if ($(this).hasClass('stackphotos')) {//
  4. // the class stackphotos is not really defined in css , it is only assigned to each images in the photo stack to trigger the mouseover effect on these photos only
  5.  
  6. var $parent = $(this).parent();
  7. $parent.find('img#photo1').addClass('rotate1');//add class rotate1,rotate2,rotate3 to each image so that it rotates to the correct degree in the correct direction ( 15 degrees one to the left , one to the right ! )
  8. $parent.find('img#photo2').addClass('rotate2');
  9. $parent.find('img#photo3').addClass('rotate3');
  10. $parent.find('img#photo1').css("left","150px"); // reposition the first and last image
  11. $parent.find('img#photo3').css("left","50px");
  12.  
  13. }
  14. })
  15. .delegate('img', 'mouseleave', function() {// when user removes cursor from the image stack
  16. $('img#photo1').removeClass('rotate1');// remove the css class that was previously added to make it to its original position
  17. $('img#photo2').removeClass('rotate2');
  18. $('img#photo3').removeClass('rotate3');
  19. $('img#photo1').css("left","");// remove the css property 'left' value from the dom
  20. $('img#photo3').css("left","");
  21.  
  22. });;
  23. });

其实jQuery也没什么事情,主要是动态为图片增加和删除类,用addClass和removeClass实现,这样鼠标滑过图片就可以翻转,鼠标离开图片又能够恢复,很不错吧。你也可以下载源代码研究。源码下载>>

jQuery/CSS3实现图片层叠展开特效的更多相关文章

  1. jQuery+CSS3实现404背景动画特效

    效果:http://hovertree.com/texiao/jquery/74/ 源码下载:http://hovertree.com/h/bjaf/ko0gcgw5.htm 效果图如下: 代码如下: ...

  2. 黄聪:手机移动端建站Jquery+CSS3+HTML5触屏滑动特效插件、实现触屏焦点图、图片轮展图

    前言 TouchSlide 可以说是 SuperSlide 手机简化版,不同的地方在于:1.TouchSlide是纯javascript开发的,不依赖任何js库,鉴于此,TouchSlide调用方法和 ...

  3. js实现左右点击图片层叠滚动特效

    需要加载js有 <script type="text/javascript" src="js/jquery-1.7.2.min.js"></s ...

  4. 20+功能强大的jQuery/CSS3图片特效插件

    以下是分享的20几个不错的图片特效插件,基于jQuery和CSS3. 1.jQuery图片下滑切换播放效果 这是一款基于jQuery的焦点图插件,这款焦点图的特点是有向下滑动的动画效果,滑到底部时,有 ...

  5. jQuery css3鼠标悬停图片显示遮罩层动画特效

    jQuery css3鼠标悬停图片显示遮罩层动画特效 效果体验:http://hovertree.com/texiao/jquery/39/ 效果图: 源码下载:http://hovertree.co ...

  6. 40免费的 jQuery & CSS3 图片热点特效

    jQuery CSS3 形象悬停效果可能是一个优秀的网站项目中添加的效果.这个特殊的收集是大约50个 jQuery CSS3 形象徘徊影响最近出版的.这些图像悬停效果可以作为一个有效的和创造性的方式添 ...

  7. Image Wall - jQuery & CSS3 图片墙效果

    今天我们要为您展示如何基于 jQuery 和 CSS3 创建一个整洁的图片墙效果.我们的想法是在页面上洒上一些大小不同的缩略图,并在当我们点击图片时候显示丝带,会显示一些描述,再次点击缩略图时,丝带将 ...

  8. 15款效果很酷的最新jQuery/CSS3特效

    很久没来博客园发表文章了,今天就分享15款效果很酷的最新jQuery/CSS3特效,废话不说,一起来看看吧. 1.3D图片上下翻牌切换 一款基于jQuery+CSS3实现的3D图片上下翻牌切换效果,支 ...

  9. 基于HTML5+CSS3的图片旋转、无限滚动、文字跳动特效

    本文分享几种基于HTML5+CSS3实现的一些动画特效:图片旋转.无限滚动.文字跳动;实现起来均比较容易,动手来试试! 一.图片旋转 效果图如下: 这个效果实现起来其实并不困难.代码清单如下: < ...

随机推荐

  1. 各个函数消耗的时间profiling和内存泄漏valgrind

    来源:http://06110120wxc.blog.163.com/blog/static/37788161201333112445844/ ARM(hisi)上面的profiling和valgri ...

  2. 【转】app瘦身

    iPhone经过这几年的发展,已经发生了很大的变化,例如屏幕变得更加多样,尺寸更多,内存变得更大,CPU的架构也在变化.伴随着iPhone的变化,iOS也在变化,例如AutoLayout.size c ...

  3. php 读xml的两种方式

    <?xml version="1.0" encoding="ISO-8859-1"?> <st> <stu> <nam ...

  4. hibernate注解原理

    持续更新中.. hibernate注解用的是java注解,用到的是java反射机制.

  5. HTML5新增的属性和废除的属性

    HTML5中,在新增加和废除很多元素的同时,也增加和废除了很多属性. 新增的属性 1.表单相关的属性 对input(type=text).select.textarea与button指定autofoc ...

  6. BestCoder Round 59 (HDOJ 5500) Reorder the Books

    Problem Description dxy has a collection of a series of books called “The Stories of SDOI”,There are ...

  7. js 定义函数的几种方法 以及如何调用

    /*1.方法调用模式: 先定义一个对象,然后在对象的属性中定义方法,通过myobject.property来执行方法,this即指当前的myobject 对象.*/ var car = { carId ...

  8. j2ee开发中的“java容器”和“web容器”有什么区别?

    http://blog.csdn.net/zi_jun/article/details/7387259

  9. Ubuntu11.10与r8168网卡不兼容导致网络时断时续的问题

    安装了ubuntu11.10之后,感觉上网啥的很不稳定,ssh连接内网机器也是一条命令卡半天,检查了各方面的原因,网络没有什么问题,最后才发现是网卡驱动的问题,网上搜了一下是由于linux(ubunt ...

  10. C++拾遗(十)类与动态内存分配(2)

    静态成员函数 声明时包含关键字static.注意以下两点: 1.使用静态成员函数时不能通过对象或者this指针来调用,只能使用类名+作用域解析符来调用. 2.静态成员函数只能使用静态成员. new操作 ...