JavaScriptは京東輪図の効果をまねる

7432 ワード

本論文の実例は、JavaScriptが京東輪放送図の効果展示の具体的なコードを共有しています。参考にしてください。具体的な内容は以下の通りです。
京东を模した轮播図を作りました。もちろんホームページの美しさはありません。

主な技術点:
  • は3秒ごとに画像を自動的に切り替える。
  • マウスを画像に移動して自動的に停止し、マウスを移動したら続けます。
  • 左右方向ボタンをクリックして、写真を手動で切り替えます。
  • マウスは灰色の円点に移動し、対応する画像を表示し、強調表示します。
  • HTMLコード:
    
    <body>
     <h1>     </h1>
     <div id="did">
    
     <!--    -->
     <div id="img-div" onmouseover="doStop()" onmouseout="doStart()">
      <img src="./1.jpg">
      <img src="./2.jpg">
      <img src="./3.jpg">
      <img src="./4.jpg">
      <img src="./5.jpg">
      <img src="./6.jpg">
      <img src="./7.jpg">
      <img src="./8.jpg">
     </div>
    
     <!--      -->
     <div id="btn-div">
      <div id="left-btn" onclick="doLeftClick()">
      <h3> < </h3>
      </div>
      <div id="right-btn" onclick="doRightClick()">
      <h3> > </h3>
      </div>
     </div>
    
     <!--    -->
     <div id="cir-div">
      <div onmouseover="doMove(1)"></div>
      <div onmouseover="doMove(2)"></div>
      <div onmouseover="doMove(3)"></div>
      <div onmouseover="doMove(4)"></div>
      <div onmouseover="doMove(5)"></div>
      <div onmouseover="doMove(6)"></div>
      <div onmouseover="doMove(7)"></div>
      <div onmouseover="doMove(8)"></div>
     </div>
     </div>
    
    </body>
    CSSコード:
    
    <style>
     * {
     margin: 0px;
     padding: 0px;
     }
    
     body {
     background-color: rgb(255, 249, 249);
     }
    
     h1 {
     text-align: center;
     padding-top: 40px;
     color: rgba(250, 54, 129, 0.562);
     }
    
     #did {
     position: relative;
     width: 590px;
     height: 470px;
     margin: 30px auto;
     }
    
     #img-div {
     position: absolute;
     }
    
     #img-div img {
     width: 590px;
     display: none;
     cursor: pointer;
     z-index: -1;
     }
    
     /*        */
     /*         */
     #img-div img:first-child {
     display: block;
     }
    
     /*         */
     #cir-div div:first-child {
     background: #fff;
     }
    
     #cir-div {
     position: absolute;
     /*          */
     left: 40px;
     bottom: 25px;
     }
    
     /*      */
     #cir-div div {
     width: 8px;
     height: 8px;
     float: left;
     /* 50%     */
     border-radius: 50%;
     margin-right: 6px;
     border: 1px solid rgba(0, 0, 0, .05);
     background: rgba(255, 255, 255, .4);
     }
    
     #left-btn {
     position: absolute;
     /*          */
     top: 45%;
    
     /*       */
     width: 27px;
     height: 38px;
     background: rgba(119, 119, 119, 0.5);
     border-radius: 0 20px 20px 0;
     /*     ,     ,        ,      */
     transition: background-color 0.3s ease-out;
     }
    
     #right-btn {
     position: absolute;
     /*          */
     top: 45%;
     right: 0px;
    
     /*       */
     width: 27px;
     height: 38px;
     background-color: rgba(119, 119, 119, 0.5);
     border-radius: 20px 0 0 20px;
     /*     ,     ,        ,      */
     transition: background-color 0.3s ease-out;
     }
    
     #left-btn:hover {
     background-color: rgba(32, 32, 32, 0.5);
     cursor: pointer;
     }
    
     #right-btn:hover {
     background-color: rgba(32, 32, 32, 0.5);
     cursor: pointer;
     }
    
     #left-btn h3 {
     color: #fff;
     margin-top: 4px;
     margin-left: 2px;
     }
    
     #right-btn h3 {
     color: #fff;
     margin-top: 4px;
     margin-left: 8px;
     }
    </style>
    JavaScriptコード:
    
    <script>
     //       
     var count = 1;
     //  
     var time = null;
     //    
     var imglist = document.getElementById("img-div").getElementsByTagName("img");
     //    
     var cirlist = document.getElementById("cir-div").getElementsByTagName("div");
    
     //               
     function show(x) {
     for (var i = 0; i < imglist.length; i++) {
      if (x == i + 1) {
      //    
      imglist[i].style.display = "block";
      //    
      cirlist[i].style.backgroundColor = "#fff";
      } else {
      imglist[i].style.display = "none";
      cirlist[i].style.background = "rgba(255, 255, 255, .4)";
      }
     }
     }
    
     //      ( 3       )
     function doStart() {
     if (time == null) {
      time = setInterval(function () {
      count++;
      show(count);
      if (count >= 8) {
       count = 0;
      }
      }, 3000);
     }
     }
    
     //      
     function doStop() {
     if (time != null) {
      clearInterval(time);
      time = null;
     }
     }
    
     //              ,                            
     function doMove(x) {
     show(x);
     //     count,                
     count = x;
     //            ,   count  0,    doStart()  count++,count    9,   
     if (count == 8) {
      count = 0;
     }
     }
    
     /*
       i 、count show(x) x   :
      i = [0,7];
      x = [1,8];
      count = [1,8];
     */
     //            
     function doLeftClick() {
     for (var i = 0; i < imglist.length; i++) {
      //             
      if (imglist[i].style.display == "block") {
      if (i == 0) {
       show(8);
       //      ,break     ,           ,       1,      2
       count = 0;
       //     3  
       doStop();
       doStart();
       break;
      }
      show(i);
      count = i;
      //     3  
      doStop();
      doStart();
      break;
      }
     }
     }
    
     //            
     function doRightClick() {
     for (var i = 0; i < imglist.length; i++) {
      //             
      if (imglist[i].style.display == "block") {
      if (i == 7) {
       show(1);
       count = 1;
       doStop();
       doStart();
       break;
      }
      show(i + 2);
      count = i + 2;
      //               
      if (count >= 8) {
       count = 0;
      }
      doStop();
      doStart();
      break;
      }
     }
     }
    
     doStart();
     //               
     //(  ,    1             ,      )
     doMove(1);
    </script>
    困難な点:
    轮播図は简単に见えるが、実现するにはまだ问题が多い。でも、見つけたのは全部解決しました。
  • 円の点とボタンは写真の上に置いてあります。
  • 自動的に画像を切り替えましたが、対応するドットが点灯しませんでした。
  • マウスを円点に移動して写真が切り替わりましたが、次の自動点灯の円点は円点前の次の
  • に移動しませんでした。
  • 第1の円が点灯します。つまり、ページを開けたばかりの時、左ボタンは反応しません。
  • 左ボタンを一番右の円点に押すと、円点1を無視してそのまま円点2
  • にジャンプします。
  • 最後の円点で右ボタンを押すと、画像がない場合に切り替わります。
  • 点左ボタンの切替時間は約2秒、右ボタンの切替時間は約5秒で、時間は標準の3秒に達していません。
  • でも、全部解決しました。
    最大の感触は一つのバグを解決したばかりで、ちょうどうぬぼれている時に、また一つのバグが来たということです。
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。