1. 程式人生 > >原生javascript寫的無縫滾動輪播圖

原生javascript寫的無縫滾動輪播圖

html程式碼

      <div id="box">
          <ul>
             <li><img src="imgs/1.jpg" /></li>
             <li><img src="imgs/2.jpg" /></li>
             <li><img src="imgs/3.jpg" /></li>
             <li><img src="imgs/4.jpg" /></li>
          </ul>
          <div id="btn">
             <p class="prev"><</p>
             <p class="next">></p>
          </div>
      </div>

css程式碼

    <style type="text/css">
        * {
            padding: 0;
            margin: 0;
            list-style: none;
        }

        #box {
            width: 600px;
            height: 200px;
            border: 1px solid firebrick;
            margin: 100px auto;
            overflow: hidden;
            position: relative;
        }

        #box ul {
            position: absolute;
            left: 0;
            top: 0;
        }

        #box ul li {
            float: left;
            width: 300px;
            height: 200px;
        }

        #box ul li img {
            width: 300px;
            height: 200px;
        }

        #btn .prev,
        #btn .next {
            width: 25px;
            height: 40px;
            background: #000000;
            color: white;
            opacity: 0.5;
            font-size: 25px;
            line-height: 40px;
            cursor: pointer;
            bottom: calc(50% - 20px);
            position: absolute;
            text-align: center;
        }

        #btn .next {
            right: 0;
        }

        #btn .prev {
            left: 0;
        }
    </style>

js程式碼

    <script type="text/javascript">
        window.onload = function() {
            var oBox = document.getElementById('box');
            var oUl = document.getElementsByTagName('ul')[0];
            var oLi = oUl.getElementsByTagName('li');
            var oBtn = document.getElementById('btn');
            var oP = oBtn.getElementsByTagName('p');
            //console.log(oP)
            oUl.innerHTML = oUl.innerHTML + oUl.innerHTML;
            oUl.style.width = oLi[0].offsetWidth * oLi.length + 'px';                                                         
            //設定速度
            var speed = 2;
            //設定按鈕初始化
            var num = null;
            function move() {
                 if (oUl.offsetLeft < -oUl.offsetWidth * 0.5) {
                     oUl.style.left = '0';
                 }
                 if (oUl.offsetLeft > 0) {
                     oUl.style.left = -oUl.offsetWidth * 0.5 + "px";
                 }
                 oUl.style.left = oUl.offsetLeft - speed + 'px';
            }
            //新增定時器
            var timer = setInterval(move, 30);
            //劃上去停止定時器
            oBox.onmouseover = function() {
                clearInterval(timer);
            };
            //劃出執行定時器
            oBox.onmouseout = function() {
                timer = setInterval(move, 30);
            };
            //遍歷按鈕
            for (var i = 0; i < oP.length; i++) {                   
                oP[i].index = i;
                oP[i].onclick = function() {
                    num = this.index;
                    if (num) {    //如果按鈕是0,則向左執行
                        speed = 2;
                    }else{        //如果按鈕是1,則向右執行
                        speed = -2;                         
                    }                           
                }
            }
        }
    </script>

效果圖
這裡寫圖片描述

相關推薦

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

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

原生javascript無縫滾動

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

無縫滾動(3)

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

無縫滾動

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

原生JavaScript實現豎直

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src="日常封裝函式.js"

JS實現無縫滾動的原理

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

原生js】詳解無縫滾動

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

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

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

:js 鼠標劃過下方按鈕,繼續下一個

就會 定時器 pac color lis hover 路線 css 輪播圖 自寫:js輪播圖 鼠標劃過下方按鈕,繼續下一個 定時器關閉後再開啟一般都會按照原來的路線繼續走,不會因為你點了3而下個就會是4 $(".focus-rad>ul>li").hover(

簡單的左右滾動

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

JavaScript--緩動運動+

classname ima javascrip ive margin pla tom append mouse 上效果: 實現步驟: 最重要的是運動公式!!! 1 <!DOCTYPE html> 2 <html> 3 &

原生js仿網易

win cli font inline move 創建 ica tle 默認 <!-- HTML部分 --> <div id="wrap"> <div class="picBox"> <!-- 圖片區域 -->

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

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

橫向滾動

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

原生js實現淘寶,支援左右和跳轉(滑鼠點多快都不會亂)。

用transform是因為這個比left的效能好。 這個是演示網址(不要直接存下來哦):https://shalltears.github.io/test-sowing-map/ 。 這個是完整程式碼下載地址,覺得還行的下載支援一下:https://download.csdn.ne

原生js實現網易

前端基本功-網頁特效5 一、實現效果圖 二、分析佈局 主盒子裡分上下兩個小盒子(1和2)。 包含圖片的盒子佔兩張圖片的寬(3),處於上盒子中,當前圖片在上盒子(1)中,其它圖片在盒子(3)的右側等待播放。 下邊的盒子(2)

史上最簡單的無縫銜接

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

純JS的一個

最近學習了一下JavaScript,按照其他程式碼的思路,我寫了一個JS的輪播圖。程式碼如下: <!doctype html> <html> <head> <title></title> </head

原生JS實現移動端

話不多說直接上程式碼。html 結構<div class="jd_banner"> <!--圖片--> <ul class="jd_bannerImg clearfix"> <li>

用Bootstrap框架響應式

說實話個人覺得這個Bootstrap的js外掛來實現輪播圖效果挺好的。 提醒一下你得要到Bootstrap官網提前下載一下這個: 還有就是在你的開頭記得加上這行程式碼: 結尾記得加上這兩行: <!-- 輪播圖 --> <div id="