使用JavaScript實(shí)現(xiàn)輪播圖效果
本文實(shí)例為大家分享了JavaScript實(shí)現(xiàn)輪播圖效果的具體代碼,供大家參考,具體內(nèi)容如下
純js,不使用輪播圖控件怎么做輪播圖呢,往下看吧
效果圖:

1.可點(diǎn)擊小圓點(diǎn)切換圖片
2.可點(diǎn)擊左右按鈕切換圖片
3.可自動(dòng)播放
先上CSS和HTML代碼:
<body> ? ? <div class="main"> ? ? ? ? <div class="focus fl"> ? ? ? ? ? ? <a href="javascript:;" class="arrow-l"><</a> ? ? ? ? ? ? <a href="javascript:;" class="arrow-r"> > </a> ? ? ? ? ? ? <ul> ? ? ? ? ? ? ? ? <li> ? ? ? ? ? ? ? ? ? ? <a href="#" ><img src="../02/15輪播圖制作/upload/focus.jpg" alt=""></a> ? ? ? ? ? ? ? ? </li> ? ? ? ? ? ? ? ? <li> ? ? ? ? ? ? ? ? ? ? <a href="#" ><img src="../02/15輪播圖制作/upload/focus1.jpg" alt=""></a> ? ? ? ? ? ? ? ? </li> ? ? ? ? ? ? ? ? <li> ? ? ? ? ? ? ? ? ? ? <a href="#" ><img src="../02/15輪播圖制作/upload/focus2.jpg" alt=""></a> ? ? ? ? ? ? ? ? </li> ? ? ? ? ? ? ? ? <li> ? ? ? ? ? ? ? ? ? ? <a href="#" ><img src="../02/15輪播圖制作/upload/focus3.jpg" alt=""></a> ? ? ? ? ? ? ? ? </li> ? ? ? ? ? ? ? </ul> ? ? ? ? ? ? <ol class="circle"> ? ? ? ? ? ? ? </ol> ? ? ? ? </div> ? ? </div> ? </body>
<style>
? ? ? ? * {
? ? ? ? ? ? padding: 0;
? ? ? ? ? ? margin: 0;
? ? ? ? }
? ? ? ??
? ? ? ? a {
? ? ? ? ? ? text-decoration: none;
? ? ? ? }
? ? ? ??
? ? ? ? ol {
? ? ? ? ? ? list-style: none;
? ? ? ? }
? ? ? ??
? ? ? ? .main {
? ? ? ? ? ? width: 980px;
? ? ? ? ? ? height: 455px;
? ? ? ? ? ? margin-left: 440px;
? ? ? ? ? ? margin-top: 10px;
? ? ? ? }
? ? ? ??
? ? ? ? .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;
? ? ? ? ? ? list-style: none;
? ? ? ? }
? ? ? ??
? ? ? ? .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)過(guò)顯示小手*/
? ? ? ? ? ? cursor: pointer;
? ? ? ? }
? ? ? ??
? ? ? ? .current {
? ? ? ? ? ? background-color: #fff;
? ? ? ? }
?</style>最后就是JS代碼部分了
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)移動(dòng)到圖片上,顯示左右切換的按鈕
? ? focus.addEventListener('mouseenter', function() {
? ? ? ? arrow_l.style.display = 'block';
? ? ? ? arrow_r.style.display = 'block';
? ? //清除定時(shí)器,不再自動(dòng)播放
? ? ? ? clearInterval(timer);
? ? ? ? timer = null; //清除定時(shí)器變量
? ? });
? ? //鼠標(biāo)離開(kāi),左右切換按鈕隱藏
? ? focus.addEventListener('mouseleave', function() {
? ? ? ? arrow_l.style.display = 'none';
? ? ? ? arrow_r.style.display = 'none';
? ? ? ? timer = setInterval(function() {
? ? ? ? ? ? arrow_r.click();
? ? ? ? }, 2000)
? ? });
? ? var ul = focus.querySelector('ul');
? ? var ol = focus.querySelector('.circle');
? ? console.log(ol);
? ? for (var i = 0; i < ul.children.length; i++) {
? ? ? ? var li = document.createElement('li');
? ? //創(chuàng)建自定義屬性index
? ? ? ? li.setAttribute('index', i);
? ? //根據(jù)li(圖片)的個(gè)數(shù)自動(dòng)添加左下角的小圓點(diǎn)
? ? ? ? ol.appendChild(li);
? ? ? ? li.addEventListener('click', function() {
? ? ? ? ? ? for (var i = 0; i < ol.children.length; i++) {
? ? ? ? ? ? ? ? ol.children[i].className = '';
? ? ? ? ? ? }
? ? ? ? ? ? this.className = 'current';
? ? ? ? ? ? var index = this.getAttribute('index');
? ? ? ? ? ? num = index;
? ? ? ? ? ? circle = index;
? ? ? ? ? ? animate(ul, -index * focusWidth);
? ? ? ? })
? ? }
? ? ol.children[0].className = 'current';
? ? var first = ul.children[0].cloneNode(true);
? ? ul.appendChild(first);
? ? var num = 0;
? ? var circle = 0;
? ? var flag = true;
? ? //點(diǎn)擊'>'進(jìn)行圖片向右切換
? ? arrow_r.addEventListener('click', function() {
? ? ? ? if (num == ul.children.length - 1) {
? ? ? ? ? ? ul.style.left = 0;
? ? ? ? ? ? num = 0;
? ? ? ? }
? ? ? ? num++;
? ? ? ? animate(ul, -num * focusWidth);
? ? ? ? circle++;
? ? ? ? if (circle == ol.children.length) {
? ? ? ? ? ? circle = 0;
? ? ? ? }
? ? ? ? circleChange();
? ? });
? ? //點(diǎn)擊'<'進(jìn)行圖片向左切換
? ? arrow_l.addEventListener('click', function() {
? ? ? ? if (num == 0) {
? ? ? ? ? ? num = ul.children.length - 1;
? ? ? ? ? ? ul.style.left = -num * focusWidth + 'px';
? ? ? ? }
? ? ? ? num--;
? ? ? ? animate(ul, -num * focusWidth);
? ? ? ? circle--;
? ? ? ? circle = circle < 0 ? ol.children.length - 1 : circle;
? ? ? ? circleChange()
? ? });
? ? //清除樣式函數(shù),排他思想
? ? function circleChange() {
? ? ? ? for (var i = 0; i < ol.children.length; i++) {
? ? ? ? ? ? ol.children[i].className = '';
? ? ? ? }
? ? ? ? ol.children[circle].className = 'current';
? ? }
? ? //定時(shí)器+click()實(shí)現(xiàn)自動(dòng)播放
? ? var timer = setInterval(function() {
? ? ? ? arrow_r.click();
? ? }, 2000)
?
})以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 原生js實(shí)現(xiàn)輪播圖的示例代碼
- js實(shí)現(xiàn)輪播圖的完整代碼
- js實(shí)現(xiàn)支持手機(jī)滑動(dòng)切換的輪播圖片效果實(shí)例
- JS輪播圖實(shí)現(xiàn)簡(jiǎn)單代碼
- js實(shí)現(xiàn)點(diǎn)擊左右按鈕輪播圖片效果實(shí)例
- 使用html+js+css 實(shí)現(xiàn)頁(yè)面輪播圖效果(實(shí)例講解)
- JS實(shí)現(xiàn)自動(dòng)輪播圖效果(自適應(yīng)屏幕寬度+手機(jī)觸屏滑動(dòng))
- 原生js實(shí)現(xiàn)無(wú)限循環(huán)輪播圖效果
- JS實(shí)現(xiàn)左右無(wú)縫輪播圖代碼
- js實(shí)現(xiàn)從左向右滑動(dòng)式輪播圖效果
相關(guān)文章
JavaScript檢查某個(gè)function是否是原生代碼的方法
經(jīng)常碰到需要檢查某個(gè)function是否是原生代碼,要檢測(cè)這一點(diǎn),最簡(jiǎn)單的辦法當(dāng)然是判斷函數(shù)的 toString 方法返回的值2014-08-08
Bootstrap字體圖標(biāo)無(wú)法正常顯示的解決方法
這篇文章主要為大家詳細(xì)介紹了Bootstrap字體圖標(biāo)無(wú)法正常顯示的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
javascript跨域總結(jié)之window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸
本文給大家介紹window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸,自己親自實(shí)踐了一下,真的非常好用,特此分享到腳本之家網(wǎng)站供大家參考2015-11-11
JavaScript腳本性能優(yōu)化注意事項(xiàng)
本文總結(jié)了我在JavaScript編程中所找到的提高JavaScript運(yùn)行性能的一些方法,其實(shí)這些經(jīng)驗(yàn)都基于幾條原則2008-11-11
JS如何設(shè)置滾動(dòng)屬性默認(rèn)自動(dòng)滾動(dòng)到底部(overflow:scroll;)
這篇文章主要給大家介紹了關(guān)于JS如何設(shè)置滾動(dòng)屬性默認(rèn)自動(dòng)滾動(dòng)到底部(overflow:scroll;)的相關(guān)資料,通過(guò)本文介紹的的JavaScript代碼示例,你可以實(shí)現(xiàn)滾動(dòng)條默認(rèn)在最底部的效果,需要的朋友可以參考下2023-10-10
JS面向?qū)ο缶幊袒A(chǔ)篇(二) 封裝操作實(shí)例詳解
這篇文章主要介紹了JS面向?qū)ο缶幊谭庋b操作,結(jié)合實(shí)例形式詳細(xì)分析了JS面向?qū)ο蠓庋b操作的相關(guān)概念、原理、使用方法與操作注意事項(xiàng),需要的朋友可以參考下2020-03-03
javascript實(shí)現(xiàn)ecshop搜索框鍵盤(pán)上下鍵切換控制
這篇文章主要介紹了javascript實(shí)現(xiàn)ecshop搜索框鍵盤(pán)上下鍵切換控制,需要的朋友可以參考下2015-03-03
Django1.7+JQuery+Ajax驗(yàn)證用戶注冊(cè)集成小例子
下面是散仙使用Django+Jquery+Ajax的方式來(lái)模擬實(shí)現(xiàn)了一個(gè)驗(yàn)證用戶注冊(cè)時(shí),用戶名存在不存在的一個(gè)小應(yīng)用。注意,驗(yàn)證存在不存在使用的是Ajax的方式,不用讓用戶點(diǎn)擊按鈕驗(yàn)證是否存在,需要的朋友可以參考下2017-04-04

