1. 程式人生 > >無縫滾動輪播圖

無縫滾動輪播圖

即實現無縫滾動,又擁有普通輪播圖的的功能。

無縫滾動原理:

    首先宣告圖片向左滑動的;

    1.HTML,開始我們要在輪播圖容器內第一張圖片前新增我們需要顯示圖片的最後一張,同樣在最後一張的後面新增我們需要顯示圖片的第一張;

    2.CSS,剛開始我們需要顯示第一張圖片,所以這時就需要設定圖片容器的起始位值的CSS樣式{left:-544px}

    3.JavaScript,我們實時監控圖片容器左邊相對於輪播圖元件的位置的值_left,如果_left大於圖片容器的寬度減一張圖片的寬度時,也就是滑到了最後一張圖片的一瞬間(當然顯示的是我們提前新增的,那個我們要顯示的第一張圖片),這時立即顯示我們顯示真正要顯示的第一張圖片。

HTML程式碼:

<body>
   <div class="banner-slider">
      <div class="slider-wrap">
        <img src="images/3.jpg" alt="">
        <img src="images/0.jpg" alt="">
        <img src="images/1.jpeg" alt="">
        <img src="images/2.jpg" alt="">
        <img src="images/3.jpg" alt="">
        <img src="images/0.jpg" alt="">
</div> <div class="slider-switch"> <div class="slider-switch-prev"> <span><</span> </div> <div class="slider-switch-next"> <span>></span> </div> </div> <div class="slider-control"> <span class="slider-control-item item-active"></span> <span class="slider-control-item"></span> <span class="slider-control-item"></span> <span class="slider-control-item"></span> </div> </div> <script src="js/jquery-3.2.1.min.js"></script> <script src="js/index.js"></script> </body>

CSS程式碼:

.banner-slider {
  width:544px;
  height: 414px;
  position: relative;
  border: 1px solid red;
  overflow: hidden;
}

.banner-slider .slider-wrap {
  position: absolute;
  top: 0;
  left: -544px;
  width: 3264px;
  height: 414px;
}
.banner-slider .slider-wrap>img{
  display: block;
  float: left;
  width: 544px;
  height: 414px;
}

.banner-slider .slider-switch {
  height: 40px;
  width: 100%;
  position: absolute;
  top: 50%;
  left: 0;
  margin-top: -20px;
}

.banner-slider .slider-switch>div {
  width: 40px;
  height: 40px;
  background-color: rgba(0,0,0,.2);
  color: #fff;
  font-size: 30px;
  font-weight: 600;
  line-height: 40px;
  text-align: center;
  position: absolute;
}

.banner-slider .slider-switch .slider-switch-prev{
  left: 0;
  top: 0;
}

.banner-slider .slider-switch .slider-switch-next{
  right: 0;
  top: 0;
}

.banner-slider .slider-control {
  position: absolute;
  width: 100%;
  bottom: 30px;
  left: 0;
  text-align: center;
}

.banner-slider .slider-control>span{
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  box-shadow: 0 0 5px #000;
  margin-right: 15px;
  background-color: rgba(255,255,255,.5);
}

.banner-slider .slider-control .item-active {
  background-color: rgba(37,237,237,.8);
  box-shadow: 0 0 7px #000;
}

JS程式碼:

$(function(){
  var slider = $('.banner-slider');   //輪播圖元件
  var wrap = $('.slider-wrap');  //圖片容器
  var images = wrap.children();  //所有的圖片
  var imgWidth = images.eq(0).width();  //圖片的寬度
  var prevBtn = $('.slider-switch-prev');  //上一頁按鈕
  var nextBtn = $('.slider-switch-next');   //下一頁按鈕
  var controls = $('.slider-control>span');   //控制進度的所有小按鈕
  var index = 0;  //當前顯示的圖片,第一張為0
  var speed = 20;   //無縫滾動的時間間隔
  var step = 2;  //無縫滾動的步長,每消耗speed 毫秒,行進的距離
  var autoEnable = true;  //控制自動滾動的開關
    
//點選進度小按鈕
controls.on('click', function(){ index = $(this).index(); getStep(index) });    
//點選下一張按鈕
nextBtn.on('click', function() { index++; if (index === images.length - 2) { //因為我們新增的兩張輔助的圖片 index = 0; } getStep(index); });   //點選上一張按鈕 prevBtn.on('click', function() { index--; if (index === -1) { index = 3; } getStep(index); }); //顯示當前圖片的方法,index {param, Number} 當前圖片的索引0為第一張 function getStep(index){ wrap.css('left', imgWidth * (index + 1) * -1); controls.removeClass('item-active').eq(index).addClass('item-active'); //更新進度小按鈕的樣式 _left = -(index+1) * imgWidth; //點選按鈕需要更新自動輪播的起始位置 } //圖片容器的相對於輪播圖元件的絕對位置 var _left = wrap.offset().left; //實現無縫滾動的計時器 var timer = setInterval(function(){ if (autoEnable) { if (-_left > wrap.width()-imgWidth) { _left = -imgWidth; } _left -= step; index = Math.floor(-_left/imgWidth)-1; controls.removeClass('item-active').eq(index).addClass('item-active'); wrap.css('left', _left); } }, speed); //滑鼠移入關閉自動滑動 slider.on('mouseover', function() { autoEnable = false; }); //滑鼠移出開啟自動滑動 slider.on('mouseleave', function() { autoEnable = true; });})

相關推薦

無縫滾動(3)

我吃了炫邁做出來的輪播圖,停不下來的那種 一、結構 <div class="box" id="screen"> <ul> <li><img src="http://img.mp.itc.cn/upload/20161107/033

原生javascript寫的無縫滾動

html程式碼 <div id="box"> <ul> <li><img src="imgs/1.jpg" /></li>

無縫滾動

即實現無縫滾動,又擁有普通輪播圖的的功能。無縫滾動原理:    首先宣告圖片向左滑動的;    1.HTML,開始我們要在輪播圖容器內第一張圖片前新增我們需要顯示圖片的最後一張,同樣在最後一張的後面新增我們需要顯示圖片的第一張;    2.CSS,剛開始我們需要顯示第一張圖片

原生js實現無縫滾動(移動端)-自動輪

想不依賴任何外掛和庫,就用原生js實現移動端自動輪播,發現網上的都不盡如人意,乾脆自己寫一個,程式碼有部分參考,廢話少說,上程式碼。 head部分,沒什麼好說的: <meta charset="utf-8"> <me

JS實現無縫滾動的原理

NPU func etl () initial body position com hidden 用JS實現無縫滾動輪播圖的方法有很多,我自己瞎琢磨了一個, 原理非常簡單,就是點擊按鈕的一瞬間,把 ul 拉到某一個位置, 然後再滑動,這樣就成了無縫滑動 為

簡單的左右滾動

nsf javascrip pan position 個數 webkit translate over gin <!DOCTYPE html> <html lang="en"> <head> <meta chars

面向對象無縫滾動(附帶面向過程代碼)

js代碼 內部 ++ 封裝 面向 圓點 link amp blog <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <title>ba

vue慕課網音樂項目手記:5-手寫滾動(上)

flow overflow box cor 慕課 efs PE osi 通過 在這一節,會封裝一些公用的函數來添加classname,改變image的寬度。 具體如下: 首先:封裝一個slider的組件 <template> <div cl

橫向滾動

圓點 event char tran color 數組 translate amp osi <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l

史上最簡單的無縫銜接

網上有大量關於使用原生js編寫輪播圖的例子,不得不說,他們的文章很棒,但是我發現一個缺點,就是他們的輪播圖元件太過於完整,添加了很多按鈕功能,程式碼量較大。掩蓋了輪播圖的最基本也是最重要的實現原理,很容易讓新手摸不著頭腦。 這篇文章的目的就是想用最少的程式碼,

無縫切換

輪播圖大家都寫過,但是怎麼做到無縫切換對新手來說是個難點。 曾經也困惑了我很久,一直在研究,方法也很多,但是總是沒有找到簡便合適的。下面介紹一種。 html部分: <div class="b

web前端技術課程講解之關於水平無縫滾動

製作這個簡單的輪播圖之前,你必須掌握html、css、以及JavaScript中的節點操作,定時器的使用,條件語句的使用以及JS修改樣式和動畫原理。 輪播圖對於網頁來說是個常見也可以說是必備的部分,而輪播圖的形式也是各式各樣,有簡約的也有炫酷的。當然,這裡我就只說簡約的全屏輪播圖水平無縫滾動。 首先是給出

【原生js】詳解無縫滾動

前言:輪播圖,是網站首頁中最常見的一種圖片切換特效,作為前端開發者,我相信很多開發者都直接呼叫了JQuery中的封裝好的方法實現圖片輪播,省事簡單。所以我今天想介紹一下原生js程式碼實現的圖片輪播。

--無縫滾動

輪播圖–無縫滾動 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&

jQuery之上下無縫滾動

如圖效果:實現功能:1.上下無縫滾動,2.滑鼠放上去停止滾動並出現提示資訊無縫滾動原理:每一次將第一個li移動到最後一個(append)html程式碼 <div class="scrollNews">                     <ul>

(原生JS) 圖片無縫滾動、圖片轉化、、摺疊效果

1.圖片無縫滾動(原生JS)<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>無縫滾動</title&g

JQuery 基礎案例(3)—— jQuery實現無縫(無回滾)滾動切換效果

輪播圖無縫滾動切換原理 基本框架 <div class="slide"> <!-- 導航點 --> <ul class="slide-nav"> <li class="activ

jQuery----無縫

bottom blog dex :hover fin taobao .com ont append 1、效果 2、html代碼 <!DOCTYPE html> <html> <head> <meta chars

原生JavaScript實現無縫

原生 原生js ted 結束 阻止 time == 實現圖 put 無縫輪播圖是頁面常用的特效之一,然而在實際的開發過程中,大部分的開發者都會使用插件來對輪播圖進行開發,那麽它的底層到底是怎麽實現的呢,本文章將圍繞這一問題展開探討。 在討論如何利用原生JS實現圖片之間無縫切

無縫

else radius -s () var lns body tint tex html: <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><met