原生js實現輪播圖實例教程,原生js輪播圖實現原理

本文目錄一覽:

用原生JS實現小米內容部分的類似輪播圖的部分

思路一 絕對定位+透明度

HTML示例代碼

CSS示例代碼

JS示例代碼

思路二 絕對定位+left

HTML示例代碼

CSS示例代碼

JS示例代碼

思路三 絕對定位+left+DOM操作

HTML示例代碼

CSS示例代碼

JS示例代碼

思路一 絕對定位+透明度

原理:首先,將所有輪播圖以絕對定位的方式定位父元素的相同位置;接著,實現上下鍵按鈕修改active的下標;最後,將所有圖片透明度重置為0,而被激活的圖片透明度設置為1;

優點:實現最為簡單,代碼量小,圖片過渡自然;

缺點:沒有左右滑動效果

HTML示例代碼

div id=’container’ ul id=’img-list’ liimg src=”//li liimg src=”//li liimg src=”//li liimg src=”//li /ul a id=’pre-btn’span/span/a a id=’next-btn’span/span/a /div

1

2

3

4

5

6

7

8

9

10

CSS示例代碼

js如何製作圖片輪播

工具/材料

Sublime Text

01

首先在Sublime Text下面準備一個html和5張圖片,圖片寬高為600px和400px,如下圖所示

02

然後在HTML頁面中布局輪播圖的結構,如下圖所示,主要包括圖片區域,圓形按鈕,左右箭頭

03

接下來需要給輪播圖頁面布局聲明一些樣式,請按照下圖所示的樣式代碼進行聲明

04

最後就是實現輪播圖的JS腳本功能,如下圖所示,主要包括前進,後退,自動播放的功能

05

最後運行頁面,你就會看到下圖所示的輪播圖效果,點擊圓圈或者左右箭頭可以切換輪播圖

js圖片輪播點擊

實現輪播圖思路

布局:

1. 使用 flex 布局使子元素水平排列;

2. 子元素寬度設置100%,flex-shrink 設置為 0(這個屬性保證子元素不被壓縮);

定時器無縫輪播:

輪播之前需要將首尾各添加一張圖片。其目的就是實現無縫輪播。

然後將父元素 left 向左移動一個屏幕寬度的距離。這樣才能讓第二張(因為首尾各添加了一張圖片,所以原先的第一張就變成了第二張)變成可視範圍的第一張。

輪播到最後一張圖片(這裡的最後一張指的是拼接的第一張)時;

①清除掉定時器;

②開啟臨界處理(重置父元素的left);

③開啟下一輪輪播。

這裡是實現無縫輪播的關鍵;其目的是播放最後一張的同時,與第一張偷梁換柱。因為最後一張與第一張圖片相同,所以快速地改變其 left 用戶並無感知。並且同時開啟下一輪定時器,1.5s 之後執行第二張圖片播放。而這個 1.5s 之內就好了準備(清除當前定時器,重置父元素 left)。

右邊按鈕點擊無縫輪播:

邏輯同定時器無縫輪播類似,因為方向都是從右向左播放。無縫輪播的核心都是播放到最後一張時偷梁換柱(播放最後一張圖片的1.5s 同時,改變父元素 left 成初始值,負數的屏幕寬度)。

左邊按鈕點擊無縫輪播:

左邊按鈕無縫輪播的核心與以上差不多,唯一的區別就是當播放到第一張圖片時,開始偷梁換柱(播放第一張圖片的1.5s 同時,改變父元素 left 成最大值,負數的(屏幕寬度*(子元素個數-2)))。

指示燈點擊無縫輪播:

點擊第一張圖片時,同左邊按鈕點擊無縫輪播。點擊最後一張圖片時,同右邊按鈕點擊無縫輪播。

JS製作輪播圖

輪播圖是每個網站中必不可少的元素,那麼如何用JS製作輪播圖呢?下面我就給大家分享一下。

工具/材料

Sublime Text

01

首先需要在Sublime中創建HTML文檔,然後在文檔的body區域中加入如下圖所示的輪播圖內容

02

然後我們需要在style標籤中給所添加的輪播圖內容聲明樣式,如下圖所示

03

接下來我們就需要在script標籤中實現輪播圖的動畫腳本內容了,如下圖所示,注意script標籤的type類型一定要是javascript

04

最後我們運行界面程序,你就會看到如下圖所示的輪播圖了,點擊左右的箭頭和中間的圓點都可以進行輪播圖的切換

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/197101.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-03 13:28
下一篇 2024-12-03 13:28

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Harris角點檢測演算法原理與實現

    本文將從多個方面對Harris角點檢測演算法進行詳細的闡述,包括演算法原理、實現步驟、代碼實現等。 一、Harris角點檢測演算法原理 Harris角點檢測演算法是一種經典的計算機視覺演算法…

    編程 2025-04-29
  • 瘦臉演算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉演算法 Python 實現的原理和方法,包括該演算法的意義、流程、代碼實現、優化等內容。 一、演算法意義 隨著科技的發展,瘦臉演算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網路BP演算法原理

    本文將從多個方面對神經網路BP演算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP演算法簡介 BP演算法是一種常用的神經網路訓練演算法,其全稱為反向傳播演算法。BP演算法的基本思想是通過正…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • GloVe詞向量:從原理到應用

    本文將從多個方面對GloVe詞向量進行詳細的闡述,包括其原理、優缺點、應用以及代碼實現。如果你對詞向量感興趣,那麼這篇文章將會是一次很好的學習體驗。 一、原理 GloVe(Glob…

    編程 2025-04-27
  • 編譯原理語法分析思維導圖

    本文將從以下幾個方面詳細闡述編譯原理語法分析思維導圖: 一、語法分析介紹 1.1 語法分析的定義 語法分析是編譯器中將輸入的字元流轉換成抽象語法樹的一個過程。該過程的目的是確保輸入…

    編程 2025-04-27

發表回復

登錄後才能評論