一生不可自决 發表於 2019-7-5 14:48:00

原生JavaScript实现轮播图

<p>---恢复内容开始---</p>
<h2 id="%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86">实现原理</h2>
<p><img class="has" src="https://img-blog.csdn.net/20180802200449316?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMjY1Mjg5/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" alt=""></p>
<p>通过自定义的animate函数来改变元素的left值让图片呈现左右滚动的效果</p>
<h2>HTML:</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 255, 1)">&lt;!</span><span style="color: rgba(255, 0, 255, 1)">DOCTYPE html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">meta </span><span style="color: rgba(255, 0, 0, 1)">charset</span><span style="color: rgba(0, 0, 255, 1)">="utf-8"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span>   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">link </span><span style="color: rgba(255, 0, 0, 1)">rel</span><span style="color: rgba(0, 0, 255, 1)">="stylesheet"</span><span style="color: rgba(255, 0, 0, 1)"> type</span><span style="color: rgba(0, 0, 255, 1)">="text/css"</span><span style="color: rgba(255, 0, 0, 1)"> href</span><span style="color: rgba(0, 0, 255, 1)">="StyleSheet.css"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span>   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">title</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">head</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span>   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="scroll"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="scroll"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">10</span>         <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="box"</span><span style="color: rgba(255, 0, 0, 1)"> class</span><span style="color: rgba(0, 0, 255, 1)">="box"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">11</span>             <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ul </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="ul"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="left:-950px;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">12</span>               <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">img </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="images/top_banner_bw01.jpg"</span><span style="color: rgba(255, 0, 0, 1)"> width</span><span style="color: rgba(0, 0, 255, 1)">="950"</span><span style="color: rgba(255, 0, 0, 1)"> height</span><span style="color: rgba(0, 0, 255, 1)">="438"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">13</span>               <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">img </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="images/top_banner_bw02.jpg"</span><span style="color: rgba(255, 0, 0, 1)"> width</span><span style="color: rgba(0, 0, 255, 1)">="950"</span><span style="color: rgba(255, 0, 0, 1)"> height</span><span style="color: rgba(0, 0, 255, 1)">="438"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">14</span>               <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">img </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="images/top_banner_bw03.jpg"</span><span style="color: rgba(255, 0, 0, 1)"> width</span><span style="color: rgba(0, 0, 255, 1)">="950"</span><span style="color: rgba(255, 0, 0, 1)"> height</span><span style="color: rgba(0, 0, 255, 1)">="438"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">15</span>               <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">img </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="images/top_banner_bw04.jpg"</span><span style="color: rgba(255, 0, 0, 1)"> width</span><span style="color: rgba(0, 0, 255, 1)">="950"</span><span style="color: rgba(255, 0, 0, 1)"> height</span><span style="color: rgba(0, 0, 255, 1)">="438"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">16</span>               <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;</span><span style="color: rgba(128, 0, 0, 1)">img </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="images/top_banner_bw05.jpg"</span><span style="color: rgba(255, 0, 0, 1)"> width</span><span style="color: rgba(0, 0, 255, 1)">="950"</span><span style="color: rgba(255, 0, 0, 1)"> height</span><span style="color: rgba(0, 0, 255, 1)">="438"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">li</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">17</span>             <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">ul</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">18</span>             <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">ol </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="olnavi"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">ol</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">19</span>         <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">20</span>         <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="last"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">21</span>         <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">id</span><span style="color: rgba(0, 0, 255, 1)">="next"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">22</span>   <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">23</span>   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">script </span><span style="color: rgba(255, 0, 0, 1)">src</span><span style="color: rgba(0, 0, 255, 1)">="a.js"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">script</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">body</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">html</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<h2>CSS:</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">body, div, p,
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">h1, h2, h3, h4, h5, h6,
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">dl, dt, dd, ul, ol, li,
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">table, caption, th, td,
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">form, fieldset, input, textarea, select,
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">pre, address, blockquote,
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)">embed, object {
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">    margin: 0px;
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">    padding: 0px;
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">11</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">ul, ol {
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">    list-style:none;
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">15</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">img {
</span><span style="color: rgba(0, 128, 128, 1)">17</span> <span style="color: rgba(0, 0, 0, 1)">    vertical-align: top;
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">19</span>
<span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)">.scroll {
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">    width: 950px;
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)">    height: 438px;
</span><span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 0, 1)">    margin: auto;
</span><span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(0, 0, 0, 1)">    overflow: hidden;
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)">    position: relative;
</span><span style="color: rgba(0, 128, 128, 1)">26</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">27</span>
<span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)">.box {
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">    width: 950px;
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)">    height: 438px;
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">    overflow: hidden;
</span><span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(0, 0, 0, 1)">    position: relative;
</span><span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">34</span>
<span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">.box ul{
</span><span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)">    width: 700%;
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)">    position: absolute;
</span><span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)">    left: 0;
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)">    top: 0;
</span><span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">    padding:0px;
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)">    margin:0px;
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">43</span>
<span style="color: rgba(0, 128, 128, 1)">44</span> <span style="color: rgba(0, 0, 0, 1)">.box ul li{
</span><span style="color: rgba(0, 128, 128, 1)">45</span> <span style="color: rgba(0, 0, 0, 1)">    float: left;
</span><span style="color: rgba(0, 128, 128, 1)">46</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">47</span>
<span style="color: rgba(0, 128, 128, 1)">48</span> <span style="color: rgba(0, 0, 0, 1)">.scroll ol {
</span><span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)">    position: absolute;
</span><span style="color: rgba(0, 128, 128, 1)">50</span> <span style="color: rgba(0, 0, 0, 1)">    right: 365px;
</span><span style="color: rgba(0, 128, 128, 1)">51</span> <span style="color: rgba(0, 0, 0, 1)">    bottom: 5px;
</span><span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">53</span>
<span style="color: rgba(0, 128, 128, 1)">54</span> <span style="color: rgba(0, 0, 0, 1)">.scroll ol li {
</span><span style="color: rgba(0, 128, 128, 1)">55</span> <span style="color: rgba(0, 0, 0, 1)">    float: left;
</span><span style="color: rgba(0, 128, 128, 1)">56</span> <span style="color: rgba(0, 0, 0, 1)">    width: 20px;
</span><span style="color: rgba(0, 128, 128, 1)">57</span> <span style="color: rgba(0, 0, 0, 1)">    height: 20px;
</span><span style="color: rgba(0, 128, 128, 1)">58</span> <span style="color: rgba(0, 0, 0, 1)">    border-radius: 50%;
</span><span style="color: rgba(0, 128, 128, 1)">59</span> <span style="color: rgba(0, 0, 0, 1)">    background: #000;
</span><span style="color: rgba(0, 128, 128, 1)">60</span> <span style="color: rgba(0, 0, 0, 1)">    margin-left: 10px;
</span><span style="color: rgba(0, 128, 128, 1)">61</span> <span style="color: rgba(0, 0, 0, 1)">    cursor: pointer;
</span><span style="color: rgba(0, 128, 128, 1)">62</span> <span style="color: rgba(0, 0, 0, 1)">    opacity: 0.5;
</span><span style="color: rgba(0, 128, 128, 1)">63</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">64</span>
<span style="color: rgba(0, 128, 128, 1)">65</span> <span style="color: rgba(0, 0, 0, 1)">.scroll ol li.current {
</span><span style="color: rgba(0, 128, 128, 1)">66</span> <span style="color: rgba(0, 0, 0, 1)">    background-color: #000099;
</span><span style="color: rgba(0, 128, 128, 1)">67</span> <span style="color: rgba(0, 0, 0, 1)">    opacity: 0.8;
</span><span style="color: rgba(0, 128, 128, 1)">68</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">69</span>
<span style="color: rgba(0, 128, 128, 1)">70</span> <span style="color: rgba(0, 0, 0, 1)">#last {
</span><span style="color: rgba(0, 128, 128, 1)">71</span> <span style="color: rgba(0, 0, 0, 1)">    position: absolute;
</span><span style="color: rgba(0, 128, 128, 1)">72</span> <span style="color: rgba(0, 0, 0, 1)">    bottom: 179px;
</span><span style="color: rgba(0, 128, 128, 1)">73</span> <span style="color: rgba(0, 0, 0, 1)">    width: 80px;
</span><span style="color: rgba(0, 128, 128, 1)">74</span> <span style="color: rgba(0, 0, 0, 1)">    height: 80px;
</span><span style="color: rgba(0, 128, 128, 1)">75</span> <span style="color: rgba(0, 0, 0, 1)">    cursor: pointer;
</span><span style="color: rgba(0, 128, 128, 1)">76</span> <span style="color: rgba(0, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">77</span>
<span style="color: rgba(0, 128, 128, 1)">78</span> <span style="color: rgba(0, 0, 0, 1)">#next {
</span><span style="color: rgba(0, 128, 128, 1)">79</span> <span style="color: rgba(0, 0, 0, 1)">    position: absolute;
</span><span style="color: rgba(0, 128, 128, 1)">80</span> <span style="color: rgba(0, 0, 0, 1)">    bottom: 179px;
</span><span style="color: rgba(0, 128, 128, 1)">81</span> <span style="color: rgba(0, 0, 0, 1)">    right: 0px;
</span><span style="color: rgba(0, 128, 128, 1)">82</span> <span style="color: rgba(0, 0, 0, 1)">    width: 80px;
</span><span style="color: rgba(0, 128, 128, 1)">83</span> <span style="color: rgba(0, 0, 0, 1)">    height: 80px;
</span><span style="color: rgba(0, 128, 128, 1)">84</span> <span style="color: rgba(0, 0, 0, 1)">    cursor: pointer;
</span><span style="color: rgba(0, 128, 128, 1)">85</span> }</pre>
</div>
<h2>JavaScript:</h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">//1.先获取html中的元素
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)">var scroll = document.getElementById("scroll");
</span><span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">var ul = document.getElementById("ul");
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 0, 1)">var ulLis = ul.children;
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">var liWidth = ul.children.offsetWidth;
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 0, 1)">//2.再此之前,我们要明白,小圆点并不是写死的,它是根据ul li中的图片张数来决定的 。
</span><span style="color: rgba(0, 128, 128, 1)">7</span> <span style="color: rgba(0, 0, 0, 1)">var ol = document.getElementById("olnavi");
</span><span style="color: rgba(0, 128, 128, 1)">8</span> for (var i = 0; i <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)"> ulLis</span><span style="color: rgba(255, 0, 0, 1)">.length - 2; i++) {
</span><span style="color: rgba(0, 128, 128, 1)">9</span> <span style="color: rgba(255, 0, 0, 1)">    var li </span><span style="color: rgba(0, 0, 255, 1)">= document.createElement("li");
</span><span style="color: rgba(0, 128, 128, 1)"> 10</span>   <span style="color: rgba(255, 0, 0, 1)">li.id </span><span style="color: rgba(0, 0, 255, 1)">= (i </span><span style="color: rgba(255, 0, 0, 1)">+ 1);//id用于后面为li添加事件
</span><span style="color: rgba(0, 128, 128, 1)"> 11</span> <span style="color: rgba(255, 0, 0, 1)">    ol.appendChild(li);
</span><span style="color: rgba(0, 128, 128, 1)"> 12</span>   
<span style="color: rgba(0, 128, 128, 1)"> 13</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 14</span> <span style="color: rgba(255, 0, 0, 1)">ol.children.className </span><span style="color: rgba(0, 0, 255, 1)">= "current"</span><span style="color: rgba(255, 0, 0, 1)"> //将第一个小圆点设置为触发状态
</span><span style="color: rgba(0, 128, 128, 1)"> 15</span> <span style="color: rgba(255, 0, 0, 1)">//3.要实现无缝滚动 就需要多两张图片才行 ,即克隆第一张图片,放到最后一张的后面,克隆最后一张,放到第一张的前面。
</span><span style="color: rgba(0, 128, 128, 1)"> 16</span> <span style="color: rgba(255, 0, 0, 1)">var num </span><span style="color: rgba(0, 0, 255, 1)">= ulLis.length </span><span style="color: rgba(255, 0, 0, 1)">- 1;
</span><span style="color: rgba(0, 128, 128, 1)"> 17</span> <span style="color: rgba(255, 0, 0, 1)">ul.appendChild(ul.children.cloneNode(true));
</span><span style="color: rgba(0, 128, 128, 1)"> 18</span> <span style="color: rgba(255, 0, 0, 1)">ul.insertBefore(ul.children.cloneNode(true), ul.firstChild);
</span><span style="color: rgba(0, 128, 128, 1)"> 19</span> <span style="color: rgba(255, 0, 0, 1)">//4.接下来为左右箭头添加事件,鼠标放到箭头上会变色
</span><span style="color: rgba(0, 128, 128, 1)"> 20</span> <span style="color: rgba(255, 0, 0, 1)">var last </span><span style="color: rgba(0, 0, 255, 1)">= document.getElementById("last");
</span><span style="color: rgba(0, 128, 128, 1)"> 21</span> <span style="color: rgba(255, 0, 0, 1)">last.style.background </span><span style="color: rgba(0, 0, 255, 1)">= "url(./img/left.png)"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 22</span> <span style="color: rgba(255, 0, 0, 1)">last.style.width </span><span style="color: rgba(0, 0, 255, 1)">= "64px"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 23</span>
<span style="color: rgba(0, 128, 128, 1)"> 24</span> <span style="color: rgba(255, 0, 0, 1)">last.addEventListener("mouseenter", function () {
</span><span style="color: rgba(0, 128, 128, 1)"> 25</span> <span style="color: rgba(255, 0, 0, 1)">    last.style.background </span><span style="color: rgba(0, 0, 255, 1)">= "url(./img/newleft.png)"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 26</span> <span style="color: rgba(255, 0, 0, 1)">}, false);
</span><span style="color: rgba(0, 128, 128, 1)"> 27</span>
<span style="color: rgba(0, 128, 128, 1)"> 28</span> <span style="color: rgba(255, 0, 0, 1)">last.addEventListener("mouseleave", function () {
</span><span style="color: rgba(0, 128, 128, 1)"> 29</span> <span style="color: rgba(255, 0, 0, 1)">    last.style.background </span><span style="color: rgba(0, 0, 255, 1)">= "url(./img/left.png)"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 30</span> <span style="color: rgba(255, 0, 0, 1)">}, false);
</span><span style="color: rgba(0, 128, 128, 1)"> 31</span>
<span style="color: rgba(0, 128, 128, 1)"> 32</span> <span style="color: rgba(255, 0, 0, 1)">var next </span><span style="color: rgba(0, 0, 255, 1)">= document.getElementById("next");
</span><span style="color: rgba(0, 128, 128, 1)"> 33</span> <span style="color: rgba(255, 0, 0, 1)">next.style.background </span><span style="color: rgba(0, 0, 255, 1)">= "url(./img/right.png)"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 34</span> <span style="color: rgba(255, 0, 0, 1)">next.style.width </span><span style="color: rgba(0, 0, 255, 1)">= "64px"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 35</span>
<span style="color: rgba(0, 128, 128, 1)"> 36</span> <span style="color: rgba(255, 0, 0, 1)">next.addEventListener("mouseenter", function () {
</span><span style="color: rgba(0, 128, 128, 1)"> 37</span> <span style="color: rgba(255, 0, 0, 1)">    next.style.background </span><span style="color: rgba(0, 0, 255, 1)">= "url(./img/newright.png)"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 38</span> <span style="color: rgba(255, 0, 0, 1)">}, false);
</span><span style="color: rgba(0, 128, 128, 1)"> 39</span>
<span style="color: rgba(0, 128, 128, 1)"> 40</span> <span style="color: rgba(255, 0, 0, 1)">next.addEventListener("mouseleave", function () {
</span><span style="color: rgba(0, 128, 128, 1)"> 41</span> <span style="color: rgba(255, 0, 0, 1)">    next.style.background </span><span style="color: rgba(0, 0, 255, 1)">= "url(./img/right.png)"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 42</span> <span style="color: rgba(255, 0, 0, 1)">}, false);
</span><span style="color: rgba(0, 128, 128, 1)"> 43</span> <span style="color: rgba(255, 0, 0, 1)">// 5.我们接着用js做动画&nbsp;动画部分包括:&nbsp;
</span><span style="color: rgba(0, 128, 128, 1)"> 44</span> <span style="color: rgba(255, 0, 0, 1)">// ①.鼠标点击第几个小圆点,就要展示第几张图片,并且小圆点的颜色也发生变化.
</span><span style="color: rgba(0, 128, 128, 1)"> 45</span> <span style="color: rgba(255, 0, 0, 1)">// ②.&nbsp;鼠标点击左右箭头,图片向左右移动一张
</span><span style="color: rgba(0, 128, 128, 1)"> 46</span> <span style="color: rgba(255, 0, 0, 1)">// ③图片自动轮播,(这需要一个定时器)
</span><span style="color: rgba(0, 128, 128, 1)"> 47</span> <span style="color: rgba(255, 0, 0, 1)">// ④.鼠标放在图片上,图片停止自动播放(这需要清除定时器)
</span><span style="color: rgba(0, 128, 128, 1)"> 48</span> <span style="color: rgba(255, 0, 0, 1)">// ⑤.鼠标离开图片,图片继续自动轮播 (重新开始定时器)&nbsp;
</span><span style="color: rgba(0, 128, 128, 1)"> 49</span> <span style="color: rgba(255, 0, 0, 1)">// 这里我们封装了一个animate()动画函数
</span><span style="color: rgba(0, 128, 128, 1)"> 50</span> <span style="color: rgba(255, 0, 0, 1)">function animate(obj, target) {//obj为需要移动的元素,在本文中为ul,target为需要移动到的位置
</span><span style="color: rgba(0, 128, 128, 1)"> 51</span> <span style="color: rgba(255, 0, 0, 1)">    var speed </span><span style="color: rgba(0, 0, 255, 1)">= obj.offsetLeft </span><span style="color: rgba(255, 0, 0, 1)">&lt; target ? 10 : -10;//判断速度向左还是向右
</span><span style="color: rgba(0, 128, 128, 1)"> 52</span> <span style="color: rgba(255, 0, 0, 1)">    obj.timer </span><span style="color: rgba(0, 0, 255, 1)">= setInterval(function </span><span style="color: rgba(255, 0, 0, 1)">() {//计时器每隔一定时间移动一次
</span><span style="color: rgba(0, 128, 128, 1)"> 53</span> <span style="color: rgba(255, 0, 0, 1)">      var result </span><span style="color: rgba(0, 0, 255, 1)">= target </span><span style="color: rgba(255, 0, 0, 1)">- obj.offsetLeft;//剩余需要移动的距离
</span><span style="color: rgba(0, 128, 128, 1)"> 54</span> <span style="color: rgba(255, 0, 0, 1)">      obj.style.left </span><span style="color: rgba(0, 0, 255, 1)">= obj.offsetLeft </span><span style="color: rgba(255, 0, 0, 1)">+ speed + "px";//改变元素的left来实现移动         
</span><span style="color: rgba(0, 128, 128, 1)"> 55</span> <span style="color: rgba(255, 0, 0, 1)">      if (Math.abs(result) &lt;</span><span style="color: rgba(0, 0, 255, 1)">= Math.abs(speed)) </span><span style="color: rgba(255, 0, 0, 1)">{//当需要移动的距离小于速度时
</span><span style="color: rgba(0, 128, 128, 1)"> 56</span> <span style="color: rgba(255, 0, 0, 1)">            clearInterval(obj.timer);   //清除计时器
</span><span style="color: rgba(0, 128, 128, 1)"> 57</span> <span style="color: rgba(255, 0, 0, 1)">            obj.style.left </span><span style="color: rgba(0, 0, 255, 1)">= target </span><span style="color: rgba(255, 0, 0, 1)">+ "px";//直接移动到需要移动的位置
</span><span style="color: rgba(0, 128, 128, 1)"> 58</span> <span style="color: rgba(255, 0, 0, 1)">            flag </span><span style="color: rgba(0, 0, 255, 1)">= true;</span><span style="color: rgba(255, 0, 0, 1)">//将flag置为true,使点击事件能再次触发
</span><span style="color: rgba(0, 128, 128, 1)"> 59</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 60</span> <span style="color: rgba(255, 0, 0, 1)">    }, 1);
</span><span style="color: rgba(0, 128, 128, 1)"> 61</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 62</span> <span style="color: rgba(255, 0, 0, 1)">//6.接下来把动画函数赋给左右箭头
</span><span style="color: rgba(0, 128, 128, 1)"> 63</span> <span style="color: rgba(255, 0, 0, 1)">var flag </span><span style="color: rgba(0, 0, 255, 1)">= true;</span><span style="color: rgba(255, 0, 0, 1)">//用于判断上一个事件是否执行完毕,如果没有执行完毕禁止再次触发事件
</span><span style="color: rgba(0, 128, 128, 1)"> 64</span> <span style="color: rgba(255, 0, 0, 1)">var index </span><span style="color: rgba(0, 0, 255, 1)">= 1;</span><span style="color: rgba(255, 0, 0, 1)">//是第几个小圆点
</span><span style="color: rgba(0, 128, 128, 1)"> 65</span> <span style="color: rgba(255, 0, 0, 1)">var lastclick </span><span style="color: rgba(0, 0, 255, 1)">= function </span><span style="color: rgba(255, 0, 0, 1)">() {
</span><span style="color: rgba(0, 128, 128, 1)"> 66</span> <span style="color: rgba(255, 0, 0, 1)">    if (flag) {
</span><span style="color: rgba(0, 128, 128, 1)"> 67</span> <span style="color: rgba(255, 0, 0, 1)">      flag </span><span style="color: rgba(0, 0, 255, 1)">= false;</span><span style="color: rgba(255, 0, 0, 1)">//进入事件将flag置为false
</span><span style="color: rgba(0, 128, 128, 1)"> 68</span> <span style="color: rgba(255, 0, 0, 1)">      console.log(flag);
</span><span style="color: rgba(0, 128, 128, 1)"> 69</span> <span style="color: rgba(255, 0, 0, 1)">      if (index </span><span style="color: rgba(0, 0, 255, 1)">=== </span><span style="color: rgba(255, 0, 0, 1)">1) {//判断是否为第一张
</span><span style="color: rgba(0, 128, 128, 1)"> 70</span> <span style="color: rgba(255, 0, 0, 1)">            index </span><span style="color: rgba(0, 0, 255, 1)">= 6;
</span><span style="color: rgba(0, 128, 128, 1)"> 71</span>             <span style="color: rgba(255, 0, 0, 1)">ul.style.left </span><span style="color: rgba(0, 0, 255, 1)">= "-5994px"</span><span style="color: rgba(255, 0, 0, 1)">;//当移动到第一张时,再向右移前会替换到最后一张后面的第一张,然后再向右移动。
</span><span style="color: rgba(0, 128, 128, 1)"> 72</span> <span style="color: rgba(255, 0, 0, 1)">            animate(ul, ul.offsetLeft + liWidth); //动画函数一次向有移动一个图片长度的距离
</span><span style="color: rgba(0, 128, 128, 1)"> 73</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 74</span> <span style="color: rgba(255, 0, 0, 1)">      else {
</span><span style="color: rgba(0, 128, 128, 1)"> 75</span> <span style="color: rgba(255, 0, 0, 1)">            animate(ul, ul.offsetLeft + liWidth);
</span><span style="color: rgba(0, 128, 128, 1)"> 76</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 77</span> <span style="color: rgba(255, 0, 0, 1)">      index -</span><span style="color: rgba(0, 0, 255, 1)">= 1; </span><span style="color: rgba(255, 0, 0, 1)">//移动小圆点计数器
</span><span style="color: rgba(0, 128, 128, 1)"> 78</span> <span style="color: rgba(255, 0, 0, 1)">      btnShow(index);//给新的小圆点高亮,取消上一个小圆点的高亮
</span><span style="color: rgba(0, 128, 128, 1)"> 79</span> <span style="color: rgba(255, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)"> 80</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 81</span> <span style="color: rgba(255, 0, 0, 1)">last.addEventListener("click", lastclick, false);//将函数赋给点击事件
</span><span style="color: rgba(0, 128, 128, 1)"> 82</span>
<span style="color: rgba(0, 128, 128, 1)"> 83</span> <span style="color: rgba(255, 0, 0, 1)">var nextclick </span><span style="color: rgba(0, 0, 255, 1)">= function </span><span style="color: rgba(255, 0, 0, 1)">() {//向左移与向右移类似
</span><span style="color: rgba(0, 128, 128, 1)"> 84</span> <span style="color: rgba(255, 0, 0, 1)">    if (flag) {
</span><span style="color: rgba(0, 128, 128, 1)"> 85</span> <span style="color: rgba(255, 0, 0, 1)">      flag </span><span style="color: rgba(0, 0, 255, 1)">= false;
</span><span style="color: rgba(0, 128, 128, 1)"> 86</span>         <span style="color: rgba(255, 0, 0, 1)">if (index </span><span style="color: rgba(0, 0, 255, 1)">=== </span><span style="color: rgba(255, 0, 0, 1)">5) {
</span><span style="color: rgba(0, 128, 128, 1)"> 87</span> <span style="color: rgba(255, 0, 0, 1)">            index </span><span style="color: rgba(0, 0, 255, 1)">= 0;
</span><span style="color: rgba(0, 128, 128, 1)"> 88</span>             <span style="color: rgba(255, 0, 0, 1)">ul.style.left </span><span style="color: rgba(0, 0, 255, 1)">= "0px"</span><span style="color: rgba(255, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 128, 1)"> 89</span> <span style="color: rgba(255, 0, 0, 1)">            animate(ul, ul.offsetLeft - liWidth);
</span><span style="color: rgba(0, 128, 128, 1)"> 90</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 91</span> <span style="color: rgba(255, 0, 0, 1)">      else {
</span><span style="color: rgba(0, 128, 128, 1)"> 92</span> <span style="color: rgba(255, 0, 0, 1)">            animate(ul, ul.offsetLeft - liWidth);
</span><span style="color: rgba(0, 128, 128, 1)"> 93</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)"> 94</span> <span style="color: rgba(255, 0, 0, 1)">      index +</span><span style="color: rgba(0, 0, 255, 1)">= 1;
</span><span style="color: rgba(0, 128, 128, 1)"> 95</span>         <span style="color: rgba(255, 0, 0, 1)">btnShow(index);
</span><span style="color: rgba(0, 128, 128, 1)"> 96</span> <span style="color: rgba(255, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)"> 97</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)"> 98</span> <span style="color: rgba(255, 0, 0, 1)">next.addEventListener("click",nextclick, false);
</span><span style="color: rgba(0, 128, 128, 1)"> 99</span>
<span style="color: rgba(0, 128, 128, 1)">100</span> <span style="color: rgba(255, 0, 0, 1)">function btnShow(cur_index) {
</span><span style="color: rgba(0, 128, 128, 1)">101</span> <span style="color: rgba(255, 0, 0, 1)">    for (var i </span><span style="color: rgba(0, 0, 255, 1)">= 0; </span><span style="color: rgba(255, 0, 0, 1)">i &lt; ol.children.length; i++) {
</span><span style="color: rgba(0, 128, 128, 1)">102</span> <span style="color: rgba(255, 0, 0, 1)">      ol.children.className </span><span style="color: rgba(0, 0, 255, 1)">= ' </span><span style="color: rgba(255, 0, 0, 1)">'; //取消全部li的类
</span><span style="color: rgba(0, 128, 128, 1)">103</span> <span style="color: rgba(255, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">104</span> <span style="color: rgba(255, 0, 0, 1)">    ol.children.className </span><span style="color: rgba(0, 0, 255, 1)">= "current"</span><span style="color: rgba(255, 0, 0, 1)">;//给新的小圆点加上类
</span><span style="color: rgba(0, 128, 128, 1)">105</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">106</span> <span style="color: rgba(255, 0, 0, 1)">//7.再加上一个计时器,每隔一段时间就会触发一次下一张的效果,来实现轮播
</span><span style="color: rgba(0, 128, 128, 1)">107</span> <span style="color: rgba(255, 0, 0, 1)">var timer;
</span><span style="color: rgba(0, 128, 128, 1)">108</span> <span style="color: rgba(255, 0, 0, 1)">function play() {
</span><span style="color: rgba(0, 128, 128, 1)">109</span> <span style="color: rgba(255, 0, 0, 1)">    timer </span><span style="color: rgba(0, 0, 255, 1)">= setInterval(nextclick, </span><span style="color: rgba(255, 0, 0, 1)">3000)
</span><span style="color: rgba(0, 128, 128, 1)">110</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">111</span>
<span style="color: rgba(0, 128, 128, 1)">112</span> <span style="color: rgba(255, 0, 0, 1)">scroll.addEventListener("load", play(), false);//整个div全部加载完毕后开始
</span><span style="color: rgba(0, 128, 128, 1)">113</span>
<span style="color: rgba(0, 128, 128, 1)">114</span> <span style="color: rgba(255, 0, 0, 1)">scroll.addEventListener("mouseenter", function () { //鼠标移入图片是清除计时器
</span><span style="color: rgba(0, 128, 128, 1)">115</span> <span style="color: rgba(255, 0, 0, 1)">    clearInterval(timer);
</span><span style="color: rgba(0, 128, 128, 1)">116</span> <span style="color: rgba(255, 0, 0, 1)">}, false);
</span><span style="color: rgba(0, 128, 128, 1)">117</span>
<span style="color: rgba(0, 128, 128, 1)">118</span> <span style="color: rgba(255, 0, 0, 1)">scroll.addEventListener("mouseleave", function () {//鼠标移出图片时再次启动计时器
</span><span style="color: rgba(0, 128, 128, 1)">119</span> <span style="color: rgba(255, 0, 0, 1)">    play();
</span><span style="color: rgba(0, 128, 128, 1)">120</span> <span style="color: rgba(255, 0, 0, 1)">}, false);
</span><span style="color: rgba(0, 128, 128, 1)">121</span>
<span style="color: rgba(0, 128, 128, 1)">122</span> <span style="color: rgba(255, 0, 0, 1)">//8.最后给小圆点加上事件,点第几个轮播到第几张
</span><span style="color: rgba(0, 128, 128, 1)">123</span> <span style="color: rgba(255, 0, 0, 1)">//小圆点的点击事件
</span><span style="color: rgba(0, 128, 128, 1)">124</span> <span style="color: rgba(255, 0, 0, 1)">var olliclick </span><span style="color: rgba(0, 0, 255, 1)">= function </span><span style="color: rgba(255, 0, 0, 1)">() {
</span><span style="color: rgba(0, 128, 128, 1)">125</span> <span style="color: rgba(255, 0, 0, 1)">    if (flag) {
</span><span style="color: rgba(0, 128, 128, 1)">126</span> <span style="color: rgba(255, 0, 0, 1)">      flag </span><span style="color: rgba(0, 0, 255, 1)">= false;
</span><span style="color: rgba(0, 128, 128, 1)">127</span>         <span style="color: rgba(255, 0, 0, 1)">var cur_li </span><span style="color: rgba(0, 0, 255, 1)">= document.getElementsByClassName("current");
</span><span style="color: rgba(0, 128, 128, 1)">128</span>         <span style="color: rgba(255, 0, 0, 1)">var lastid </span><span style="color: rgba(0, 0, 255, 1)">= cur_li.id;</span><span style="color: rgba(255, 0, 0, 1)">//当前的小圆点是第几个
</span><span style="color: rgba(0, 128, 128, 1)">129</span> <span style="color: rgba(255, 0, 0, 1)">      var distance </span><span style="color: rgba(0, 0, 255, 1)">= this.id </span><span style="color: rgba(255, 0, 0, 1)">- lastid;//计算当前小圆点与点击的小圆点的距离(分正负)
</span><span style="color: rgba(0, 128, 128, 1)">130</span> <span style="color: rgba(255, 0, 0, 1)">      if (distance </span><span style="color: rgba(0, 0, 255, 1)">== </span><span style="color: rgba(255, 0, 0, 1)">0) {
</span><span style="color: rgba(0, 128, 128, 1)">131</span> <span style="color: rgba(255, 0, 0, 1)">            flag </span><span style="color: rgba(0, 0, 255, 1)">= true;
</span><span style="color: rgba(0, 128, 128, 1)">132</span>         <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">133</span> <span style="color: rgba(255, 0, 0, 1)">      else {
</span><span style="color: rgba(0, 128, 128, 1)">134</span> <span style="color: rgba(255, 0, 0, 1)">            animate_ol(ul, distance);
</span><span style="color: rgba(0, 128, 128, 1)">135</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">136</span> <span style="color: rgba(255, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">137</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">138</span>
<span style="color: rgba(0, 128, 128, 1)">139</span> <span style="color: rgba(255, 0, 0, 1)">//给所有的小圆点添加上点击事件
</span><span style="color: rgba(0, 128, 128, 1)">140</span> <span style="color: rgba(255, 0, 0, 1)">var ollitimer </span><span style="color: rgba(0, 0, 255, 1)">= 1
</span><span style="color: rgba(0, 128, 128, 1)">141</span> <span style="color: rgba(255, 0, 0, 1)">var lis </span><span style="color: rgba(0, 0, 255, 1)">= ol.getElementsByTagName('li');
</span><span style="color: rgba(0, 128, 128, 1)">142</span> <span style="color: rgba(255, 0, 0, 1)">for (ollitimer; ollitimer &lt; lis.length+1; ollitimer++) {
</span><span style="color: rgba(0, 128, 128, 1)">143</span> <span style="color: rgba(255, 0, 0, 1)">    var olli </span><span style="color: rgba(0, 0, 255, 1)">= document.getElementById(ollitimer);
</span><span style="color: rgba(0, 128, 128, 1)">144</span>   <span style="color: rgba(255, 0, 0, 1)">olli.addEventListener("click", olliclick, false);
</span><span style="color: rgba(0, 128, 128, 1)">145</span> <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">146</span>
<span style="color: rgba(0, 128, 128, 1)">147</span> <span style="color: rgba(255, 0, 0, 1)">function animate_ol(obj, value) {//小圆点动画函数
</span><span style="color: rgba(0, 128, 128, 1)">148</span> <span style="color: rgba(255, 0, 0, 1)">    if (value </span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)"> 0) {//判断移动方向
</span><span style="color: rgba(0, 128, 128, 1)">149</span> <span style="color: rgba(0, 0, 0, 1)">      var speed = -20*value; //使动画时间一致
</span><span style="color: rgba(0, 128, 128, 1)">150</span> <span style="color: rgba(0, 0, 0, 1)">    }
</span><span style="color: rgba(0, 128, 128, 1)">151</span>   if (value <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)"> 0</span><span style="color: rgba(255, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 128, 1)">152</span> <span style="color: rgba(255, 0, 0, 1)">      var speed </span><span style="color: rgba(0, 0, 255, 1)">= -20*value;
</span><span style="color: rgba(0, 128, 128, 1)">153</span>   <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">154</span> <span style="color: rgba(255, 0, 0, 1)">    var lastleft </span><span style="color: rgba(0, 0, 255, 1)">= obj.offsetLeft;
</span><span style="color: rgba(0, 128, 128, 1)">155</span>   <span style="color: rgba(255, 0, 0, 1)">obj.timer </span><span style="color: rgba(0, 0, 255, 1)">= setInterval(function </span><span style="color: rgba(255, 0, 0, 1)">() {
</span><span style="color: rgba(0, 128, 128, 1)">156</span> <span style="color: rgba(255, 0, 0, 1)">      var distance </span><span style="color: rgba(0, 0, 255, 1)">= Math.abs(value </span><span style="color: rgba(255, 0, 0, 1)">* liWidth) - Math.abs(obj.offsetLeft - lastleft);
</span><span style="color: rgba(0, 128, 128, 1)">157</span> <span style="color: rgba(255, 0, 0, 1)">      //剩余需要移动的距离
</span><span style="color: rgba(0, 128, 128, 1)">158</span> <span style="color: rgba(255, 0, 0, 1)">      if (distance &lt; Math.abs(speed)) {
</span><span style="color: rgba(0, 128, 128, 1)">159</span> <span style="color: rgba(255, 0, 0, 1)">            clearInterval(obj.timer);
</span><span style="color: rgba(0, 128, 128, 1)">160</span> <span style="color: rgba(255, 0, 0, 1)">            if (value </span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)"> 0) {
</span><span style="color: rgba(0, 128, 128, 1)">161</span> <span style="color: rgba(0, 0, 0, 1)">                obj.style.left = obj.offsetLeft - distance + "px";
</span><span style="color: rgba(0, 128, 128, 1)">162</span> <span style="color: rgba(0, 0, 0, 1)">                flag = true;
</span><span style="color: rgba(0, 128, 128, 1)">163</span> <span style="color: rgba(0, 0, 0, 1)">            }
</span><span style="color: rgba(0, 128, 128, 1)">164</span>             if (value <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)"> 0</span><span style="color: rgba(255, 0, 0, 1)">) {
</span><span style="color: rgba(0, 128, 128, 1)">165</span> <span style="color: rgba(255, 0, 0, 1)">                obj.style.left </span><span style="color: rgba(0, 0, 255, 1)">= obj.offsetLeft </span><span style="color: rgba(255, 0, 0, 1)">+ distance + "px";
</span><span style="color: rgba(0, 128, 128, 1)">166</span> <span style="color: rgba(255, 0, 0, 1)">                flag </span><span style="color: rgba(0, 0, 255, 1)">= true;
</span><span style="color: rgba(0, 128, 128, 1)">167</span>             <span style="color: rgba(255, 0, 0, 1)">}
</span><span style="color: rgba(0, 128, 128, 1)">168</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">169</span> <span style="color: rgba(255, 0, 0, 1)">      else {
</span><span style="color: rgba(0, 128, 128, 1)">170</span> <span style="color: rgba(255, 0, 0, 1)">            obj.style.left </span><span style="color: rgba(0, 0, 255, 1)">= obj.offsetLeft </span><span style="color: rgba(255, 0, 0, 1)">+ speed + "px";
</span><span style="color: rgba(0, 128, 128, 1)">171</span> <span style="color: rgba(255, 0, 0, 1)">      }
</span><span style="color: rgba(0, 128, 128, 1)">172</span> <span style="color: rgba(255, 0, 0, 1)">    }, 1);
</span><span style="color: rgba(0, 128, 128, 1)">173</span> <span style="color: rgba(255, 0, 0, 1)">    index </span><span style="color: rgba(0, 0, 255, 1)">= index </span><span style="color: rgba(255, 0, 0, 1)">+ value;
</span><span style="color: rgba(0, 128, 128, 1)">174</span> <span style="color: rgba(255, 0, 0, 1)">    btnShow(index);
</span><span style="color: rgba(0, 128, 128, 1)">175</span> <span style="color: rgba(255, 0, 0, 1)">}</span></pre>
</div>
<p>&nbsp;再对一下常见的鬼畜bug进行一下总结:<br>通过设置flag来防止多次点击造成的计时器冲突,在点击后将flag置为false,在动画函数结束时再置为true,这样只能在上一个点击事件动画结束后才会触发第二次。</p>

</div>
<div id="MySignature" role="contentinfo">
    内容:html+css<br><br>
来源:https://www.cnblogs.com/mingdao/p/lunbo.html
頁: [1]
查看完整版本: 原生JavaScript实现轮播图