关于touchslider.js滑动切换页面的使用简介--注解版
test.html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<title>jQuery手机触屏Tab选项卡代码 - 注释版</title>
<style type="text/css">
body,
td,
th,
ul,
li {
padding: 0;
margin: 0;
}
a {
color: #333;
text-decoration: none;
cursor: pointer;
}
.find_nav {
width: 100%;
height: 70px;
background-color: #f9f9f9;
position: fixed;
top: 0;
z-index: 9999;
border-bottom: 1px solid #ddd;
display: -moz-box;
display: -webkit-box;
display: box;
}
.find_nav_left {
height: 70px;
position: relative;
overflow: hidden;
-moz-box-flex: 1;
-webkit-box-flex: 1;
box-flex: 1;
}
.find_nav_list {
position: absolute;
left: 0;
}
.find_nav_list ul {
position: relative;
white-space: nowrap;
font-size: 0;
}
.find_nav_list ul li {
display: inline-block;
padding: 0;
margin: 0 20px;
}
.find_nav_left ul li a {
display: block;
width: 100%;
height: 100%;
line-height: 70px;
font-size: 24px;
text-align: center;
color: #666;
}
.find_nav_cur a {
color: #48a5f4 !important;
}
.find_nav_list a.active {
color: #c00
}
.sideline {
display: block;
position: absolute;
border: 0;
height: 2px;
background-color: #48a5f4;
left: 0;
top: 68px;
pointer-events: none;
}
.li_list {
min-height: 800px;
font-size: 40px;
line-height: 800px;
color: #fff;
text-align: center;
}
.swipe {
padding: 70px 0 0 0;
}
</style>
</head>
<body>
<div class="find_nav">
<div class="find_nav_left">
<div class="find_nav_list" id="pagenavi1">
<ul>
<li><a href="#" class="active">第一个</a></li>
<li><a href="#">第二个字数长一点</a></li>
<li><a href="#">第三个</a></li>
<li class="sideline"></li>
</ul>
</div>
</div>
</div>
<div id="slider1" class="swip">
<ul class="box01_list">
<li class="li_list" style="background:#333">1</li>
<li class="li_list" style="background:#75b140">2</li>
<li class="li_list" style="background:#4053b1">3</li>
</ul>
</div>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/touchslider.js"></script>
<script type="text/javascript">
// 初始化
var fl_w = $(".find_nav_list").width();
var flb_w = $(".find_nav_left").width();
$(".find_nav_list li").each(function () {
$(".find_nav_list li").eq(0).addClass("find_nav_cur").siblings().removeClass("find_nav_cur");
})
var nav_w = $(".find_nav_list li").first().width();
$(".sideline").width(nav_w);
$(".find_nav_list li").on("click", function () {
// 点击样式的替换
nav_w = $(this).width();
$(".sideline").stop(true);
$(".sideline").animate({ left: $(this).position().left }, 300);
$(".sideline").animate({ width: nav_w });
$(this).addClass("find_nav_cur").siblings().removeClass("find_nav_cur");
// 内容超出时导航栏自动滑动
var fn_w = ($(".find_nav").width() - nav_w) / 2;
var fnl_1;
var fnl_x = parseInt($(this).position().left);
if (fnl_x <= fn_w) {
fnl_l = 0;
} else if (fn_w - fnl_x <= flb_w - fl_w) {
fnl_l = flb_w - fl_w;
} else {
fnl_l = fn_w - fnl_x;
}
$(".find_nav_list").animate({
"left": fnl_l
}, 300);
});
// 设置导航栏可触屏滑动
var x1, y1, ty_left;
$(".find_nav_list").on('touchstart', function (e) {
var touch1 = e.originalEvent.targetTouches[0];
x1 = touch1.pageX;
y1 = touch1.pageY;
ty_left = parseInt($(this).css("left"));
});
$(".find_nav_list").on('touchmove', function (e) {
var touch2 = e.originalEvent.targetTouches[0];
var x2 = touch2.pageX;
var y2 = touch2.pageY;
if (ty_left + x2 - x1 >= 0) {
$(this).css("left", 0);
} else if (ty_left + x2 - x1 <= flb_w - fl_w) {
$(this).css("left", flb_w - fl_w);
} else {
$(this).css("left", ty_left + x2 - x1);
}
if (Math.abs(y2 - y1) > 0) {
e.preventDefault();
}
});
var page = 'pagenavi1';
// var mslide = 'slider1';
// var mtitle = 'emtitle1';
// arrdiv = 'arrdiv1';
var as = document.getElementById(page).getElementsByTagName('a');
var tt = new TouchSlider({
id: 'slider1', 'auto': '-1', fx: 'ease-out', direction: 'left', speed: 600, timeout: 5000, 'before': function (index) {
// 取消传参
// var as = document.getElementById(this.page).getElementsByTagName('a');
// as[this.p].className = '';
// this.p = index;
// 出发导航栏点击样式的替换
var as = document.getElementById(page).getElementsByTagName('a');
as[0].className = '';
fnl_x = parseInt($(".find_nav_list li").eq(index).position().left);
nav_w = $(".find_nav_list li").eq(index).width();
$(".sideline").stop(true);
$(".sideline").animate({ left: $(".find_nav_list li").eq(index).position().left }, 300);
$(".sideline").animate({ width: nav_w }, 100);
$(".find_nav_list li").eq(index).addClass("find_nav_cur").siblings().removeClass("find_nav_cur");
// 内容超出时导航栏自动滑动
var fn_w = ($(".find_nav").width() - nav_w) / 2;
var fnl_l;
if (fnl_x <= fn_w) {
fnl_l = 0;
} else if (fn_w - fnl_x <= flb_w - fl_w) {
fnl_l = flb_w - fl_w;
} else {
fnl_l = fn_w - fnl_x;
}
$(".find_nav_list").animate({
"left": fnl_l
}, 300);
}
});
// 传参
// tt.page = page;
// tt.p = 0;
//console.dir(tt); console.dir(tt.__proto__);
// 关联点击事件和滑动事件:点击(onclick)的时候出发滑动(slide)
for (var i = 0; i < as.length; i++) {
(function () {
var j = i;
as[j].tt = tt;
as[j].onclick = function () {
this.tt.slide(j);
return false;
}
})();
}
// 关联点击事件和滑动事件--方法二
// for (var i = 0; i < as.length; i++) {
// as[i].tt = tt;
// as[i].index = i;
// as[i].onclick = function () {
// console.log(i);
// console.log(this.index);
// this.tt.slide(this.index);
// return false;
// }
// }
</script>
</body>
</html>
具体代码下载链接:源码下载