1. 程式人生 > >JS實現簡單的輪播圖(非常簡單,一看就懂)

JS實現簡單的輪播圖(非常簡單,一看就懂)

主要思路:先將需要輪播的4張圖使用絕對定位讓其重疊在banner這個盒子中,然後遍歷所有的圖片將其隱藏,再獲取當前圖片的index值,根據當前的index值設定當前的圖片顯示出來。設定間歇定時器setInterval每隔1秒使得index的值加1,如果大於圖片個數則index=0,每隔1秒呼叫changeImg()函式,改變圖片的顯示。li項的實現原理一樣,總的來說就是圍繞index的值來進行設定圖片的顯示與隱藏,或是Li項的樣式,從而達到輪播圖的效果。

以下為程式碼部分:

HTML程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS實現輪播圖</title>
    <link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
    <div class="main" id="main">
        <div class="nav" id="nav">
            <ul>
                <li class="changeColor">首頁</li>
                <li>點選看看</li>
                <li>會自動的</li>
                <li>我的網站</li>
            </ul>
        </div>
        <div class="banner" id="banner">
            <a href="#">
                <div class="banner-slide slide1"></div>
            </a>
            <a href="#">
                <div class="banner-slide slide2"></div>
            </a>
            <a href="#">
                <div class="banner-slide slide3"></div>
            </a>
            <a href="#">
                <div class="banner-slide slide4"></div>
            </a>
        </div>
    </div>
    <script type="text/javascript" src="js/script.js"></script>
</body>
</html>

CSS程式碼:

* {
    padding: 0;
    margin: 0;
}

.main {
    width: 1200px;
    height: auto;
    margin: 50px auto;
    overflow: hidden;
}

.nav {
    width: 1200px;
    height: 80px;
}

ul {list-style-type: none;}

li {
    float: left;
    width: 25%;
    height: 80px;
    text-align: center;
    line-height: 80px;
    cursor: pointer;
}

.changeColor {
    background: #ffcc00;
    border-radius: 5px;
}

.banner {
    width: 1200px;
    height: 460px;
    overflow: hidden;
}

.banner-slide {
    width: 1200px;
    height: 460px;
    background-repeat: no-repeat;
    position: absolute;
}

.slide1 {
    background-image: url("../img/1.jpg");
}
.slide2 {
    background-image: url("../img/2.jpg");
}
.slide3 {
    background-image: url("../img/3.jpg");
}
.slide4 {
    background-image: url("../img/4.jpg");
}

JS程式碼:

var timer = null,
    index = 0,
    pics = document.getElementsByClassName("banner-slide"),
    lis = document.getElementsByTagName("li");


//封裝一個代替getElementById()的方法
function byId(id){
    return typeof(id) === "string"?document.getElementById(id):id;
}

function slideImg() {
    var main = byId("main");
    var banner = byId("banner");
    main.onmouseover = function(){
        stopAutoPlay();
    }
    main.onmouseout = function(){
        startAutoPlay();
    }
    main.onmouseout();

    //點選導航欄切換圖片
    for(var i=0;i<pics.length;i++){
        lis[i].id = i;
          //給每個li項繫結點選事件
        lis[i].onclick = function(){
          //獲取當前li項的index值
            index = this.id;
            changeImg();
        }
    }
}
//開始播放輪播圖
function startAutoPlay(){
    timer = setInterval(function(){
        index++;
        if(index>3){
            index = 0;
        }
        changeImg();
    },1000);
}
//暫停播放
function stopAutoPlay(){
    if (timer) {
        clearInterval(timer);
    }
}
//改變輪播圖
function changeImg(){
    for(var i=0;i<pics.length;i++){
        pics[i].style.display = "none";
        lis[i].className = "";
    }
    pics[index].style.display = "block";
    lis[index].className = "changeColor";
}

slideImg();

效果如下:

相關推薦

JS實現簡單非常簡單

主要思路:先將需要輪播的4張圖使用絕對定位讓其重疊在banner這個盒子中,然後遍歷所有的圖片將其隱藏,再獲取當前圖片的index值,根據當前的index值設定當前的圖片顯示出來。設定間歇定時器setI

Sql Server中儲存過程中輸入和輸出引數簡單例項

-- ===================【建立儲存過程】===================== USE [Message] GO /****** Object: StoredProcedure [dbo].[讀取外部資料庫查詢] Script Date:

解惑內部類結合程式碼

內部類有兩種情況: (1) 在類中定義一個類(私有內部類,靜態內部類) (2) 在方法中定義一個類(區域性內部類,匿名內部類) 1、私有內部類 —— 在方法之間定義的內部類,非靜態       我們首先看看類中內部類的兩個特點:       (1) 在外部類的作用

焦點7原生JS實現焦點--完整程式碼

輪播圖終於更完了,附上完整程式碼: <html> <head> <meta charset="utf-8" /> <title>焦點輪播圖</title> <style type=

簡單從本地資源獲取圖片

MainActivity package com.example.lunbotu; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; impo

原生JS實現旋轉+文字內容切換

window.onload = function () { var arr = [ { // 1 width:120, top:11, left:87, opacity:20,

原生JS例項之《由簡單到炫酷》系列二

本文主要講述JavaScript原生輪播圖例項,如需JavaScript基礎請到菜鳥教程自己補習。  目錄結構   目標與思路 本文講述最基礎的版本: 頁面載入完成後自動輪播 實現思路: 思路:  1、獲取圖

原生JS例項之《由簡單到炫酷》系列

本文主要講述JavaScript原生輪播圖例項,如需JavaScript基礎請到菜鳥教程自己補習。  目錄結構   目標與思路 本文講述最基礎的版本: 點選圖片切換到下一張圖片 實現思路: 思路:  1、獲取圖片標

簡單單張顯示無特效

HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <

js實現無縫

很多時候我們都會用到無縫輪播圖,那麼下面我就把無縫輪播獻給大家 1.左右無縫輪播 <!DOCTYPE html > <html> <head> <

RecyclerView實現廣告

  平時都是用RecyclerView實現列表,RecyclerView的強大毋庸置疑,今天就用它來實現廣告輪播圖。      效果如下   首先,在activity_main.xml裡定義佈局    <RelativeLayout

用原生JS實現旋轉

html程式碼<div class="wrap" id="wrap"> <div class="slide" id="slide"> <ul> <li><a href="#"

js實現旋轉

首先我們需要明白3d輪播圖的原理 移動的原理: 首先每一站圖片對應這一個樣式 向左移動: 我們可以將第一張圖片樣式給刪除,新增到最後一張(第五張)樣式的後面,這樣就實現了向左圖片的切換 向右移動: 我們可以將最後一張(第五張)圖片樣式給刪除,新增到第一張樣式的前面,

JS實現圖片效果自動和手動

本次輪播效果圖如下:具有以下功能:1.自動播放(滑鼠進入顯示區域時停止播放) 2.左右焦點切換  3.底下小按鈕切換以下為實現程式碼:首先是html程式碼:<!DOCTYPE html> <html lang="en"> <head>

iOS最笨的辦法實現無限網路載入

簡單的做了一下: 使用方法: 把 請求返回的 圖片地址(字串型別)放進陣列中就行 可以使用SDWebImage(我就是用的這個)等。。需要自己匯入並引用,然後修改部分程式碼 .h檔案 // ScrollViewTimerView.h // Scrol

長連線是如何實現後悔

  在HTTP1.0和HTTP1.1協議中都有對長連線的支援。其中HTTP1.0需要在request中增加”Connection: keep-alive“ header才能夠支援,而HTTP1.1預設支援.  http1.0請求與服務端的互動過程: &nbs

如何實現自己的執行緒池後悔

首先,在服務啟動的時候,我們可以啟動好幾個執行緒,並用一個容器(如執行緒池)來管理這些執行緒。當請求到來時,可以從池中取一個執行緒出來,執行任務(通常是對請求的響應),當任務結束後,再將這個執行緒放入池中備用;如果請求到來而池中沒有空閒的執行緒,該請求需要排隊等候。最後,當服務關閉時銷燬該池即可

面試 | JS高階---原型到原型鏈

文中關於一些概念說了可能三到四邊,或者更多,希望是加深大家的印象,希望理解,重要的概念說三遍,只要你能理解,我囉嗦五次都願意。 建構函式建立物件 ==========咱們先來一個栗子======= function Person(name){ //建構函式 this.name

maven如何編譯陳老師精講

陳老師說了,沒強調的意味著現在不要花精力去研究,會用即可。後面不斷用它自然不就會了嗎。   maven被陳老師講完之後簡直太特麼簡單了,以下是步驟: 1. eclipse- new project--maven 建立maven專案 2. 一直next即可,group id就

hibernate相關面試題後悔

概述 hibernate框架應用在dao層,,hibernate的底層程式碼是jdbc,它是一個開源的輕量級的框架. hibernate通過orm思想對資料庫進行crud操作.orm中文翻譯過來就是物件關係對映,它讓實體類(就是通常所說的pojo)和資料庫表對應,讓實體類的欄位和表裡的欄