• 【方法】jQuery无插件实现 鼠标拖动切换图片/内容 功能


     

    前言

    我就想随便叨逼叨几句,爱看就看几句,不爱看就直接跳过看正文就好啦~

    这个方法是仿写页面时我自己研究出来,可能有比我更简单的方法。

    但我不管,因为我没查我不知道,我就觉得我的最好啦,耶耶耶~


      

    效果图

     


      

    功能描述

    1、鼠标按住移动一定距离,内容随之进行切换。

    2、开始和结尾处不能再拖动了。

    3、下方的控制条随之变换,进行切换指示。


      

    解决思路

    1、利用jQuery监听鼠标移动距离

    2、内容浮动排成一列,长度是父容器宽度的3倍

    3、当移动距离超过一定长度时,内容移动一倍父容器宽度的距离

    4、内容移动通过定位左右移动来实现

    5、下方控制条3个小白点是固定的,一个大白点包含一个黑点的整体(即选中点)随内容进行同步移动,来实现视觉上切换指示


    代码演示

    1、HTML部分

     1 <div class="ppt">
     2     <div id="ppt-contents">
     3         <div class="ppt-item">
     4             <div class="item">
     5                 <div class="container-icon">
     6                     <i class="fa fa-quote-right"></i>
     7                 </div>
     8                 <p>跟觅未合作很愉快,我们觉得觅未是一家很专业的品牌设计公司,这个团队非常棒,有激情、有创造力、有执行力,经常给我们带来很多好的IDEA,是我们合作过的供应商中设计水平比较高,非常值得信任的一家。</p>
     9                 <h4 class="quote-author">东阿市场部 / 刘经理 </h4>
    10             </div>
    11         </div>
    12         <div class="ppt-item">
    13             <div class="item">
    14                 <div class="container-icon">
    15                     <i class="fa fa-quote-right"></i>
    16                 </div>
    17                 <p>觅未是一家很用心的品牌设计公司,相比之前合作过的一些供应商,觅未的工作态度认真主动,项目进度控制严格,即便我们没有要求,他们也会主动做多款不同方向的设计稿供我们选择,与觅未合作我们很放心。</p>
    18                 <h4 class="quote-author">雀巢市场部 / 张经理 </h4>
    19             </div>
    20         </div>
    21         <div class="ppt-item">
    22             <div class="item">
    23                 <div class="container-icon">
    24                     <i class="fa fa-quote-right"></i>
    25                 </div>
    26                 <p>我们是通过一次比稿选择了觅未创意,他们除了设计能力突出之外,还有自己的技术研发团队,经营模式融合了互联网的服务理念,沟通流程扁平化,服务态度诚恳,执行效率高,是一家性价比很高的设计公司。</p>
    27                 <h4 class="quote-author">伊利市场部 / 王经理 </h4>
    28             </div>
    29         </div>
    30     </div>
    31 </div>
    32 <div class="ppt-controls">
    33     <div class="dots">
    34         <div class="dot"></div>
    35         <div class="dot"></div>
    36         <div class="dot"></div>
    37         <div id="select-dot">
    38             <div id="black-dot"></div>
    39         </div>
    40     </div>

    2、CSS部分

     1 //最外面的父容器,相当于一个显示口
     2 .ppt {
     3      100%;
     4     height: 100%;
     5     //要隐藏超出的部分
     6     overflow: hidden;
     7     cursor: pointer;
     8     position: relative;
     9 }
    10 
    11 .ppt-item {
    12     //子元素左浮动,使其排成一列
    13     float: left;
    14     color: #FFFFFF;
    15      33.3%;
    16     //使文本无法选中
    17     user-select: none;
    18 }
    19 
    20 #contact .container-icon {
    21     margin-top: 10px;
    22     font-size: 38px;
    23 }
    24 
    25 #contact .dark-bg p {
    26     margin: 25px 100px;
    27     font-size: 16px;
    28     line-height: 1.8;
    29 }
    30 
    31 #contact .ppt-controls {
    32     margin-top: 10px;
    33 }
    34 
    35 .ppt-controls .dots {
    36     //相对定位,使选中的点可以相对他进行移动
    37     position: relative;
    38      72px;
    39     margin: 0 auto;
    40     text-align: center;
    41 }
    42 
    43 .ppt-controls .dot {
    44      8px;
    45     height: 8px;
    46     background-color: #FFFFFF;
    47     border-radius: 5px;
    48     float: left;
    49     margin: 2px 8px;
    50 }
    51 
    52 #select-dot{
    53      14px;
    54     height: 14px;
    55     background-color: #FFFFFF;
    56     border-radius: 6px;
    57     margin-left:8px ;
    58     //相对定位,使其可以左右移动
    59     position: relative;
    60     left:0;
    61     //快速转化,效果更好
    62     transition: all 0.001s ease;
    63 }
    64 
    65 #black-dot{
    66      8px;
    67     height: 8px;
    68     border-radius: 4px;
    69     background-color: #4C424E;
    70     margin: 0 3px;
    71     position: absolute;
    72     top: 3px;
    73 }
    74             

    3、jQuery部分

     1 var x = 0
     2 $(".ppt").mousedown(function(event) {
     3     //获取鼠标按下时的x方向位置
     4     x = event.pageX;
     5     $(".ppt").mouseup(function(event) {
     6         //获取鼠标抬起时的x方向位置
     7         var newx = event.pageX;
     8          //两者相减得到鼠标移动距离
     9         var changex = newx - x
    10          //获取内容相对于父容器的左偏移距离 
    11         var left = $("#ppt-contents").position().left;
    12           //获取选中点的左偏移距离 
    13         var dleft = $("#select-dot").position().left;
    14          //获取父容器的宽度
    15         var width = $(".ppt").width();
    16                 //判断移动正负和大小,来决定对象移动方向的距离
    17                 if(changex > 60) {
    18             var newleft = left + width;
    19             var newdleft = dleft - 24;
    20             if(newleft > 0) {
    21                 newleft = 0;
    22                 newdleft = 0;
    23             };
    24             $("#ppt-contents").css("left", newleft);
    25             $("#select-dot").css("left", newdleft);
    26         };
    27         if(changex < -60) {
    28             var newleft = left - width
    29             var newdleft = dleft + 24;
    30             if(newleft < -width * 2) {
    31                 newleft = -width * 2;
    32                 newdleft = 48;
    33             };
    34             $("#ppt-contents").css("left", newleft);
    35             $("#select-dot").css("left", newdleft);
    36         };
    37     });
    38 });        
    39     
  • 相关阅读:
    Maven学习--- 搭建多模块企业级项目
    Spring @Transactional ——事务回滚
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    JVM调优总结(一)-- 堆和栈的基本概念
    Java中常见数据结构:list与map -底层如何实现
    hadoop 2.7.1安装和配置
    Hadoop基本开发环境搭建(原创,已实践)
    Hadoop下添加节点和删除节点
    iOS应用之间跳转
    iOS开发技巧
  • 原文地址:https://www.cnblogs.com/roashley/p/7856134.html
Copyright © 2020-2023  润新知