经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » jQuery » 查看文章
jquery实现百叶窗效果(利用li的定位)
来源:jb51  时间:2021/10/19 17:14:53  对本文有异议

本文实例为大家分享了jquery实现百叶窗效果的具体代码,供大家参考,具体内容如下

大概思路:

一个div(宽度为800px),里面包含ul和li,li的宽高分别设置为560px,300px(li里的图片也是这个宽高)。li设置绝对定位,div设置相对定位。
.no0{ left:0; }
.no1{ left:160px; }
.no2{ left:320px; }
.no3{ left:480px; }
.no4{ left: 640px; }
不动画的时候,每个li宽高为160px。(800/5=160 div的宽度/图片个数)
动画的时候,被鼠标进入的li宽高为560px,300px,把图片完全显示出来。其他未被鼠标进入的图片,宽度为(800-560)/4=160px
当鼠标出去box框的话,各个图片回复最初的位置。

代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <style>
  8. *{
  9. margin:0;
  10. padding:0;
  11. overflow: hidden;
  12. }
  13. .box{
  14. width:800px;
  15. height:300px;
  16. border:5px solid gray;
  17. margin:100px auto;
  18. position: relative;
  19. }
  20. li{
  21. list-style: none;
  22. float: left;
  23. position:absolute;
  24. /*width:160px;*/
  25. height:300px;
  26. width:560px;
  27. }
  28. .no0{ left:0; }
  29. .no1{ left:160px; }
  30. .no2{ left:320px; }
  31. .no3{ left:480px; }
  32. .no4{ left: 640px; }
  33.  
  34. img{
  35. width:560px;
  36. height:300px;
  37. }
  38.  
  39. </style>
  40. <body>
  41. <div class="box">
  42. <ul>
  43. <li class="no0"> <img src="img/0.jpg" alt=""> </li>
  44. <li class="no1"> <img src="img/1.jpg" alt=""> </li>
  45. <li class="no2"> <img src="img/2.jpg" alt=""> </li>
  46. <li class="no3"> <img src="img/3.jpg" alt=""> </li>
  47. <li class="no4"> <img src="img/4.jpg" alt=""> </li>
  48. </ul>
  49. </div>
  50.  
  51.  
  52. <script src="js/jquery-1.12.3.min.js"> </script>
  53. <script>
  54. // 最初的位置 0 160 320 480 640
  55. // 最左边的位置 0 60 120 180 240
  56. //最右边位置:0 560 620 680 740
  57. $lis = $("li");
  58. //当鼠标进入图1的时候,图1到图4往右边动画
  59. $lis.eq(0).mouseenter(function(){
  60. $lis.stop(true);
  61. $lis.eq(1).animate({left:560},1000);
  62. $lis.eq(2).animate({left:620},1000);
  63. $lis.eq(3).animate({left:680},1000);
  64. $lis.eq(4).animate({left:740},1000);
  65. });
  66. //当鼠标进入图2的时候,图2往左边动画,图3到图4往右边动画
  67. $lis.eq(1).mouseenter(function(){
  68. $lis.stop(true);
  69. $lis.eq(1).animate({left:60},1000);
  70. $lis.eq(2).animate({left:620},1000);
  71. $lis.eq(3).animate({left:680},1000);
  72. $lis.eq(4).animate({left:740},1000);
  73.  
  74. });
  75.  
  76. $lis.eq(2).mouseenter(function(){
  77. $lis.stop(true);
  78. $lis.eq(1).animate({left:60},1000);
  79. $lis.eq(2).animate({left:120},1000);
  80. $lis.eq(3).animate({left:680},1000);
  81. $lis.eq(4).animate({left:740},1000);
  82.  
  83. });
  84.  
  85. $lis.eq(3).mouseenter(function(){
  86. $lis.stop(true);
  87. $lis.eq(1).animate({left:60},1000);
  88. $lis.eq(2).animate({left:120},1000);
  89. $lis.eq(3).animate({left:180},1000);
  90. $lis.eq(4).animate({left:740},1000);
  91.  
  92. });
  93.  
  94. $lis.eq(4).mouseenter(function(){
  95. $lis.stop(true);
  96. $lis.eq(1).animate({left:60},1000);
  97. $lis.eq(2).animate({left:120},1000);
  98. $lis.eq(3).animate({left:180},1000);
  99. $lis.eq(4).animate({left:240},1000);
  100.  
  101. });
  102.  
  103.  
  104. //鼠标离开box的时候,各个图片返回原来的位置
  105. $(".box").mouseleave(function(){
  106. $lis.stop(true);
  107. $lis.eq(1).animate({left:160},1000);
  108. $lis.eq(2).animate({left:320},1000);
  109. $lis.eq(3).animate({left:480},1000);
  110. $lis.eq(4).animate({left:640},1000);
  111. })
  112.  
  113. </script>
  114. </body>
  115. </html>

运行结果:

代码简化:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <style>
  8. *{
  9. margin:0;
  10. padding:0;
  11. overflow: hidden;
  12. }
  13. .box{
  14. width:800px;
  15. height:300px;
  16. border:5px solid gray;
  17. margin:100px auto;
  18. position: relative;
  19. }
  20. li{
  21. list-style: none;
  22. float: left;
  23. position:absolute;
  24. width:560px;
  25. height:300px;
  26. }
  27. .no0{ left:0; }
  28. .no1{ left:160px; }
  29. .no2{ left:320px; }
  30. .no3{ left:480px; }
  31. .no4{ left: 640px; }
  32.  
  33. img{
  34. width:560px;
  35. height:300px;
  36. }
  37.  
  38. </style>
  39. <body>
  40. <div class="box">
  41. <ul>
  42. <li class="no0"> <img src="img/0.jpg" alt=""> </li>
  43. <li class="no1"> <img src="img/1.jpg" alt=""> </li>
  44. <li class="no2"> <img src="img/2.jpg" alt=""> </li>
  45. <li class="no3"> <img src="img/3.jpg" alt=""> </li>
  46. <li class="no4"> <img src="img/4.jpg" alt=""> </li>
  47. </ul>
  48. </div>
  49.  
  50. <script src="js/jquery-1.12.3.min.js"></script>
  51. <script>
  52. // 最初的位置 0 160 320 480 640
  53. // 最左边的位置 0 60 120 180 240
  54. //最右边位置:0 560 620 680 740
  55.  
  56.  
  57. $lis = $("li");
  58. $lis.mouseenter(function(){
  59. $lis.stop(true);
  60. console.log( $(this).index());
  61. var index = $(this).index();
  62. // 当图片在被鼠标进入图片的左侧的时候,往左边动画。在右边是,往右边动画
  63. $lis.each(function(i){
  64. if(i <= index){
  65. $(this).animate({left:60*i},1000);
  66. }else{
  67. $(this).animate({left:560+60*(i-1)},1000);
  68. }
  69. })
  70. })
  71.  
  72. //鼠标离开box的时候,各个图片返回原来的位置
  73. $(".box").mouseleave(function(){
  74. $lis.stop(true);
  75. $lis.each( function(i){
  76. $(this).animate({left:160*i},1000);
  77. });
  78.  
  79. });
  80.  
  81.  
  82.  
  83. </script>
  84.  
  85. </body>
  86. </html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号