<!DOCTYPE html>css
<html>html
<head>java
<meta charset="utf-8">web
<meta content="yes" name="apple-mobile-web-app-capable">app
<meta content="yes" name="apple-touch-fullscreen">函數
<meta content="telephone=no,email=no" name="format-detection">學習
<style type="text/css">字體
body,dl,h1,h3,h5,h6,hr,p,pre {flex
margin:0;動畫
}
th,td,input,textarea {
padding:0;
}
ol,ul {
margin:0;
padding:0;
list-style:none;
}
input,button {
-webkit-appearance:none;
}
a {
text-decoration:none;
}
.clearfix:after {
content:"200B";
display:block;
height:0;
clear:both;
}
/*banner,滾動圖*/
.banner {
position:relative;
width:100%;
height:4.1rem;
}
.bannerbox,.bannerindex {
position:absolute;
}
.bannerbox {
top:0;
left:0;
right:0;
bottom:0;
z-index:1;
overflow:hidden;
}
.bannerlist {
position:relative;
width:31rem;
overflow:hidden;
}
.bannerlist a {
float:left;
}
.bannerlist img {
display:block;
width:10rem;
height:4.11rem;
border:none;
}
.bannerindex {
right:0;
bottom:.3rem;
/*width:100%*/;
z-index:2;
font-size:0;
text-align:center;
}
.bannerindex li {
display:inline-block;
margin:0 .16rem;
width:.15rem;
height:.15rem;
border-radius:.2rem;
}
.bannerindex li.thisindex {
}
.test{
font-size: 0.2rem;
line-height: 0.4rem;
color: #7297FF;
text-align: center;
}
</style>
<!-- 自適應 -->
<s cript type="text/javas cript">
(function (_window) {
// 計算dpr
var navigatorUserAgent = navigator.userAgent;
var iPhone = navigatorUserAgent.indexOf("iPhone");
if (iPhone > -1) {
var dpr = Number(window.devicePixelRatio),
one_dpr = 1 / dpr;
} else {
var dpr = 1,
one_dpr = 1;
}
var writeText = "<meta name="viewport" content="width=device-width,initial-scale=" + one_dpr + ",maximum-scale=" + one_dpr + ",minimum-scale=" + one_dpr + ",user-scalable=no">n <meta name="'flexible" content="initial-dpr=" + dpr + "">";
document.write(writeText);
// 計算字體大小
var html = document.getElementsByTagName("html");
var F0 = 75;
html[0].setAttribute("data-dpr", dpr);
var getFontSize = function getFontSize() {
var windowWidth = window.innerWidth;
html[0].style.fontSize = F0 * windowWidth / 750 + "px";
};
// 初始化
getFontSize();
_window.addEventListener("resize", getFontSize, false);
})(window);
</s cript>
</head>
<body>
<!--輪播圖-->
<div class="banner">
<div id="bannerbox" class="bannerbox">
<div id="bannerlist" class="bannerlist clearfix">
<a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267189949&di=0574aa7d15bd0e2756f895c082d965c4&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2Fqk%2Fback_origin_pic%2F00%2F02%2F32%2F22742a569c2dfdba8d4943ab9422b024.jpg"/></a>
<a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267224293&di=3733ca596dc466534c438282bc474f0d&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2F00%2F00%2F69%2F40%2F2f98a6cd604d1e03c9ec4d07db019ff0.jpg"/</a>
<a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267238025&di=798d47938625766187b325c1d7e5bf7c&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2Fqk%2Fback_origin_pic%2F00%2F02%2F73%2F22f3f0857d23a5beff98ee5d35ae4e5a.jpg"/></a>
<a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267237968&di=a0cfeba6d6385d131c9d43da1df92546&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F01c70757c000b50000012e7e3b1d40.jpg%40900w_1l_2o_100sh.jpg"/></a>
<a href="#"><img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490267238025&di=0625f052fb428dccbadadeea05ccde32&imgtype=0&src=http%3A%2F%2Fpic.90sjimg.com%2Fback_pic%2F00%2F00%2F69%2F40%2F197fc7596ea416d86b027e3b945b6e04.jpg"/></a>
</div>
</div>
<ol id="bannerindex" class="bannerindex">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ol>
</div>
<div class="test">banner—swiper</div>
<!--輪播效果-->
<s cript >
var bannerList = document.getElementById("bannerlist"),
img = bannerList.getElementsByTagName("a"),
bannerIndex = document.getElementById("bannerindex").getElementsByTagName("li"),
bannerBox = document.getElementById("bannerbox"); //touch事件容器
var index = 0,
// 當前索引
maxIndex = img.length - 1,
//最大索引
classname = "thisindex";
var setmain,
// 輪播主體定時器
setframe,
// 連續運動定時器
time = 4000,
// 連續間隔時間
animationIng = 0; // 判斷輪播連續運動定時器是否存在
// 速度和單位
var velocit = 0.65;
var metric = "rem";
// touch事件相關函數
var start = {};
start.x = "";
start.right = "";
start.time = "";
var end = {};
end.x = "";
var html = document.getElementsByTagName("html");
// px to rem
var px2rem = function px2rem(px) {
return px / parseFloat(html[0].style.fontSize);
};
// touchstart
var bannerStartFun = function bannerStartFun(event) {
if (animationIng == 0) {
animationIng = 1;
clearTimeout(setmain);
var e = event.touches[0];
start.x = e.pageX;
start.right = parseFloat(bannerList.style.right);
start.time = +new Date();
document.addEventListener("touchmove", bannerMoveFun, false);
document.addEventListener("touchend", bannerEndFun, false);
}
};
// touchmove
var bannerMoveFun = function bannerMoveFun(event) {
event.preventDefault();
var move = function move() {
var e = event.touches[0];
end.x = e.pageX;
var cha = px2rem(end.x - start.x);
bannerList.style.right = start.right - cha + metric;
};
requestAnimationFrame(move);
};
// touchend
var bannerEndFun = function bannerEndFun(event) {
end.time = +new Date();
if (end.time - start.time >= 50) {
var cha = px2rem(end.x - start.x);
if (Math.abs(cha) >= 2) {
cha > 0 ? endFunB() : endFunA();
} else {
endFunC();
}
} else {
endFunC();
}
document.removeEventListener("touchmove", bannerMoveFun);
document.removeEventListener("touchend", bannerEndFun);
};
// touchend判斷並執行相應的函數
// 加加函數
var endFunA = function endFunA() {
bannerIndex[index].classList.remove(classname);
index == maxIndex ? index = 0 : index++;
bannerIndex[index].classList.add(classname);
animation(20, function () {
enlargeCallBack();
animationIng = 0;
setmain = setTimeout(main, time);
});
};
// 減減函數
var endFunB = function endFunB() {
bannerIndex[index].classList.remove(classname);
index == 0 ? index = maxIndex : index--;
bannerIndex[index].classList.add(classname);
animation(0, function () {
reduceCallBack();
animationIng = 0;
setmain = setTimeout(main, time);
});
};
// index不變的函數
var endFunC = function endFunC() {
animation(10, function () {
animationIng = 0;
setmain = setTimeout(main, time);
});
};
// index++回調函數
var enlargeCallBack = function enlargeCallBack() {
bannerList.appendChild(img[0]);
bannerList.style.right = "10" + metric;
};
// index--回調函數
var reduceCallBack = function reduceCallBack() {
bannerList.insertBefore(img[maxIndex], img[0]);
bannerList.style.right = "10" + metric;
};
// 動畫函數
var animation = function animation(target, callback) {
var v = "";
var start = parseFloat(bannerList.style.right);
start < target ? v = +velocit : v = -velocit;
var frame = function frame() {
var right = parseFloat(bannerList.style.right);
if (Math.abs(target - right) > velocit) {
bannerList.style.right = v + right + metric;
setframe = requestAnimationFrame(frame);
} else {
bannerList.style.right = target + metric;
callback ? callback() : "";
}
};
setframe = requestAnimationFrame(frame);
};
// 輪播主函數
var main = function main() {
animationIng = 1;
bannerIndex[index].classList.remove(classname);
index == maxIndex ? index = 0 : index++;
bannerIndex[index].classList.add(classname);
animation(20, function () {
enlargeCallBack();
animationIng = 0;
setmain = setTimeout(main, time);
});
};
// 初始化
var init = function init() {
bannerList.insertBefore(img[maxIndex], img[0]);
bannerList.style.right = "10" + metric;
bannerIndex[0].classList.add(classname);
bannerBox.addEventListener("touchstart", bannerStartFun, false);
setmain = setTimeout(main, time);
};
init();
</s cript>
</html>
學習交流羣617986737