JavaScript banner輪播 左右切換 圓點點擊切換

来源:https://www.cnblogs.com/hxun/archive/2019/06/28/11104367.html
-Advertisement-
Play Games

1、效果如下圖: 2、源碼如下: 完畢! good job! good luck! ...


1、效果如下圖:

2、源碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript banner輪播 左右切換 圓點點擊切換</title>

<style type="text/css">
div,ul,li,a,span,img{margin:0;padding:0;}
#banner { 
    overflow:hidden; 
    width:100%; 
    height:400px; 
    position:relative; 
    float:left;
    padding-bottom: 10px;
}
#tab>img:not(:first-child){ 
    display:none; 
}
.lunbo_btn {
    height: 15px;
    width: 100%;
    margin: 0px auto;
    margin-top: -40px;
    position: absolute;
    z-index: 3;
    text-align: center;
}
.lunbo_btn span {
    width:14px;
    height:14px;
    display:inline-block;
    background-color:#b4b5b7;
    border-radius:50%;
    margin:0px 2px;
    cursor:pointer;
}
.lunbo_btn span.hover {
    background-color:#ffb23c;
}
.arrow {
    display: none;
    width: 30px;
    height: 60px;
    background-color: rgba(0,0,0,0.4);
    position: absolute;
    top: 50%;
    margin-top: -30px;
    z-index:999;
}
.arrow span {
    display: block;
    width: 10px;
    height: 10px;
    border-bottom: 2px solid #fff;
    border-left: 2px solid #fff;
}
.slider_left {
    margin: 25px 0 0 10px;
    transform: rotate(45deg);
}
.prve {
    left: 0;
}
.next {
    right: 0;
}
.slider_right {
    margin: 25px 0 0 5px;
    transform: rotate(-135deg);
}
.arrow:hover{background:#444;}
#banner:hover .arrow{display:block;}
</style>

</head>
<body>

<div id="banner">    
    <!-- 輪播圖片 -->
    <div id="tab">
        <img class="tabImg" src="images/banner1.jpg" height="400"/>
        <img class="tabImg" src="images/banner2.jpg" height="400"/>
        <img class="tabImg" src="images/banner3.jpg" height="400"/>
        <img class="tabImg" src="images/banner4.jpg" height="400"/>
    </div>
    <!-- 指示符 -->
    <div class="lunbo_btn">
        <span num="0" class="tabBtn hover"></span>
        <span num="1" class="tabBtn"></span>
        <span num="2" class="tabBtn"></span>
        <span num="3" class="tabBtn"></span>
    </div>    
    <!-- 左右切換按鈕 -->
    <div class="arrow prve">
        <span class="slider_left"></span>
    </div>
    <div class="arrow next">
        <span class="slider_right"></span>
    </div>    
</div>

<script type="text/javascript">

    //輪播圖
    var curIndex=0;//初始化
    var img_number = document.getElementsByClassName('tabImg').length;
    var _timer = setInterval(runFn,2000);//2秒
    function runFn(){ //運行定時器         
        curIndex = ++curIndex == img_number ? 0 : curIndex;//演算法 4為banner圖片數量
        slideTo(curIndex);
     }
     
     //圓點點擊切換輪播圖
     window.onload = function  () {    //為按鈕初始化onclick事件
        var tbs = document.getElementsByClassName("tabBtn");
        for(var i=0;i<tbs.length;i++){
            tbs[i].onclick = function  () {
                clearInterval(_timer);//細節處理,關閉定時,防止點切圖和定時器函數衝突
                slideTo(this.attributes['num'].value);
                curIndex = this.attributes['num'].value
                _timer = setInterval(runFn,2000);//點擊事件處理完成,繼續開啟定時輪播
            }
        }
    }

    var prve = document.getElementsByClassName("prve");
    prve[0].onclick = function () {//上一張
        clearInterval(_timer);//細節處理,關閉定時,防止點切圖和定時器函數衝突
        curIndex--;
        if(curIndex == -1){
            curIndex = img_number-1;
        }
        slideTo(curIndex);
        _timer = setInterval(runFn,2000);//點擊事件處理完成,繼續開啟定時輪播
    }
    
    var next = document.getElementsByClassName("next");
    next[0].onclick = function () {//下一張
        clearInterval(_timer);//細節處理,關閉定時,防止點切圖和定時器函數衝突
        curIndex++;
        if(curIndex == img_number){
            curIndex =0;
        }
        slideTo(curIndex);
        _timer = setInterval(runFn,2000);//點擊事件處理完成,繼續開啟定時輪播
    }
    
    //切換banner圖片 和 按鈕樣式
    function slideTo(index){
        console.log(index)
        var index = parseInt(index);//轉int類型
        var images = document.getElementsByClassName('tabImg');
        for(var i=0;i<images.length;i++){//遍歷每個圖片
            if( i == index ){
                images[i].style.display = 'inline';//顯示            
            }else{
                images[i].style.display = 'none';//隱藏
            }
        }
        var tabBtn = document.getElementsByClassName('tabBtn');
        for(var j=0;j<tabBtn.length;j++){//遍歷每個按鈕
            if( j == index ){
                tabBtn[j].classList.add("hover");    //添加輪播按鈕hover樣式
                curIndex=j;
            }else{
                tabBtn[j].classList.remove("hover");//去除輪播按鈕hover樣式
            }
        }
        
    }
    
</script>
</body>
</html>

 

完畢!

good job! good luck!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、品牌項目的添加功能的思路(雙向數據綁定): 二、過濾器: 1、過濾器調用時候的格式: {{ name | 過濾器的名稱 }} 2、過濾器的定義語法: 3、定義私有過濾器有兩個條件:過濾器的名稱 和 處理函數 三、自定義指令: 樣式,只要通過指令綁定給了元素,不管這個元素有沒有被插入到頁面中去,這 ...
  • 總述:大部分3D編程都涉及到地面元素,在場景中我們使用地面作為其他物體的承載基礎,同時也用地面限制場景使用者的移動範圍,還可以通過設置地塊的屬性為場景的不同位置設置對應的計算規則。本文在WebGL平臺上藉助Babylon.js庫探索並實現了兩種地面構造方法,除了兩種確定的構造方法外,本文還包含了對一 ...
  • 品牌案例的增刪查和其他部分效果: ...
  • 一、問題:我們前面講了標簽選擇器有一個缺陷就是它不加選擇的把所有相同的標簽全都變成統一樣式,這對於我們個性化定製產生了阻礙,因此我們便引出了id選擇器,來進行特別指定進行配置樣式 二、id選擇器 1.定義:根據指定的id名稱找到對應的標簽,然後設置屬性 2.格式: #id名稱{ 屬性:值; } 3. ...
  • 一、理解MVC和MVVM的關係: MVC:Model View Controller (模型 視圖 控制器) 分別為:業務邏輯、界面、用來調度View和Model層 MVVM:Model View ViewModel M:每個頁面中單獨的數據; V:每個頁面中的HTML機構; VM:調度者,V從VM ...
  • void關鍵字介紹 首先,void關鍵字是javascript當中非常重要的關鍵字,該操作符指定要計算或運行一個表達式,但是不返回值。 語法格式: 實例1 當點擊超級鏈接時,什麼都不發生 實例2 執行void操作符當中的代碼 實例3 計算void操作符當中的算術 html: js: 控制台輸出: 很 ...
  • node.js 中的fs.rename()模塊 方法說明 : 修改文件名稱,可更改文件的存放路徑 基本語法 ` ...
  • 1:首頁 1,靜態html5+css做好基本樣式 html5,css,jQery, sass 2,jsonp的方式src引入模擬的json數據//這裡用的jsonp方式拿數據,詳情有使用ajax 遍歷json數據: 2:跳轉詳情 關鍵:indexOf,continue ajax js //首頁給a標 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...