簡(jiǎn)單實(shí)現(xiàn)js輪播圖效果
本文實(shí)例為大家分享了js實(shí)現(xiàn)輪播圖效果展示的具體代碼,供大家參考,具體內(nèi)容如下
html結(jié)構(gòu)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
*{
margin:0;
padding:0;
font-size:14px;
-webkit-user-select:none;
}
ul,li{
list-style:none;
}
img{
display:block;
border:none;
}
a{
display:block;
color:#000;
text-decoration: none;
}
a:hover,a:active,a:visited,a:target{
display:block;
color:#000;
text-decoration: none;
}
.banner{
position:relative;
margin:0 auto;
width:1000px;
height:300px;
overflow:hidden;
}
.banner .inner{
position:absolute;
top:0;
left:0;
height:300px;
width:1000px;/*在JS數(shù)據(jù)綁定結(jié)束后根據(jù)請(qǐng)求數(shù)據(jù)的多少來動(dòng)態(tài)調(diào)整寬度*/
}
.banner .inner div{
float:left;
width:1000px;
height:300px;
background:url('img/default.gif') no-repeat center center #e1e1e1;
}
.banner .inner img{
display:none;
width:100%;
height:100%;
opacity:0;
filter:alpha(opacity=0);
}
.banner .bannerTip{
height:18px;
position:absolute;
right:20px;
bottom:20px;
}
.banner .bannerTip li{
float:left;
margin-left:10px;
width:18px;
height:18px;
border-radius:50%;
background:lightblue;
cursor:pointer;
}
.banner .bannerTip li.bg{
background:red;
}
.banner a{
display:none;
position:absolute;
top:50%;
margin-top:-22.5px;
width:30px;
height:45px;
background-image:url("img/pre.png");
background-repeat:no-repeat;
opacity:0.5;
filter:alpha(opacity=50);
}
.banner a:hover{
opacity:1;
filter:alpha(opacity=100);
}
.banner a.bannerLeft{
left:20px;
background-position:0 0;
}
.banner a.bannerRight{
right:20px;
background-position:-45px 0;
}
</style>
</head>
<body>
<div class='banner' id='banner'>
<div class='inner'>
<div><img src="img/banner1.jpg" alt=""></div>
<div><img src="img/banner2.jpg" alt=""></div>
<div><img src="img/banner3.jpg" alt=""></div>
<div><img src="img/banner4.jpg" alt=""></div>
</div>
<ul class='bannerTip'>
<li class='bg'></li>
<li></li>
<li></li>
<li></li>
</ul>
<a href="javascript:;" class='bannerLeft'></a>
<a href="javascript:;" class='bannerRight'></a>
</div>
</body>
</html>
js
(function(){
var banner = document.getElementById('banner');
var bannerInner = utils.firstChild(banner);
var bannerTip = utils.children(banner,'ul')[0];
var imgList = bannerInner.getElementsByTagName('img');
var oLis = bannerTip.getElementsByTagName('li');
var bannerLeft = utils.children(banner,'a')[0];
var bannerRight = utils.children(banner,'a')[1];
//實(shí)現(xiàn)數(shù)據(jù)綁定:Ajax請(qǐng)求數(shù)據(jù)、按照字符串拼接的方式綁定數(shù)據(jù)
var jsonData = null,count = null
~function(){
var xhr = new XMLHttlRequest;
xhr.open('get',"json/banner.txt?_="+Math.random(),false);
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)){
jsonData = utils.formatJSON(xhr.responseText);
}
}
xhr.send(null);
}()
~function(){
//綁定輪播圖區(qū)域的數(shù)據(jù)
var str = "";
if(jsonData){
for(var i = 0,len = jsonData.length;i<len;i++){
str+='<div><img src="" trueImg="'+jsonData[i]['img']+'"></div>'
}
//為了實(shí)現(xiàn)無縫滾動(dòng),需要把第一張克隆一份放在末尾
str+= '<div><img src="" trueImg="'+jsonData[0]['img']+'"></div>'
}
bannerInner.innerHTML = str;
count = jsonData.length+1;
utils.css(bannerInner,"width",count*1000);
//綁定焦點(diǎn)區(qū)域的數(shù)據(jù)
str = '';
if(jsonData){
for(var i = 0,len = jsonData.length;i<len;i++){
i===0?str+='<li class="bg"></li>':str+='<li></li>';
}
}
bannerTip.innerHTML = str;
}()
//圖片延遲加載
function lazyImg(){
for(var i = 0,len = imgList.length;i<len;i++){
~function(i){//這里使用閉包,來避免onload事件異步導(dǎo)致的只有最后一張圖片延遲加載的問題
var curImg = imgList[i];
var oImg = new Image;
oImg.src = curImg.getAttribute('trueImg');
oImg.onload = function(){
curImg.src = this.src;
curImg.style.display = "block";
oImg = null;
myAnimate(curImg,{opacity:1},300)
}
}(i)
}
}
window.setTimeout(lazyImg,500);
var step = 0;//記錄的是步長(zhǎng),(當(dāng)前是哪一張圖片,0是第一張圖片)
//實(shí)現(xiàn)自動(dòng)輪播
var autoTimer = window.setInterval(autoMove,2000);
function autoMove(){
if(step===count-1){
step =0;
bannerInner.style.left = 0
}
step++;
myAnimate(bannerInner,{left:-step*1000},500)
changeTip();
}
//實(shí)現(xiàn)焦點(diǎn)對(duì)齊
function changeTip(){
var tempStep = step > oLis.length-1 ? 0 : step;
for(var i = 0,len = oLis.length;i<len;i++){
var curLi = oLis[i];
i === tempStep ? utils.addClass(curLi,"bg") : utils.removeClass(curLi,"bg")
}
}
//鼠標(biāo)滑過停止和開啟輪播
banner.onmouseover = function(){
window.clearInterval(autoTimer);
bannerLeft.style.display = bannerRight.style.display = 'block';
}
banner.onmouseout = function(){
autoTimer = window.setInterval(autoTimer,2000);
bannerLeft.style.display = bannerRight.style.display = 'none';
}
//點(diǎn)擊焦點(diǎn)實(shí)現(xiàn)輪播圖的切換
~function(){
for(var i = 0,len = oLis.length;i<len;i++){
var curLi = oLis[i];
curLi.index = i;
curLi.onclick = function(){
step = this.index;
changeTip();
myAnimate(bannerInner,{left:-step*1000},500)
}
}
}()
//實(shí)現(xiàn)左右切換
bannerRight.onclick = autoMove();
bannerLeft.onclick = function(){
if(step<=0){
step = count-1;
utils.css(bannerInner,"left",-step*1000);
}
step--;
autoMove();
}
})()
綁定的數(shù)據(jù)
[
{"img":"img/banner1.jpg","desc":"第一張輪播圖"},
{"img":"img/banner2.jpg","desc":"第二張輪播圖"},
{"img":"img/banner3.jpg","desc":"第三張輪播圖"},
{"img":"img/banner4.jpg","desc":"第四張輪播圖"}
]
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- js實(shí)現(xiàn)支持手機(jī)滑動(dòng)切換的輪播圖片效果實(shí)例
- js實(shí)現(xiàn)點(diǎn)擊左右按鈕輪播圖片效果實(shí)例
- zepto中使用swipe.js制作輪播圖附swipeUp,swipeDown不起效果問題
- JS實(shí)現(xiàn)左右無縫輪播圖代碼
- 原生js實(shí)現(xiàn)移動(dòng)開發(fā)輪播圖、相冊(cè)滑動(dòng)特效
- 簡(jiǎn)單的JS輪播圖代碼
- js 基礎(chǔ)篇必看(點(diǎn)擊事件輪播圖的簡(jiǎn)單實(shí)現(xiàn))
- 利用AngularJs實(shí)現(xiàn)京東首頁輪播圖效果
- 原生js實(shí)現(xiàn)無限循環(huán)輪播圖效果
- 原生js實(shí)現(xiàn)輪播圖的示例代碼
相關(guān)文章
利用 JavaScript 實(shí)現(xiàn)并發(fā)控制的示例代碼
這篇文章主要介紹了利用 JavaScript 實(shí)現(xiàn)并發(fā)控制的示例代碼,本文通過實(shí)例代碼給大家介紹的非常想詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
js實(shí)現(xiàn)網(wǎng)頁定位導(dǎo)航功能
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)網(wǎng)頁定位導(dǎo)航功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
JS實(shí)現(xiàn)骰子3D旋轉(zhuǎn)效果
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)骰子3D旋轉(zhuǎn)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10
js實(shí)現(xiàn)點(diǎn)擊鏈接后延遲3秒再跳轉(zhuǎn)的方法
這篇文章主要介紹了js實(shí)現(xiàn)點(diǎn)擊鏈接后延遲3秒再跳轉(zhuǎn)的方法,通過javascript的setTimeout方法實(shí)現(xiàn)延遲跳轉(zhuǎn)的功能,需要的朋友可以參考下2015-06-06
Javascript創(chuàng)建Silverlight Plugin以及自定義nonSilverlight和lowSilverl
我們?cè)谑褂肰isual Studio IDE創(chuàng)建Silverlight工程時(shí),默認(rèn)情況下都會(huì)自動(dòng)生成一個(gè)用于調(diào)試和預(yù)覽Silverlight的Web工程,該工程包含了html和aspx頁面,以及Silverlight.js腳本文件。2010-06-06
JavaScript中類型的強(qiáng)制轉(zhuǎn)換與隱式轉(zhuǎn)換詳解
類型強(qiáng)制Coercion是將值從一種類型轉(zhuǎn)換為另一種類型的過程(例如字符串轉(zhuǎn)換為數(shù)字,對(duì)象轉(zhuǎn)換為布爾值等),下面這篇文章主要給大家給大家介紹了JavaScript中類型的強(qiáng)制轉(zhuǎn)換與隱式轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2021-08-08
微信小程序?qū)W習(xí)之?dāng)?shù)據(jù)處理詳解
這篇文章主要給大家介紹了關(guān)于微信小程序中數(shù)據(jù)處理的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來一起看看吧。2017-07-07

