百叶窗照片(偏js版、jq精简版)

╰+哭是因爲堅強的太久メ 2021-07-25 02:53 378阅读 0赞
  1. 问题
  2. 如何计算每个图片分配的位置大小
  3. 当一个图片完全展开时,如何计算其他图片分配的位置大小
  4. 如何设置未点击时的黑幕效果和点击后的去除(即利用定位,使得黑幕divimg重叠,然后设置黑幕div的背景颜色和透明度)
  5. 压缩图片的效果是怎么实现的(利用overflow多余效果不显示);
  6. 如何清除动画累计
  7. jq是使用.eq()来进行类似数组下标操作的
  8. 添加方法
  9. $('选择器').find('css选择器(类选择器要加.)'); 获得选择对象的子元素
  10. 要想添加回归延迟效果
  11. 使用mouseover事件

偏js思想版

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style>
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. .box{
  12. width:800px;
  13. height: 300px;
  14. border: solid 1px orange;
  15. position: relative;
  16. margin: 100px auto;
  17. overflow: hidden;
  18. }
  19. ul{
  20. list-style-type: none;
  21. }
  22. ul li{
  23. position: absolute;
  24. }
  25. .cover{
  26. width: 100%;
  27. height: 300px;
  28. background-color: rgba(0,0,0,0.5);
  29. position: absolute;
  30. }
  31. .li1{
  32. left: 160px;
  33. }
  34. .li2{
  35. left:320px;
  36. }
  37. .li3{
  38. left:480px;
  39. }
  40. .li4{
  41. left:640px;
  42. }
  43. </style>
  44. <script src="js/jquery-3.4.1.js"></script>
  45. </head>
  46. <body>
  47. <div class="box">
  48. <ul>
  49. <li class="li0">
  50. <div class="cover"></div>
  51. <img src="img/0.jpg" alt="" />
  52. </li>
  53. <li class="li1">
  54. <div class="cover"></div>
  55. <img src="img/1.jpg" alt="" />
  56. </li>
  57. <li class="li2">
  58. <div class="cover"></div>
  59. <img src="img/2.jpg" alt="" />
  60. </li>
  61. <li class="li3">
  62. <div class="cover"></div>
  63. <img src="img/3.jpg" alt="" />
  64. </li>
  65. <li class="li4">
  66. <div class="cover"></div>
  67. <img src="img/4.jpg" alt="" />
  68. </li>
  69. </ul>
  70. </div>
  71. <script>
  72. var lis=$(".box li");
  73. //设置黑幕淡出效果
  74. lis.mouseenter(function(){
  75. $(this).find('.cover').stop(true).fadeOut();
  76. });
  77. //设置黑幕淡入效果
  78. lis.mouseleave(function(){
  79. $(this).find('.cover').stop(true).fadeIn();
  80. //当鼠标离开时,动画变为初始位置
  81. for(var i=0;i<lis.length;i++){
  82. lis.eq(i).animate({ 'left':160*i},500);
  83. }
  84. });
  85. $(".li0").mouseenter(function(){
  86. //去除动画累计
  87. lis.stop(true);
  88. //计算当第一个图片完全展开时,其他图片分配的位置大小
  89. for(var i=1;i<lis.length;i++){
  90. lis.eq(i).animate({ 'left':560+(i-1)*60},500);
  91. }
  92. });
  93. $(".li1").mouseenter(function(){
  94. //去除动画累计
  95. lis.stop(true);
  96. //计算当第二个图片完全展开时,其他图片分配的位置大小
  97. lis.eq(1).animate({ 'left':60},500);
  98. for(var i=2;i<lis.length;i++)
  99. {
  100. lis.eq(i).animate({ 'left':620+(i-2)*60},500);
  101. }
  102. });
  103. $(".li2").mouseenter(function(){
  104. //去除动画累计
  105. lis.stop(true);
  106. //计算当第三个图片完全展开时,其他图片分配的位置大小
  107. lis.eq(1).animate({ 'left':60},500);
  108. lis.eq(2).animate({ 'left':120},500);
  109. for(var i=3;i<lis.length;i++)
  110. {
  111. lis.eq(i).animate({ 'left':680+(i-3)*60},500);
  112. }
  113. });
  114. $(".li3").mouseenter(function(){
  115. //去除动画累计
  116. lis.stop(true);
  117. //计算当第四个图片完全展开时,其他图片分配的位置大小
  118. lis.eq(4).animate({ 'left':740})
  119. for(var i=0;i<4;i++)
  120. {
  121. lis.eq(i).animate({ 'left':60*i},500);
  122. }
  123. })
  124. $(".li4").mouseenter(function(){
  125. //去除动画累计
  126. lis.stop(true);
  127. //计算当第五个图片完全展开时,其他图片分配的位置大小
  128. lis.eq(4).animate({ 'left':240},500);
  129. for(var i=0;i<4;i++)
  130. {
  131. lis.eq(i).animate({ 'left':60*i},500);
  132. }
  133. })
  134. </script>
  135. </body>
  136. </html>

jQ精简版

代码示例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style>
  7. *{
  8. margin: 0px;
  9. padding: 0px;
  10. }
  11. .box{
  12. width:800px;
  13. height: 300px;
  14. border: solid 1px orange;
  15. position: relative;
  16. margin: 100px auto;
  17. overflow: hidden;
  18. }
  19. ul{
  20. list-style-type: none;
  21. }
  22. ul li{
  23. position: absolute;
  24. }
  25. .cover{
  26. width: 100%;
  27. height: 300px;
  28. background-color: rgba(0,0,0,0.5);
  29. position: absolute;
  30. }
  31. .li1{
  32. left: 160px;
  33. }
  34. .li2{
  35. left:320px;
  36. }
  37. .li3{
  38. left:480px;
  39. }
  40. .li4{
  41. left:640px;
  42. }
  43. </style>
  44. <script src="js/jquery-3.4.1.js"></script>
  45. </head>
  46. <body>
  47. <div class="box">
  48. <ul>
  49. <li class="li0">
  50. <div class="cover"></div>
  51. <img src="img/0.jpg" alt="" />
  52. </li>
  53. <li class="li1">
  54. <div class="cover"></div>
  55. <img src="img/1.jpg" alt="" />
  56. </li>
  57. <li class="li2">
  58. <div class="cover"></div>
  59. <img src="img/2.jpg" alt="" />
  60. </li>
  61. <li class="li3">
  62. <div class="cover"></div>
  63. <img src="img/3.jpg" alt="" />
  64. </li>
  65. <li class="li4">
  66. <div class="cover"></div>
  67. <img src="img/4.jpg" alt="" />
  68. </li>
  69. </ul>
  70. </div>
  71. <script>
  72. var lis=$(".box li");
  73. var index=null;
  74. lis.mouseenter(function(){
  75. //获取当前点击图片的下标
  76. lis.stop(true);
  77. index=$(this).index();
  78. lis.eq(index).children('.cover').stop(true).fadeOut();
  79. lis.each(function(i){
  80. //判断图片左右
  81. if(i<=index){
  82. lis.eq(i).animate({ 'left':60*i},500);
  83. }else{
  84. lis.eq(i).animate({ 'left':560+60*(i-1)},500);
  85. }
  86. })
  87. }).mouseleave(function(){
  88. lis.stop(true);
  89. lis.each(function(i){
  90. lis.eq(i).animate({ 'left':160*i},500);
  91. })
  92. lis.eq(index).find('.cover').stop(true).fadeIn();
  93. })
  94. </script>
  95. </body>
  96. </html>

发表评论

表情:
评论列表 (有 0 条评论,378人围观)

还没有评论,来说两句吧...

相关阅读