左右帶有按鈕圖片水平滾動

admin發表於2018-12-25

本章節分享一段程式碼例項,它實現了圖片水平無縫滾動效果。

點選左右按鈕可以實現滾動,也可以讓效果實現自動滾動,設定相應的引數即可。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style type="text/css">
* {
  margin: 0px;
  padding: 0px;
  font-size: 12px;
}
a {
  text-decoration: none;
  font-size: 12px;
}
a:link {
  color: #383455;
  font-size: 12px;
}
a:hover {
  color: #ff0000;
  font-size: 12px;
}
a:visited {
  color: #383455;
  font-size: 12px;
}
img {
  border: none;
}
.hl_main5_content {
  width: 898px;
  height: 155px;
  border-top: none;
  margin-left: 1px;
  margin: 100px auto;
}
.hl_main5_content1 {
  width: 838px;
  margin-top: 5px;
  overflow: hidden;
  float: left;
  margin-left: 15px;
}
.hl_main5_content1 ul {
  width: 1600px;
  overflow: hidden;
}
.hl_main5_content1 ul li {
  float: left;
  width: 200px;
  display: inline;
  border: 1px #FF0000 solid;
  margin-right: 10px;
}
.hl_main5_content1 ul li img {
  width: 200px;
}
.hl_scrool_leftbtn {
  width: 14px;
  height: 38px;
  background: #ccc url(hl_scroll_left.jpg) no-repeat;
  float: left;
  margin-top: 50px;
  cursor: pointer;
}
.hl_scrool_rightbtn {
  width: 14px;
  height: 38px;
  background: #ccc url(hl_scroll_right.jpg) no-repeat;
  float: right;
  margin-top: 50px;
  cursor: pointer;
}
</style>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script type="text/javascript">
var flag = "left";
function DY_scroll(wraper, prev, next, img, speed, or) {
  var wraper = $(wraper);
  var prev = $(prev);
  var next = $(next);
  var img = $(img).find('ul');
  var w = img.find('li').outerWidth(true);
  var s = speed;
  next.click(function () {
    img.animate({ 'margin-left': -w }, function () {
      img.find('li').eq(0).appendTo(img);
      img.css({ 'margin-left': 0 });
    });
    flag = "left";
  });
  prev.click(function () {
    img.find('li:last').prependTo(img);
    img.css({ 'margin-left': -w });
    img.animate({ 'margin-left': 0 });
    flag = "right";
  });
  if (or == true) {
    ad = setInterval(function () { flag == "left" ? next.click() : prev.click() }, s * 1000);
    wraper.hover(function () {
      clearInterval(ad);
    }, function () {
      ad = setInterval(function () {
        flag == "left" ? next.click() : prev.click()
      }, s * 1000);
    });
  }
}
$(document).ready(function () {
  DY_scroll('.hl_main5_content','.hl_scrool_leftbtn','.hl_scrool_rightbtn','.hl_main5_content1',3,true);
})
</script>
</head>
<body>
  <div class="hl_main5_content">
    <div class="hl_scrool_leftbtn"></div>
    <div class="hl_scrool_rightbtn"></div>
    <div class="hl_main5_content1">
      <ul>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
        <li><a href="" title=""><img src="demo/jQuery/img/scroll.png" /></a></li>
      </ul>
    </div>
  </div>
</body>
</html>

上面的程式碼實現了滾動效果,下面介紹一下它的實現過程。

程式碼註釋:

(1).var flag = "left",宣告一個變數並賦初值為left,用來說明預設是向左滾動的。

(2).function DY_scroll(wraper, prev, next, img, speed, or) {},此方法是實現滾動的核心,第一個引數是容器元素的class屬性值,第二個引數前一個按鈕的class屬性值,第三個引數是下一個按鈕的class屬性值,第四個引數是ul元素第一級父元素的class屬性值,第五個引數是滾動速度,第六個引數規定是否可以自動滾動。

(3).var wraper = $(wraper),獲取對應的元素物件。

(4).var img = $(img).find('ul'),獲取指定元素下面的ul元素。

(5).var w = img.find('li').outerWidth(true),獲取li元素的外部寬度。

(6).var s = speed,將滾動速度賦值給變數s。

(7). next.click(function () {

  img.animate({ 'margin-left': -w }, function () {

    img.find('li').eq(0).appendTo(img);

    img.css({ 'margin-left': 0 });

  });

  flag = "left";

}),為下一個按鈕註冊時間處理函式。

當點選按鈕的時候,ul元素會以動畫方式設定左邊距,尺寸是負的li元素的寬度。

動畫完成之後,將第一個li元素移動到佇列的結尾,然後再設定ul元素的做外邊距為0。

(8).if (or == true) {

  ad = setInterval(function () { flag == "left" ? next.click() : prev.click() }, s * 1000);

  wraper.hover(function () {

    clearInterval(ad);

  }, function () {

    ad = setInterval(function () {

      flag == "left" ? next.click() : prev.click()

    }, s * 1000);

  });

},如果自動播放,那麼通過定時器函式每隔1秒鐘呼叫一次next.click()或者 prev.click()。

相關文章