国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PC端網(wǎng)頁特效:輪播圖

這篇具有很好參考價值的文章主要介紹了PC端網(wǎng)頁特效:輪播圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

輪播圖

功能需求:

  • 鼠標(biāo)經(jīng)過輪播圖模塊,左右按鈕顯示,離開隱藏左右按鈕。
  • 點擊右側(cè)按鈕一次,圖片往左播放一張, 左側(cè)按鈕同理。
  • 圖片播放的同時,下面小圓圈模塊跟隨一起變化。
  • 點擊小圓圈,可以播放相應(yīng)圖片。
  • 鼠標(biāo)不經(jīng)過輪播圖, 輪播圖也會自動播放圖片。
  • 鼠標(biāo)經(jīng)過,輪播圖模塊, 自動播放停止。

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css輪播圖JavaScript源碼在最下面

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
      <!-- 這個animate.js 必須寫到 index.js的上面引入 -->
      <script src='./JS/animate.js'></script>
      <!-- 引入我們首頁的js文件 -->
      <script src="./JS/index.js"></script>
      <link rel="stylesheet" href="./index.css">
</head>

<body>
   <div class="w">
        <div class="main">
            <div class="focus fl">
                <!-- 左側(cè)按鈕 -->
                <a href="javascript:;" class="arrow-l">
                    ?
                 </a>
                <!-- 右側(cè)按鈕 -->
                <a href="javascript:;" class="arrow-r"> ?</a>
                <!-- 核心的滾動區(qū)域 -->
                <ul>
                    <li>
                        <a href="#"><img src="upload/focus.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="upload/focus1.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="upload/focus2.jpg" alt=""></a>
                    </li>
                    <li>
                        <a href="#"><img src="upload/focus3.jpg" alt=""></a>
                    </li>       
                </ul>
                <!-- 小圓圈 -->
                <ol class="circle">
                </ol>
            </div>
            </div>
            </div>   
</body>
</html>

index.css

.w {
    width: 1200px;
    margin: 0 auto;
}
/*清除元素默認(rèn)的內(nèi)外邊距  */
* {
    margin: 0;
    padding: 0
}

/*去掉列表前面的小點*/
li {
    list-style: none;
}

/*讓button 按鈕 變成小手*/
button {
    cursor: pointer;
}
/*取消鏈接的下劃線*/
a {
    color: #666;
    text-decoration: none;
}
/*清除浮動*/
a {
    color: #666;
    text-decoration: none;
}
.main {
    width: 900px;
    height: 455px;
    margin-left: 219px;
    margin-top: 10px;
}
.fl {
    float: left;
}
.focus {
    position: relative;
    width: 721px;
    height: 455px;
    background-color: purple;
    overflow: hidden;
}
.focus ul {
    position: absolute;
    top: 0;
    left: 0;
    width: 600%;
}
.focus ul li {
    float: left;
}
.arrow-l,
.arrow-r {
    display: none;
    position: absolute;
    top: 50%;
    margin-top: -20px;
    width: 24px;
    height: 40px;
    background: rgba(0, 0, 0, .3);
    text-align: center;
    line-height: 40px;
    color: #fff;
    font-family: 'icomoon';
    font-size: 18px;
    z-index: 2;
}
.arrow-r {
    right: 0;
}
.circle {
    position: absolute;
    bottom: 10px;
    left: 50px;
}
.circle li {
    float: left;
    width: 8px;
    height: 8px;
    /*background-color: #fff;*/
    border: 2px solid rgba(255, 255, 255, 0.5);
    margin: 0 3px;
    border-radius: 50%;
    /*鼠標(biāo)經(jīng)過顯示小手*/
    cursor: pointer;
}
.current {
    background-color: #fff;
}

animate.js

function animate(obj, target, callback) {
    // console.log(callback);  callback = function() {}  調(diào)用的時候 callback()

    // 先清除以前的定時器,只保留當(dāng)前的一個定時器執(zhí)行
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
        // 步長值寫到定時器的里面
        // 把我們步長值改為整數(shù) 不要出現(xiàn)小數(shù)的問題
        // var step = Math.ceil((target - obj.offsetLeft) / 10);
        var step = (target - obj.offsetLeft) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        if (obj.offsetLeft == target) {
            // 停止動畫 本質(zhì)是停止定時器
            clearInterval(obj.timer);
            // 回調(diào)函數(shù)寫到定時器結(jié)束里面
            // if (callback) {
            //     // 調(diào)用函數(shù)
            //     callback();
            // }
            callback && callback();
        }
        // 把每次加1 這個步長值改為一個慢慢變小的值  步長公式:(目標(biāo)值 - 現(xiàn)在的位置) / 10
        obj.style.left = obj.offsetLeft + step + 'px';

    }, 15);
}

輪播圖JavaScript分解

1.新建js文件, 引入頁面中。鼠標(biāo)經(jīng)過輪播圖模塊,左右按鈕顯示,離開隱藏左右按鈕。

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

第一步獲取左右按鈕,添加鼠標(biāo)經(jīng)過和離開事件,鼠標(biāo)經(jīng)過,顯示左右按鈕,鼠標(biāo)離開,隱藏左右按鈕

2.動態(tài)生成底部小圓圈

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

獲取ul和ol元素,通過創(chuàng)建元素的方式,添加li元素,然后將第一個li元素的小圓點默認(rèn)背景為白色

其中小圓點的css代碼實現(xiàn)為:

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css
效果如下:

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

3.點擊哪個小圓圈,哪個小圓圈就變背景色(排他思想)

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

之所以在創(chuàng)建li的時候添加點擊事件是因為,每一個小li都需要添加如果將點擊事件放在for循環(huán)外面,那么只有最后一個li添加了點擊事件

4.點擊小圓圈切換圖片
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

  • 此時用到animate動畫函數(shù),將js文件引入(注意,因為index.js 依賴 animate.js 所以,animate.js 要寫到
    index.js 上面)
  • 使用動畫函數(shù)的前提,該元素必須有定位
  • 是ul 移動 而不是小li
  • 滾動圖片的核心算法: 點擊某個小圓圈 , 就讓圖片滾動 小圓圈的索引號乘以圖片的寬度做為ul移動距離
  • 此時需要知道小圓圈的索引號, 我們可以在生成小圓圈的時候,給它設(shè)置一個自定義屬性,點擊的時候獲取這個自定義屬性即可。

5.點擊右側(cè)按鈕,圖片滾動
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

點擊右側(cè)按鈕一次,就讓圖片滾動一張。 聲明一個變量num, 點擊一次,自增1, 讓這個變量乘以圖片寬度,就是 ul的滾動距離。圖片無縫滾動原理:把ul 第一個li 復(fù)制一份,放到ul 的最后面 當(dāng)圖片滾動到克隆的最后一張圖片時, 讓ul快速的、不做動畫的跳到最左側(cè): left 為0 同時num 賦值為0,可以從新開始滾動圖片了

但是這樣做會出現(xiàn)一個問題:第一個是下面的小圓圈會多一個,第二個是靈動性不好,所以我們可以把在最后添加li的方法改為克隆第一張圖片的方法

優(yōu)化方法:克隆最后一張圖片
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

克隆第一張圖片,克隆ul 第一個li cloneNode() 加true 深克隆 復(fù)制里面的子節(jié)點 false 淺克隆 添加到 ul 最后面 appendChild

6.點擊右側(cè)按鈕,小圓圈跟隨一起變化

在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css
7.點擊左側(cè)按鈕,實現(xiàn)翻轉(zhuǎn)(方法與右側(cè)按鈕類似)
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

8.實現(xiàn)自動播放功能,并且鼠標(biāo)在圖片時,不切換圖片,鼠標(biāo)離開,自動切換圖片
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css
在做好的網(wǎng)頁中添加輪播效,JavaScript,javascript,前端,開發(fā)語言,css3,css

在上面鼠標(biāo)經(jīng)過和鼠標(biāo)離開分別添加停止和開啟定時器的功能

index.js完整源碼文章來源地址http://www.zghlxwxcb.cn/news/detail-776885.html

window.addEventListener('load', function () {


    //獲取左右按鈕
    var arrow_l = document.querySelector('.arrow-l');
    var arrow_r = document.querySelector('.arrow-r');
    var focus = document.querySelector('.focus');
    var focusWidth = focus.offsetWidth;
    //鼠標(biāo)經(jīng)過顯示左右按鈕,停止定時器
    focus.addEventListener('mouseenter', function () {
        arrow_l.style.display = 'block';
        arrow_r.style.display = 'block';
        clearInterval(timer);
        timer = null;//清除定時器
    })
    //鼠標(biāo)離開隱藏按鈕,開啟定時器
    focus.addEventListener('mouseleave', function () {
        arrow_l.style.display = 'none';
        arrow_r.style.display = 'none';
        timer = setInterval(function(){
            //手動調(diào)用點擊事件
            arrow_r.click();
        },2000)
    })
    //動態(tài)生成小圓圈,有幾張圖生成幾個小圓圈,圖的個數(shù)可以通過li的個數(shù)得到
    var ul = focus.querySelector('ul');//ul很多,我們只需要fucus里面的ul
    var ol = focus.querySelector('.circle')
    //通過ul.children.length可以獲得ul中有幾個li,即有幾張圖片
    for (var i = 0; i < ul.children.length; i++) {
        //創(chuàng)建li,把li插入到ol中
        var li = document.createElement('li');
        li.setAttribute('index', i);//自定義設(shè)置小圓圈的索引號
        ol.appendChild(li);

        //生成小圓圈的同時,綁定小圓圈的點擊事件
        li.addEventListener('click', function () {
            //排他思想,先把所有的li全部去除類
            for (var i = 0; i < ol.children.length; i++) {
                ol.children[i].className = '';
            }
            //點擊哪個li就設(shè)置哪個li為current類
            this.className = 'current';
            //點擊小圓圈移動圖片,移動的是ul,不是li
            //ul的移動距離就是小圓圈的索引號乘以圖片的寬度,向左移動,是負(fù)值
            //點擊哪個li,就獲得哪個li的索引號
            var index = this.getAttribute('index');//獲取索引號
            //當(dāng)我們點擊了某個li,就要把當(dāng)前的索引號給num
            num = index;
            //當(dāng)我們點擊了某個li,就要把當(dāng)前的索引號給circle
            circle = index;
            animate(ul, -index * focusWidth);
        })

        //之所以在創(chuàng)建li的時候添加點擊事件是因為,每一個小li都需要添加
        //如果將點擊事件放在for循環(huán)外面,那么只有最后一個li添加了點擊事件
    }

    //把ol中第一個li設(shè)置current類(第一個li默認(rèn)為白色)
    ol.children[0].className = 'current';
    //克隆第一張圖片
    //克隆不會多出一個小圓圈的原因是,我們在生成小圓圈的下面克隆了第一張圖片,因此不會在多出小圓圈
    var first = ul.children[0].cloneNode(true);//深拷貝
    ul.appendChild(first);
    var num = 0;
    //點擊右側(cè)按鈕,圖片滾動
    var circle = 0;
    arrow_r.addEventListener('click', function () {
        //如果走到最后一張圖片,此時我們的ul要快速復(fù)原,left改為0
        if (num == ul.children.length - 1) {
            ul.style.left = 0;
            num = 0;
        }
        num++;
        animate(ul, -num * focusWidth);
        //點擊右側(cè)按鈕,小圓圈跟隨一起變化 ,可以再聲明一個變量控制小圓圈的播放
        circle++;
        //如果circle ==4,說明我們走到了最后克隆的那張圖片了,此時circle要賦值為0
        if (circle == ol.children.length) {
            circle = 0;
        }
        //先清除其余小圓圈的類名,在留下當(dāng)下小圓圈的類名(排他思想)
        for (var i = 0; i < ol.children.length; i++) {
            ol.children[i].className = '';
        }
        ol.children[circle].className = 'current';

    })

    //左側(cè)按鈕實現(xiàn)向左滾動
    arrow_l.addEventListener('click', function () {
        //如果走到最后一張圖片,此時我們的ul要快速復(fù)原,left改為0
        if (num == 0) {
            num = ul.children.length - 1;
            ul.style.left =  -num * focusWidth + 'px';
        }
        num--;
        animate(ul, -num * focusWidth);
        //點擊右側(cè)按鈕,小圓圈跟隨一起變化 ,可以再聲明一個變量控制小圓圈的播放
        circle--;
        //如果circle <0,第一個小圓圈要改為第四個小圓圈
        if (circle <0) {
            circle = ol.children.length - 1;
        }
        //先清除其余小圓圈的類名,在留下當(dāng)下小圓圈的類名(排他思想)
        for (var i = 0; i < ol.children.length; i++) {
            ol.children[i].className = '';
        }
        ol.children[circle].className = 'current';

    })
    //實現(xiàn)自動播放功能
    var timer = setInterval(function(){
        //手動調(diào)用點擊事件
        arrow_r.click();
    },2000)
 

})

到了這里,關(guān)于PC端網(wǎng)頁特效:輪播圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • html制作網(wǎng)頁案例代碼----(故宮博物館9頁)特效很多

    html制作網(wǎng)頁案例代碼----(故宮博物館9頁)特效很多

    ? 源碼獲取 文末聯(lián)系 ? Web前端開發(fā)技術(shù) 描述 網(wǎng)頁設(shè)計題材,DIV+CSS 布局制作,HTML+CSS網(wǎng)頁設(shè)計期末課程大作業(yè) 茶文化網(wǎng)站 | 中華傳統(tǒng)文化題材 | 京劇文化水墨風(fēng)書畫 | 中國民間年畫文化藝術(shù)網(wǎng)站 | 等網(wǎng)站的設(shè)計與制作 | HTML期末大學(xué)生網(wǎng)頁設(shè)計作業(yè),Web大學(xué)生網(wǎng)頁 HTML:結(jié)構(gòu)

    2024年02月05日
    瀏覽(32)
  • css3+javaScript實現(xiàn)一個左右鐘擺-搖晃的紅燈籠網(wǎng)頁特效

    css3+javaScript實現(xiàn)一個左右鐘擺-搖晃的紅燈籠網(wǎng)頁特效

    css3+javaScript實現(xiàn)一個左右鐘擺-搖晃的紅燈籠網(wǎng)頁特效!前天逛博客時無意中看見了,別人的博客頂部有一個會左右鐘擺的搖晃的紅燈籠,產(chǎn)生了想法,我也想給自己做一個,但是網(wǎng)上找了很多方案,都沒有實現(xiàn)。終于在昨天晚上搜索,找到了利用css3和js一起組合的技術(shù),實現(xiàn)

    2024年01月20日
    瀏覽(24)
  • 10個炫酷特效的網(wǎng)頁寫法(附源碼),拿去就能用,奈斯奈斯

    這是我借鑒其他博主的,給網(wǎng)頁加個背景,給鼠標(biāo)加個特效,“使用簡單”,“效果爆炸”的頁面,分享給大家,如果覺得有幫助可以點贊收藏支持一下,如果能關(guān)注一下就再好不過了。 內(nèi)容轉(zhuǎn)載于 https://blog.csdn.net/m0_64346035/article/details/124436138 目錄 1、鼠標(biāo)點擊彈出愛心 2、

    2024年02月06日
    瀏覽(21)
  • ??創(chuàng)意網(wǎng)頁:HTML5 Canvas技術(shù)實現(xiàn)絢麗多彩的煙花特效教程

    ??創(chuàng)意網(wǎng)頁:HTML5 Canvas技術(shù)實現(xiàn)絢麗多彩的煙花特效教程

    ? 博主: 命運之光 ? ?? 專欄: Python星辰秘典 ?? 專欄: web開發(fā)(簡單好用又好看) ?? 專欄: Java經(jīng)典程序設(shè)計 ?? 博主的其他文章: 點擊進(jìn)入博主的主頁 前言: 歡迎踏入我的Web項目專欄,一段神奇而令人陶醉的數(shù)字世界! ?? 在這里,我將帶您穿越時空,揭開屬于

    2024年02月16日
    瀏覽(29)
  • 情人節(jié)程序員用HTML網(wǎng)頁表白【可愛的節(jié)日賀卡ui動畫特效】 HTML5七夕情人節(jié)表白網(wǎng)頁源碼 HTML+CSS+JavaScript

    情人節(jié)程序員用HTML網(wǎng)頁表白【可愛的節(jié)日賀卡ui動畫特效】 HTML5七夕情人節(jié)表白網(wǎng)頁源碼 HTML+CSS+JavaScript

    這是程序員表白系列中的100款網(wǎng)站表白之一,旨在讓任何人都能使用并創(chuàng)建自己的表白網(wǎng)站給心愛的人看。 此波共有100個表白網(wǎng)站,可以任意修改和使用,很多人會希望向心愛的男孩女孩告白,生性靦腆的人即使那個TA站在眼前都不敢向前表白。說不出口的話就用網(wǎng)頁告訴

    2024年02月02日
    瀏覽(110)
  • uniapp 在 H5、App、微信小程序中使用 svga 格式動畫詳細(xì)示例教程,附插件源碼及示例源碼(常見于網(wǎng)頁直播刷禮物特效功能)

    兼容 h5 網(wǎng)頁,微信小程序 和 App。 本文詳細(xì)講解在 uni-app項目中,如何實現(xiàn) svga 格式動畫的引入及展示。 組件源碼及使用文檔都有! 你直接復(fù)制本文的源碼,即可得到封裝好的 svga 組件,樣式隨便更改:

    2024年02月10日
    瀏覽(239)
  • ??創(chuàng)意網(wǎng)頁:打造簡潔美觀的網(wǎng)頁輪播圖(HTML簡單實現(xiàn)輪播圖)操作簡單可以直接使用

    ??創(chuàng)意網(wǎng)頁:打造簡潔美觀的網(wǎng)頁輪播圖(HTML簡單實現(xiàn)輪播圖)操作簡單可以直接使用

    ? 博主: 命運之光 ?? 專欄: Python星辰秘典 ?? 專欄: web開發(fā)(簡單好用又好看) ?? 專欄: Java經(jīng)典程序設(shè)計 ?? 博主的其他文章: 點擊進(jìn)入博主的主頁 前言: 歡迎踏入我的Web項目專欄,一段神奇而令人陶醉的數(shù)字世界! ?? 在這里,我將帶您穿越時空,揭開屬于

    2024年02月17日
    瀏覽(21)
  • 移動端網(wǎng)頁輪播圖

    移動端網(wǎng)頁輪播圖

    在制作移動端網(wǎng)頁輪播圖之前,我們先補充一些移動端的基本觸屏事件及事件對象! 1.觸屏事件概述 移動端瀏覽器兼容性比較好,所以我們不需要考慮以前 JS 的兼容性問題,可以放心地使用原生 JS 書寫效果,但是移動端也有自己獨特的地方。比如觸屏事件,Android 和 IOS 都有

    2023年04月08日
    瀏覽(15)
  • 網(wǎng)頁輪播圖制作(html+css+js)

    網(wǎng)頁輪播圖制作(html+css+js)

    ? ? ? ? 目的:用于自己做記錄,記錄制作的過程以及遇到的一些問題。內(nèi)容參考來自b站的up主:黑馬前端 的pink老師JavaScript基礎(chǔ)語法課程。 (1)當(dāng)鼠標(biāo)經(jīng)過輪播圖,左右兩邊的按鈕出現(xiàn),離開則隱藏按鈕; (2)點擊左側(cè)按鈕,圖片向右播放一張,以此類推,右側(cè)同理;

    2024年02月08日
    瀏覽(27)
  • 輪播圖,用vue來寫一個簡單的輪播圖

    輪播圖,用vue來寫一個簡單的輪播圖

    寫的很簡單,就是一個小練習(xí),哈哈哈,下面的幾張圖分別是輪播圖的第一張,中間圖,最后一張的效果圖。 使用了vue 中的屬性綁定 v-bind ,v-show 以及 事件監(jiān)聽 v-on 指令。 思路: 1.vue實例中聲明一個data屬性imgArr,用于存放每張輪播圖的地址, 2.同時定義一個默認(rèn)起始索引in

    2024年02月16日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包