当前位置:   article > 正文

练手小案例:用js实现3D轮播图_js 3d轮播图

js 3d轮播图

使用HTML5+CSS3+JS实现3D轮播图,绝对的干货!

代码里面有相应的注释和介绍,所以话不多说,直接展示代码!

效果图:

HTML部分:

  1. <div class="box">
  2. <!-- 图片部分 -->
  3. <ul>
  4. <li class="current"><a href="#"><img src="images/1.png" alt=""></a></li>
  5. <li class="next"><a href="#"><img src="images/2.png" alt=""></a></li>
  6. <li class="prev"><a href="#"><img src="images/3.png" alt=""></a></li>
  7. </ul>
  8. <!-- 图片部分 end -->
  9. <a href="javascript:void(0)" class="prevBtn">
  10. <img src="images/left.png">
  11. </a>
  12. <a href="javascript:void(0)" class="nextBtn">
  13. <img src="images/right.png">
  14. </a>
  15. </div>

 CSS部分:

  1. *{
  2. padding: 0;
  3. margin: 0;
  4. }
  5. ul,li,ol{
  6. list-style: none;
  7. }
  8. a{
  9. text-decoration: none;
  10. }
  11. .box{
  12. width: 1200px;
  13. height: 700px;
  14. margin-right: auto;
  15. margin-left: auto;
  16. position: relative;
  17. perspective: 500px; /* 3D虚拟视点距屏幕的距离 */
  18. /* background-color: purple; */
  19. }
  20. .box ul img{
  21. width: 627px;
  22. height: 375px;
  23. }
  24. .box>ul>li>a{
  25. display: block;
  26. }
  27. .box>ul>li{
  28. position: absolute;
  29. z-index: 1; /* 堆叠顺序 */
  30. transform: scale(0.7,0.7);
  31. transition:all 0.5s; /* 过度属性 很重要 */
  32. top: 140px; /* 后面这两个属性也非常重要:*/
  33. left: 280px; /* 让图片原始位置居中 */
  34. }
  35. /* 当前图片 */
  36. .box>ul>li.current{
  37. margin-left: 13px;
  38. transform:scale(1,1);
  39. z-index: 100;
  40. }
  41. /* 下一张图片 */
  42. .box>ul>li.next{
  43. right: 0;
  44. margin-left: 300px;
  45. transform:scale(0.7,0.7) rotateY(-10deg);
  46. z-index: 50;
  47. }
  48. /* 上一张图片 */
  49. .box>ul>li.prev{
  50. left: 0;
  51. margin-left: -6px;
  52. transform:scale(0.7,0.7) rotateY(10deg);
  53. z-index: 50;
  54. }
  55. /* 按钮 */
  56. .prevBtn,.nextBtn{
  57. display: block;
  58. width: 50px;
  59. height: 90px;
  60. position: absolute;
  61. background-color: red;
  62. opacity: 0.5;
  63. top: 40%;
  64. transition: all 0.5s;
  65. z-index: 200;
  66. }
  67. .prevBtn{
  68. left:0;
  69. }
  70. .nextBtn{
  71. right:0;
  72. }
  73. /* 按钮的hover 效果*/
  74. .prevBtn:hover ,.nextBtn:hover{
  75. opacity: 1;
  76. }

JavaScript部分:

  1. let lis = document.querySelectorAll("ul > li");
  2. let prevBtn = document.querySelector(".prevBtn");
  3. let nextBtn = document.querySelector(".nextBtn");
  4. let index = 0;
  5. function showPic(n){
  6. let prevli,nextli;
  7. if(n === lis.length-1){
  8. nextli = 0;
  9. }else{
  10. nextli = n + 1;
  11. }
  12. if(n === 0){
  13. prevli = lis.length-1;
  14. }else{
  15. prevli = n - 1;
  16. }
  17. for(let i = 0; i <= lis.length-1; i++){
  18. lis[i].className = "";
  19. }
  20. lis[n].className = "current";
  21. lis[nextli].className = "next";
  22. lis[prevli].className = "prev";
  23. }
  24. showPic(index);//初始化
  25. nextBtn.addEventListener("click",function(){
  26. index--;
  27. if(index < 0){
  28. index = lis.length-1;
  29. }
  30. showPic(index);
  31. });
  32. prevBtn.addEventListener("click",function(){
  33. index++;
  34. if(index > lis.length-1){
  35. index = 0;
  36. }
  37. showPic(index);
  38. })
  39. //自动切换
  40. setInterval(function(){
  41. index--;
  42. if(index < 0){
  43. index = lis.length-1;
  44. }
  45. showPic(index);
  46. },5000);

学会了记得点赞哦!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/834633
推荐阅读
相关标签
  

闽ICP备14008679号