• 纯原生JS大图轮播


    CSS部分:

     1 CSS:
     2 <style type="text/css">
     3 #banner {
     4 position: relative;
     5 width: 500px;
     6 height: 300px;
     7 margin: 0 auto;
     8 border: 1px solid black;
     9 overflow: hidden;
    10 }
    11 
    12 #banner_move {
    13 position: relative;
    14 top: 0px;
    15 left: 0px;
    16 height: 300px;
    17 width: 5000px;
    18 background-color: #eee;
    19 }
    20 
    21 #banner_move img {
    22 width: 500px;
    23 height: 300px;
    24 float: left;
    25 }
    26 
    27 #banner_btnleft {
    28 position: absolute;
    29 left: 0px;
    30 top: 50%;
    31 margin-top: -40px;
    32 width: 50px;
    33 height: 80px;
    34 background-color: rgba(0,0,0,0.4);
    35 z-index: 99999;
    36 text-align: center;
    37 line-height: 80px;
    38 font-size: 40px;
    39 font-weight: bold;
    40 color: #fff;
    41 cursor: pointer;
    42 display: none;
    43 }
    44 
    45 #banner_btnright {
    46 position: absolute;
    47 right: 0px;
    48 top: 50%;
    49 margin-top: -40px;
    50 width: 50px;
    51 height: 80px;
    52 background-color: rgba(0,0,0,0.4);
    53 z-index: 99999;
    54 text-align: center;
    55 line-height: 80px;
    56 font-size: 40px;
    57 font-weight: bold;
    58 color: #fff;
    59 cursor: pointer;
    60 display: none;
    61 }
    62 
    63 #banner_btns {
    64 position: absolute;
    65 bottom: 10px;
    66 height: 21px;
    67 background-color: rgba(0,0,0,0.7);
    68 border-radius: 15px;
    69 }
    70 
    71 .banner_btns_item {
    72 width: 13px;
    73 height: 13px;
    74 background-color: #fff;
    75 border-radius: 20px;
    76 float: left;
    77 margin: 4px;
    78 }
    79 </style>

    HTML部分:

     1 <div id="banner">
     2      <div id="banner_btnleft" onselectstart="return false"><</div>
     3      <div id="banner_btnright" onselectstart="return false">></div>
     4           <div id="banner_move">    //这里可以插入任意几张图片
     5               <img src="imgs/1.jpg" />
     6               <img src="imgs/2.jpg" />
     7               <img src="imgs/3.jpg" />
     8           </div>
     9           <div id="banner_btns">
    10           </div>
    11 </div>

    JS部分:

     1 <script type="text/javascript">
     2     var timer1;
     3     var timer2;
     4     var bannerNow = 1;
     5     var bannerSpeed = 10;
     6     var oMove = document.getElementById('banner_move');
     7     var oLeft = document.getElementById("banner_btnleft");
     8     var oRight = document.getElementById("banner_btnright");
     9     var oBanner = document.getElementById('banner');
    10     var aa = document.getElementById('aaa');
    11 
    12     oLeft.onclick = function () {
    13         bannerNow -= 1;
    14         if (bannerNow < 1) bannerNow = oMove.getElementsByTagName("img").length;
    15         StartMove(bannerNow);
    16     }
    17 
    18     oRight.onclick = function () {
    19         bannerNow += 1;
    20         if (bannerNow > oMove.getElementsByTagName("img").length) bannerNow = 1;
    21         StartMove(bannerNow);
    22     }
    23 
    24     oBanner.onmouseover = function () {
    25         StopAutoMove();
    26         oLeft.style.display = 'block';
    27         oRight.style.display = 'block';
    28     }
    29 
    30     oBanner.onmouseout = function () {
    31         AutoMove();
    32         oLeft.style.display = '';
    33         oRight.style.display = '';
    34     }
    35 
    36     AutoMove();
    37 
    38     for (var i = 0; i < oBanner.getElementsByTagName('img').length; i++) {
    39         if (i == 0) document.getElementById("banner_btns").innerHTML += '<div style="background-color:red;" class="banner_btns_item"></div>';
    40         else document.getElementById("banner_btns").innerHTML += '<div class="banner_btns_item"></div>';
    41     }
    42     document.getElementById("banner_btns").style.left = "50%";
    43     document.getElementById("banner_btns").style.marginLeft = '-' + (document.getElementById("banner_btns").offsetWidth / 2) + 'px';
    44 
    45     var oBbtns = document.getElementsByClassName('banner_btns_item');
    46     for (var i = 0; i < oBbtns.length; i++) {
    47         oBbtns[i].index = i + 1;
    48         oBbtns[i].onclick = function () {
    49             bannerNow = this.index;
    50             StartMove(bannerNow);
    51         }
    52     }
    53 
    54 
    55     //轮播方法,参数为你要看的页数
    56     function StartMove(ind) {
    57         window.clearInterval(timer1); //不管有没有启动定时器,都清空一下,为了保证同时只存在一个定时工作
    58         timer1 = window.setInterval(function () {
    59             var finish = (ind - 1) * -500; //计算目标位置
    60 
    61             var btns = document.getElementsByClassName('banner_btns_item');
    62             for (var i = 0; i < btns.length; i++) {
    63                 btns[i].style.backgroundColor = '';
    64             }
    65             btns[ind - 1].style.backgroundColor = 'red';
    66 
    67             //计算速度,实现缓冲
    68             bannerSpeed = Math.ceil(Math.abs((Math.abs(finish) - Math.abs(oMove.offsetLeft)) / 10));
    69 
    70             //判断是否结束或是移动方向
    71             if (oMove.offsetLeft == finish) { //结束,停掉定时器
    72                 window.clearInterval(timer1);
    73             }
    74             else { //未结束,继续移动
    75                 if (oMove.offsetLeft > finish) //判断是否向右走
    76                     oMove.style.left = oMove.offsetLeft - bannerSpeed + 'px';
    77                 else //判断是否向左走
    78                     oMove.style.left = oMove.offsetLeft + bannerSpeed + 'px';
    79             }
    80         }, 20);
    81     }
    82 
    83     //开启自动播放功能
    84     function AutoMove() {
    85         window.clearInterval(timer2);
    86         timer2 = window.setInterval(function () {
    87             bannerNow = bannerNow + 1;
    88             if (bannerNow > oMove.getElementsByTagName("img").length) bannerNow = 1;
    89             StartMove(bannerNow);
    90         }, 2000);
    91     }
    92 
    93     //停止自动播放功能
    94     function StopAutoMove() {
    95         window.clearInterval(timer2);
    96     }
    97 
    98 </script>
  • 相关阅读:
    【git】Git回退代码到指定版本
    【ts】 VSCode自动编译TypeScript终端报错
    【js】 vue 2.5.1 源码学习(十二)模板编译
    【js】vue 2.5.1 源码学习 (十一) 模板编译compileToFunctions渲染函数
    【js】vue 2.5.1 源码学习 (十) $mount 挂载函数的实现
    【js】vue 2.5.1 源码学习 (九) 响应数组对象的变
    【js】Vue 2.5.1 源码学习 (八)响应式入口observe
    【js】vue 2.5.1 源码学习 (七) 初始化之 initState 响应式系统基本思路
    【js】 vue 2.5.1 源码学习(六) initProxy initLifeCycle 渲染函数的作用域代理
    antdv中表单添加电话校验
  • 原文地址:https://www.cnblogs.com/xinchenhui/p/8092846.html
Copyright © 2020-2023  润新知