js实现多图左右切换功能


Posted in Javascript onAugust 04, 2016

本文实例为大家分享了js多图左右切换功能,供大家参考,具体内容如下

效果图:

js实现多图左右切换功能

<html>

 <head>
 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <title></title>
 <link rel="stylesheet" href="http://static9.pplive.cn/pub/flagment/v_20150114110035/header.min.css" />
 <!--页面初始化CSS和页面公用头部的css-->
 <style type="text/css">
 @charset "utf-8";
 html,
 body {
 background-color: #f6f5f5;
 }
 
 .vg-body {
 width: 1390px;
 margin: 0 auto;
 }
 /*任务成长值*/
 
 .vg_title {
 font-size: 24px;
 line-height: 24px;
 padding: 20px 0;
 color: #464646;
 }
 
 .vg_task {
 background-color: #fff;
 position: relative;
 }
 
 .vg_task .arrowbtn-left,
 .vg_task .arrowbtn-right {
 position: absolute;
 top: 70px;
 width: 16px;
 height: 20px;
 cursor: pointer;
 }
 
 .vg_task .arrowbtn-left {
 left: 40px;
 border: 1px solid red;
 background: url(../images/arrow-left.png) no-repeat;
 ;
 }
 
 .vg_task .arrowbtn-right {
 right: 40px;border: 1px solid red;
 background: url(../images/arrow-right.png) no-repeat;
 ;
 }
 
 .vg_tasklist {
 width: 1200px;
 overflow: hidden;
 margin: 0 auto;
 }
 
 .vg_tasklist ul {
 width: 999%;
 }
 
 .vg_tasklist li {
 width: 258px;
 height: 130px;
 float: left;
 border: 1px solid #c8c8c8;
 margin: 15px 53px 15px 0;
 position: relative;
 }
 
 .vg_tasklist li .task_hover {
 position: absolute;
 left: -1px;
 top: -1px;
 width: 212px;
 padding: 20px 25px 20px 23px;
 height: 90px;
 border-bottom: 2px solid #e65a5a;
 overflow: hidden;
 background-color: #f0f0f0;
 display: none;
 }
 
 .vg_tasklist li:hover .task_hover {
 display: block;
 }
 
 .task_hover .task_desc {
 font-size: 16px;
 line-height: 20px;
 color: #646464;
 }
 
 .task_hover .task_limittimes {
 font-size: 14px;
 color: #787878;
 float: left;
 padding-top: 12px;
 }
 
 .vg_tasklist li img {
 float: left;
 margin: 22px 8px 20px 20px;
 }
 
 .vg_tasklist li .rightinfo {
 width: 136px;
 float: left;
 text-align: center;
 }
 
 .rightinfo h3 {
 font-size: 16px;
 color: #646464;
 padding-top: 15px;
 }
 
 .rightinfo p {
 font-size: 14px;
 line-height: 26px;
 color: #787878;
 }
 
 .rightinfo a,
 .task_hover a {
 display: block;
 text-align: center;
 width: 96px;
 height: 30px;
 line-height: 30px;
 border: 2px solid #e65a5a;
 border-radius: 5px;
 font-size: 16px;
 font-weight: 700;
 color: #e65a5a;
 }
 
 .task_hover a.done,
 .task_hover a.done:hover {
 background-color: #b4b4b4;
 color: #fff;
 border-color: #b4b4b4;
 cursor: default;
 }
 
 .rightinfo a {
 margin: 12px auto 0;
 }
 
 .task_hover a {
 float: right;
 margin-top: 18px;
 margin-right: -4px;
 }
 
 .task_hover a:hover {
 text-decoration: none;
 background-color: #e65a5a;
 color: #fff;
 }
 /*grid-1230*/
 
 .grid-1230 .vg-body {
 width: 1210px;
 }
 
 .grid-1230 .vg_tasklist {
 width: 1090px;
 }
 
 .grid-1230 .vg_tasklist li {
 margin-right: 16px;
 }
 
 .grid-1230 .vg_task .arrowbtn-left {
 left: 33px;
 }
 
 .grid-1230 .vg_task .arrowbtn-right {
 right: 33px;
 }
 
 .grid-1230 .vg_growth_table {
 padding: 24px 30px;
 }
 
 .grid-1010 .vg-body {
 width: 990px;
 }
 
 .grid-1010 .vg_tasklist {
 width: 850px;
 }
 
 .grid-1010 .vg_tasklist li {
 margin-right: 35px;
 }
 
 .grid-1010 .vg_task .arrowbtn-left {
 left: 30px;
 }
 
 .grid-1010 .vg_task .arrowbtn-right {
 right: 30px;
 }
 
 .grid-1010 .vg_growth_table {
 padding: 24px;
 }
 </style>
 <!--新增样式的css,名称可根据具体需求修改-->
 <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
 <script>
 window.onresize = function() {
 var winWidth = document.body.clientWidth;
 if(winWidth <= 1230) {
  body.className = "grid-1010";
 } else if(winWidth <= 1410) {
  body.className = "grid-1230";
 } else if(winWidth > 1410) {
  body.className = "grid-1410";
 } else {
  alert("do not know!");
 }
 }
 </script>
 </head>

 <body id="body">
 <script>
 //初始化状态显示样式判断,放在body后面
 var winWidth = document.body.clientWidth;
 if(winWidth <= 1230) {
 body.className = "grid-1010";
 } else if(winWidth <= 1410) {
 body.className = "grid-1230";
 } else if(winWidth > 1410) {
 body.className = "grid-1410";
 } else {
 alert("do not know!");
 }
 </script>
 <div class="vg-body">
 <!--任务成长值 开始-->
 <div class="vg_title">
 <p>任务成长值</p>
 </div>
 <div class="vg_task">
 <div class="arrowbtn-left"></div>
 <div class="arrowbtn-right"></div>
 <div class="vg_tasklist">
  <ul class="cf" id="switchPic">
  <li>
  <img src="images/task_year.png">
  <div class="rightinfo">
  <h3>开通年费会员</h3>
  <p>奖励成长值<span>200</span>点</p>
  <a href="javascript:;">已完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;" class="done">已完成</a>
  </div>
  </li>
  <li>
  <img src="images/task_lianxubaoyue.png">
  <div class="rightinfo">
  <h3>开通连续包月</h3>
  <p>奖励成长值<span>10</span>点</p>
  <a href="javascript:;">去完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;">去完成></a>
  </div>
  </li>
  <li>
  <img src="images/task_year.png">
  <div class="rightinfo">
  <h3>升级成为SVIP</h3>
  <p>奖励成长值<span>10</span>点</p>
  <a href="javascript:;">去完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;">去完成></a>
  </div>
  </li>
  <li>
  <img src="images/task_year.png">
  <div class="rightinfo">
  <h3>关注微信公众号</h3>
  <p>奖励成长值<span>10</span>点</p>
  <a href="javascript:;">去完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;">去完成></a>
  </div>
  </li>
  <li>
  <img src="images/task_year.png">
  <div class="rightinfo">
  <h3>任务555555555</h3>
  <p>奖励成长值<span>10</span>点</p>
  <a href="javascript:;">去完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;">去完成></a>
  </div>
  </li>
  <li>
  <img src="images/task_year.png">
  <div class="rightinfo">
  <h3>任务666666666</h3>
  <p>奖励成长值<span>10</span>点</p>
  <a href="javascript:;">去完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;">去完成></a>
  </div>
  </li>
  <li>
  <img src="images/task_year.png">
  <div class="rightinfo">
  <h3>任务7777777</h3>
  <p>奖励成长值<span>10</span>点</p>
  <a href="javascript:;">去完成></a>
  </div>
  <div class="task_hover">
  <p class="task_desc">一次性开通年费会员(12个月及以上)</p>
  <p class="task_limittimes">月限<span>1</span>次</p>
  <a href="javascript:;">去完成></a>
  </div>
  </li>
  </ul>
 </div>
 </div>
 <!--任务成长值 结束-->
 </div>
 </body>
 <script>
 //task growth
 var switchPic = (function() {

 /*
now:当前第几个li
linum:总共几个li
shownum:要展示几个li
w_li:li的宽度
marginR_li:li的右边距
*/
 var now = 1;
 var linum, shownum, offset, w_li, marginR_li, pre, next, wrap;

 function init(o) {
 pre = o.preBtn;
 next = o.nextBtn;
 wrap = o.wrap;
 bindBtn();
 }

 function btnShow() {
 getInfo();
 if(linum <= shownum) { //如果li总个数小于要展示的个数,pre和next都不显示
  pre.hide();
  next.hide();
 } else if(now == 1) { //初始化,只显示next
  pre.hide();
  next.show();
 } else if(now == linum - shownum + 1) { //到最后一组,只显示pre
  pre.show();
  next.hide();
 } else { //中间pre,next都显示。
  pre.show();
  next.show();
 }
 }

 function getInfo() {
 linum = $("#switchPic").find("li").size();
 if($("#body").hasClass("grid-1010")) {
  shownum = 3;
  w_li = wrap.find("li").outerWidth(); //算上了border的宽度
  marginR_li = parseInt(wrap.find("li").css("marginRight"));
  offset = w_li + marginR_li;
 } else if($("#body").hasClass("grid-1230")) {
  shownum = 4;
  w_li = wrap.find("li").outerWidth(); //算上了border的宽度
  marginR_li = parseInt(wrap.find("li").css("marginRight"));
  offset = w_li + marginR_li;
 } else if($("#body").hasClass("grid-1410")) {
  shownum = 4;
  w_li = wrap.find("li").outerWidth(); //算上了border的宽度
  marginR_li = parseInt(wrap.find("li").css("marginRight"));
  offset = w_li + marginR_li;
 }
 }

 function bindBtn() {
 btnShow();
 next.on("click", function() {
  now++;
  btnShow();
  wrap.stop(true).animate({
  "margin-left": -(now - 1) * offset
  });
 });
 pre.on("click", function() {
  now--;
  btnShow();
  wrap.stop(true).animate({
  "margin-left": -(now - 1) * offset
  });
 });

 $(window).resize(function() {
  now = 1;
  btnShow();
  wrap.animate({
  "margin-left": 0
  });
 });
 }
 return {
 init: init
 }
 })();

 switchPic.init({
 preBtn: $(".arrowbtn-left"),
 nextBtn: $(".arrowbtn-right"),
 wrap: $("#switchPic")
 });
 </script>

</html>

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype Function对象 学习
Jul 12 Javascript
jQuery AnythingSlider滑动效果插件
Feb 07 Javascript
再探JavaScript作用域
Sep 24 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
JS获取checkbox的个数简单实例
Aug 19 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
Nov 11 Javascript
关于AngularJs数据的本地存储详解
Jan 20 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
详解在React里使用&quot;Vuex&quot;
Apr 02 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
Aug 12 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
Jul 15 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
window.open打开窗口被拦截的快速解决方法
Aug 04 #Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 #Javascript
JS图片等比例缩放方法完整示例
Aug 03 #Javascript
JS获取url参数、主域名的方法实例分析
Aug 03 #Javascript
JavaScript中的冒泡排序法
Aug 03 #Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 #Javascript
关于数据与后端进行交流匹配(点亮星星)
Aug 03 #Javascript
You might like
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
php接口技术实例详解
2016/12/07 PHP
php如何利用pecl安装mongodb扩展详解
2019/01/09 PHP
鼠标图片振动代码
2006/07/06 Javascript
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
2015/04/02 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
webstorm添加*.vue文件支持
2018/05/08 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
Python3.x对JSON的一些操作示例
2017/09/01 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
12个Python程序员面试必备问题与答案(小结)
2019/06/24 Python
python实现图片压缩代码实例
2019/08/12 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
基于python实现删除指定文件类型
2020/07/21 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
css3使网页、图片变成灰色兼容大多数浏览器
2014/07/02 HTML / CSS
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
秋季运动会广播稿大全
2014/02/17 职场文书
党委工作总结2015
2015/04/27 职场文书
全国助残日活动总结
2015/05/11 职场文书
捐款仪式主持词
2015/07/04 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
MySQL注入基础练习
2021/05/30 MySQL
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记
nginx访问报403错误的几种情况详解
2022/07/23 Servers