天天看点

swiper tab导航切换+点击按钮切换相对slide容器

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport"
			content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover" />
		<title>首页</title>
		<script src="js/jquery-1.11.2.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/swiper.min.js"></script>
		//1rem = 100px;
		<script src="js/rem.js" type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" type="text/css" href="css/swiper.min.css" />
		<style>
			* {
				padding: 0;
				margin: 0;
				font-size: 0.2rem;
				color: #333;
			}

			html {
				background: #fff;
			}

			a {
				text-decoration: none;
			}

			body {
				width: 100%;
				margin: 0 auto;
				position: relative;
				background: #ccc;
				overflow: hidden;
			}

			img {
				width: 100%;
				border: 0;
			}

			li {
				list-style: none;
			}

			.head-top {
				height: 0.36rem;
				position: fixed;
				top: 0;
				left: 0;
				text-align: center;
				width: 100%;
				line-height: 0.36rem;
			}

			/* .swiper-containee {
				max-width: 640px;
			} */

			#nav {
				margin-top: 36px;
				border-bottom: 1px solid #999;
				padding: 10px;
				font-size: 0.14rem;
			}

			#nav li {
				width: 20% !important;
				text-align: center;
			}

			.active-nav {
				color: orangered;
			}

			.active-nav a {
				color: orangered;
				border-bottom: 1px solid red;
			}

			.active{
				background-color: red;
			}
		</style>
	</head>
	<body>
		<button type="button" class="btn" data-index='0' onclick="slideToLoop(this)">按钮</button>
		<button type="button" class="btn" data-index='1' onclick="slideToLoop(this)">按钮2</button>
		<div id="header">
		        <div class="head-top">
		            <h3>商品分类</h3>
		        </div>
		        <div id="nav" class="swiper-container">
		            <ul class="swiper-wrapper">
		                <li class="swiper-slide active-nav"><a href="javascript:;">正前</a></li>
		                <li class="swiper-slide"><a href="javascript:;">左前</a></li>
		                <li class="swiper-slide"><a href="javascript:;">右前</a></li>
		                <li class="swiper-slide"><a href="javascript:;">左后</a></li>
		                <li class="swiper-slide"><a href="javascript:;">右后</a></li>
		                <li class="swiper-slide"><a href="javascript:;">正前</a></li>
		                <li class="swiper-slide"><a href="javascript:;">左前</a></li>
		                <li class="swiper-slide"><a href="javascript:;">左后</a></li>
		                <li class="swiper-slide"><a href="javascript:;">右后</a></li>
						 <li class="swiper-slide"><a href="javascript:;">右后</a></li>
		            </ul>
		        </div>
		    </div>
		    <div id="page" class="swiper-container">
		        <div class="swiper-wrapper">
		            <div class="swiper-slide slidepage">手机</div>
		            <div class="swiper-slide slidepage">厨具</div>
		            <div class="swiper-slide slidepage">数码</div>
		            <div class="swiper-slide slidepage">家纺</div>
		            <div class="swiper-slide slidepage">生鲜</div>
		            <div class="swiper-slide slidepage">家用电器</div>
		            <div class="swiper-slide slidepage">食品饮料</div>
		            <div class="swiper-slide slidepage">电脑/办公</div>
		            <div class="swiper-slide slidepage">家用日用</div>
					 <li class="swiper-slide"><a href="javascript:;">右后</a></li>
		        </div>
		    </div>
		    <script>
		        var myNav = new Swiper('#nav', {
					//导航条之间的距离
		            spaceBetween: 10,
					//设置slider容器能够同时显示的slides数量,可设置个数(1,2,3,4,5),auto最好设置width: x% !important;
		            slidesPerView :'auto',
					//进度条
		            watchSlidesProgress : true,
					//与上配合使用
		            watchSlidesVisibility : true,
		            on:{
		                tap: function(){
							//点击时获取内容页index,跳转容器
		                    myPage.slideTo( myNav.clickedIndex)
		                }
		            }
		        })
		        var myPage = new Swiper('#page', {
				on: {
					//swiper从当前slide开始过渡到另一个slide时执行
					slideChangeTransitionStart: function() {
						updateNavPosition()
					},
					slideChangeTransitionEnd: function() {
						var activeIndex = this.activeIndex;//切换结束时,告诉我现在是第几个slide
						reverseSlideToLoop(activeIndex)
					}
				}
			})
		        //点击按钮跳转相对slide容器
				function slideToLoop(el) {
					var index =$(el).attr('data-index');
					myNav.slideToLoop(index, 100, false);
					$('#nav .swiper-slide').eq(index).addClass('active-nav').siblings().removeClass('active-nav');
					myPage.slideToLoop(index, 100, false);
				}
				//反向跳转 根据容器 跳转相对导航栏
				function  reverseSlideToLoop(index){
					$('.btn').eq(index).addClass('active').siblings().removeClass('active')
				}
		        function updateNavPosition(){
		            $('#nav .active-nav').removeClass('active-nav');
		            var activeNav = $('#nav .swiper-slide').eq(myPage.activeIndex).addClass('active-nav');
		            if (!activeNav.hasClass('swiper-slide-visible')) {
		                if (activeNav.index()>myNav.activeIndex) {
		                    var thumbsPerNav = Math.floor(myNav.width/activeNav.width())-1
		                    myNav.slideTo(activeNav.index()-thumbsPerNav)
		                }
		                else {
		                    myNav.slideTo(activeNav.index())
		                }   
		            }
		        }
		    </script>
	</body>
</html>

           

继续阅读