JS实现点击拉拽轮播图pc端移动端适配


Posted in Javascript onSeptember 05, 2018
<div class="content">
      <button class="left">left</button>
      <button class="right">right</button>
      <div class="index"></div>
      <div class="lists">
        <!--<!–width: item的数量÷3乘以100%–>-->
        <div class="box">
          <!--width: 1÷item的数量乘以100%-->
          <div class="item">
            <img src="a.png" alt="a">
            <p>aaa</p>
          </div>
          <div class="item active">
            <img src="b.png" alt="b">
            <p>bbb</p>
          </div>
          <div class="item">
            <img src="c.png" alt="c">
            <p>ccc</p>
          </div>
          <div class="item">
            <img src="d.png" alt="d">
            <p>ddd</p>
          </div>
          <div class="item">
            <img src="e.png" alt="e">
            <p>eee</p>
          </div>
          <div class="item">
            <img src="f.png" alt="f">
            <p>ffff</p>
          </div>
        </div>
      </div>
    </div>
<script>
      $(function(){
//        循环数据 假设有个数组,有10条数据
//         var arr = [1,2,3,4,5,6,7,8,9,10];
//         var arr_len = arr.length;
//         var box = '<div class="box" style="width: '+arr_len/3*100+'%;"></div>';
//         $('.lists').append(box);
//         for (var i = 0; i < arr_len;i++){
//           var newDiv = document.createElement('div');
//           newDiv.innerHTML = '<img src="static/images/search-icon.png"/>'+
//             '<p>' +
//             (i+1)+
//             '</p>';
//           newDiv.className = 'item '+(i==1?'active':'');
//           newDiv.style = 'width: '+1/arr_len*100+'%;';
//           newDiv.onclick = (function(ind) {
//             return function () {
//               index = ind-1;
//               console.log(ind)
//               $(".box").animate({left: -index*100/3+"%"})
//               $(".item").removeClass('active')
//               $($(".item")[index+1]).addClass('active');
//               $('.index').text(index+2)
//             }
//           })(i) ;
//           $('.box').append(newDiv);
//         }
        var arr_len = $('.item').length;
        $('.box').css({width: arr_len/3*100+'%'})
        $('.item').css({width: 1/arr_len*100+'%'})
        $('.item').on('click',function (e) {
          var _this = $(e.target);
          if (!_this.hasClass('item')){
            _this = _this.parents('.item');
          }
          index = _this.index('.item')-1;
          $(".box").animate({left: -index*100/3+"%"})
          $(".item").removeClass('active')
          $($(".item")[index+1]).addClass('active');
          $('.index').text(index+2)
        })
        var index = 0;
        var len = arr_len;
        var temp = true;
        var pageX,pageY;
        $('.content').on('touchstart',function (e) {
          var touches = e.originalEvent.targetTouches[0];
          pageX = touches.pageX;
          pageY = touches.pageY;
        }).on('touchmove',function (e) {
          var touches = e.originalEvent.targetTouches[0];
          if (pageX>touches.pageX+20){
            left()
          }else if (pageX<touches.pageX-20){
            right()
          }
        })
        $(".left").on('click',left)
        $(".right").on('click',right)
        function left() {
          console.log(index,temp,'left')
          if (index < len-2&&temp){
            index++;
            move(index)
          }
        }
        function right() {
          if (index > 0&&temp){
            index--;
            move(index)
          }
        }
        function move(index) {
          if (temp){
            temp = false;
            var left = $(".box").offset().left;
            $(".box").animate({left: -index*100/3+"%"},function () {
              temp = true;
            })
            $(".item").removeClass('active')
            $($(".item")[index+1]).addClass('active');
            $('.index').text(index+2)
          }
        }
      })
.lists {
        position: relative;
        height: 100px;
        overflow: hidden;
      }
      .box {
        position: absolute;
      }
      .item {
        float: left;
        background: #008000;
        height: 100px;
      }
      .item img {
        width: 20px;
        display: block;
        margin: 0 auto;
      }
      .item p {
        text-align: center;
      }
      .item.active {
        background: #0000FF;
        font-size: 30px;
      }
      .item.active img {
        width: 40px;
      }
      .item.active p {
        font-size: 30px;
      }

总结

以上所述是小编给大家介绍的JS实现点击拉拽轮播图pc端移动端适配,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js getElementsByTagName的简写方式
Jun 27 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
jQuery Real Person验证码插件防止表单自动提交
Nov 06 Javascript
Jquery为DIV添加click事件的简单实例
Jun 02 Javascript
jQuery Validate 数组 全部验证问题
Jan 12 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
Mar 16 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
Apr 25 Javascript
vue项目中定义全局变量、函数的几种方法
Nov 08 Javascript
vue实现简单的登录弹出框
Oct 26 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
vue中使用heatmapjs的示例代码(结合百度地图)
Sep 05 #Javascript
解决vue点击控制单个样式的问题
Sep 05 #Javascript
浅谈webpack4.x 入门(一篇足矣)
Sep 05 #Javascript
vuejs点击class变化的实例
Sep 05 #Javascript
jQuery滑动效果实现方法分析
Sep 05 #jQuery
vue+springboot实现项目的CORS跨域请求
Sep 05 #Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 #jQuery
You might like
php数组的概述及分类与声明代码演示
2013/02/26 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
在php和MySql中计算时间差的方法详解
2015/03/27 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
基于jquery的滚动新闻列表
2010/06/19 Javascript
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
jquery实现拖拽调整Div大小
2015/01/30 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
2015/11/24 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
Javascript获取图片原始宽度和高度的方法详解
2016/09/20 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
详解Django中的权限和组以及消息
2015/07/23 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
python装饰器深入学习
2018/04/06 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
django2笔记之路由path语法的实现
2019/07/17 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
德国高性价比网上药店:medpex
2017/07/09 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
法人委托书的范本格式
2014/09/11 职场文书
2014年信访工作总结
2014/11/17 职场文书
2014年保育员个人工作总结
2014/12/02 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
离婚协议书怎么写
2015/01/26 职场文书
城管个人总结
2015/02/28 职场文书
《认识钟表》教学反思
2016/02/16 职场文书