js輪播圖之旋轉(zhuǎn)木馬效果
本文實(shí)例為大家分享了js輪播圖之旋轉(zhuǎn)木馬效果的具體代碼,供大家參考,具體內(nèi)容如下
思路:給定一個(gè)數(shù)組,儲存每張圖片的位置,旋轉(zhuǎn)將位置進(jìn)行替換
左旋轉(zhuǎn):將數(shù)組第一個(gè)數(shù)據(jù)刪除,然后添加到數(shù)組的最后
右旋轉(zhuǎn):將數(shù)組最后一個(gè)數(shù)據(jù)刪除,然后添加到數(shù)組的開頭
先附上效果圖,再來實(shí)現(xiàn)

接下來就是最主要的,封裝原生js動畫函數(shù)
//封裝函數(shù)獲取任意一個(gè)元素的任意屬性的值(兼容ie8)
function getStyle(element, attr) {
return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr];
}
//封裝js變速動畫
function animate(element, json, fn) {
//每次啟動定時(shí)器之前先停止
clearInterval(element.tmId);
element.tmId = setInterval(function () {
var flag = true;
//遍歷對象中的每個(gè)屬性
for (var attr in json) {
//執(zhí)行透明度動畫
if (attr == "opacity") {
//獲取當(dāng)前元素的屬性值
var current = parseInt(getStyle(element, attr)*100);
//獲取目標(biāo)值
var target = json[attr]*100;
//移動的步數(shù)
var step = (target - current) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移動后的值
current += step;
element.style[attr] = current / 100;
} else if (attr == "zIndex") {
//改變層級屬性
element.style[attr] = json[attr];
} else {
//獲取當(dāng)前元素的屬性值
var current = parseInt(getStyle(element, attr));
//獲取目標(biāo)值
var target = json[attr];
//移動的步數(shù)
var step = (target - current) / 10;
step = step > 0 ? Math.ceil(step) : Math.floor(step);
//移動后的值
current += step;
element.style[attr] = current + "px";
if (current != target) {
flag = false;
}
}
}
if (flag) {
clearInterval(element.tmId);
//如果有回調(diào)函數(shù)就調(diào)用
if (fn) fn();
}
// 測試
// console.log("目標(biāo):" + target + "/當(dāng)前:" + current + "/步數(shù):" + step);
}, 20);
}
封裝完函數(shù),剩下的直接調(diào)用就可以了,最后附上旋轉(zhuǎn)木馬完整代碼?
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>旋轉(zhuǎn)木馬輪播圖</title>
<link rel="stylesheet" href="css/css(1).css" rel="external nofollow" />
<script src="common.js"></script>
<script>
var config = [
{
width: 400,
top: 20,
left: 50,
opacity: 0.2,
zIndex: 2
},//0
{
width: 600,
top: 70,
left: 0,
opacity: 0.8,
zIndex: 3
},//1
{
width: 800,
top: 100,
left: 200,
opacity: 1,
zIndex: 4
},//2
{
width: 600,
top: 70,
left: 600,
opacity: 0.8,
zIndex: 3
},//3
{
width: 400,
top: 20,
left: 750,
opacity: 0.2,
zIndex: 2
}//4
];
window.onload = function () {
var flag = true;
var list = $query("#slide").getElementsByTagName("li");
function flower() {
//1、圖片散開
for (var i = 0; i < list.length; i++) {
//設(shè)置每個(gè)li的寬,透明度,left,top,zindex
animate(list[i], config[i], function () {
flag = true;
});
}
}
flower();//初始化調(diào)用函數(shù)
//按鈕的顯示與隱藏
$query("#slide").onmouseover = function () {
$query("#arrow").style.opacity = "1";
}
$query("#slide").onmouseout = function () {
$query("#arrow").style.opacity = "0";
}
//點(diǎn)擊切換
$query("#arrLeft").onclick = function () {
if (flag) {
config.unshift(config.pop());
flower();
flag = false;
}
}
$query("#arrRight").onclick = function () {
if (flag) {
config.push(config.shift());
flower();
flag = false;
}
}
//自動切換
setInterval(function () {
config.push(config.shift());
flower();
}, 2000);
}
</script>
</head>
<body>
<div class="wrap" id="wrap">
<div class="slide" id="slide">
<ul>
<li><a href="#"><img src="images/slidepic1.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/slidepic2.jpg" alt=""/></a></li>
<li><a href="#" ><img src="images/slidepic3.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/slidepic4.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/slidepic5.jpg" alt=""/></a></li>
</ul>
<div class="arrow" id="arrow">
<a href="javascript:void(0);" class="prev" id="arrLeft"></a>
<a href="javascript:void(0);" class="next" id="arrRight"></a>
</div>
</div>
</div>
</body>
</html>
精彩專題分享:jQuery圖片輪播 JavaScript圖片輪播 Bootstrap圖片輪播
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
原生JS實(shí)現(xiàn)Ajax跨域請求flask響應(yīng)內(nèi)容
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)Ajax跨域請求flask響應(yīng)內(nèi)容,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
JavaScript純前端實(shí)現(xiàn)語音播報(bào)和朗讀功能
這篇文章主要為大家詳細(xì)介紹了JavaScript純前端實(shí)現(xiàn)語音播報(bào)和朗讀功能的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
基于Marquee.js插件實(shí)現(xiàn)的跑馬燈效果示例
這篇文章主要介紹了基于Marquee.js插件實(shí)現(xiàn)的跑馬燈效果,結(jié)合實(shí)例形式給出了Marquee.js插件的定義及具體使用方法,需要的朋友可以參考下2017-01-01
為什么JavaScript中0.1 + 0.2 != 0.3
這篇文章主要給大家介紹了關(guān)于為什么JavaScript中0.1 + 0.2 != 0.3的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
某頁碼顯示的helper 少量調(diào)整,另附j(luò)s版
某頁碼顯示的helper 已經(jīng)少量調(diào)整,另附j(luò)s版,需要的朋友可以參考下。2010-09-09
js登錄滑動驗(yàn)證的實(shí)現(xiàn)(不滑動無法登陸)
下面小編就為大家分享一篇js登錄滑動驗(yàn)證的實(shí)現(xiàn)(不滑動無法登陸),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01

