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 相关文章推荐
javascript编程起步(第五课)
Feb 27 Javascript
Mootools 1.2教程 同时进行多个形变动画
Sep 15 Javascript
再谈querySelector和querySelectorAll的区别与联系
Apr 20 Javascript
利用了jquery的ajax实现二级联互动菜单
Dec 02 Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
详解Bootstrap glyphicons字体图标
Jan 04 Javascript
Vue.js 父子组件通讯开发实例
Sep 06 Javascript
jQuery实现级联下拉框实战(5)
Feb 08 Javascript
引入JavaScript时alert弹出框显示中文乱码问题
Sep 16 Javascript
使用pm2自动化部署node项目的方法步骤
Jan 28 Javascript
详解如何使用nvm管理Node.js多版本
May 06 Javascript
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获取汉字拼音首字母的方法
2015/10/21 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
js取得html iframe中的元素和变量值
2014/06/30 Javascript
14个有用的Jquery技巧分享
2015/01/08 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
js获取json中key所对应的value值的简单方法
2020/06/17 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
python之文件读取一行一行的方法
2018/07/12 Python
pandas重新生成索引的方法
2018/11/06 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
python傅里叶变换FFT绘制频谱图
2019/07/19 Python
python实现简易学生信息管理系统
2020/04/05 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
amaze ui 的使用详细教程
2020/08/19 HTML / CSS
建筑工程自我鉴定
2013/10/18 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
就业协议书范本
2014/04/11 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
民族学专业大学生职业规划范文:清晰未来的构想
2014/09/20 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
师德师风培训感言
2015/08/03 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android
instantclient客户端 连接oracle数据库
2022/04/26 Oracle