• zepto的scrollTo,实现锚点跳转


    实现功能:点击右侧字母A,实现锚点跳转功能:

     有同学可能说可以直接用锚点跳转实现,是的,锚点跳转可以实现这个功能,但是有一个问题,点击跳转后,再点击返回,返回的是上次跳转的结果,具体的原理就不用多说了,大家可以自己动手试一下,现在开始我们的正式代码部分:

    因为是在手机端的项目,在此案例中使用了zepto.js;

    css部分:

    .address_book {
        position: relative;
        width: 100%;
        margin-top: 0;
        padding-top: 0;
    }
    .address_book li {
        position: relative;
        display: -webkit-box;
        background: #fff;
    }
    .address_booK_letter{
          padding: 5px 15px;
        background-color: #f2f2f2;
        font-size: 18px;
        font-family: 'Helvetica';
         color: #666;
    }
    .list_thumb {
        position: relative;
        margin: 10px 10px 10px 0;
        border: 1px solid #aaa;
        border-radius: 5px;
    }
    .list_thumb img{
        width: 50px;
        height: 50px;
    }
    .list_info{
        -webkit-box-flex: 1;
        padding-right: 30px;
        padding-top: 10px;
        padding-bottom: 10px;
      }
      .list_info h4 {
        margin: 15px 0;
        color: #666;
      }
    .search-letters {
        position: fixed;
        top: 20%;
        right: 5px;
        font-family: 'Helvetica';
    }
    .search-letters a {
        display: block;
        font-size: 12px;
        margin-top: 4px;
        color: #333;
    }

    html部分(因为给大家展示的是静态数据,所以html部分比较多):

      1 <body class="address_book_body">
      2 <div class="address_book">
      3  <ul>
      4  <h4 class="address_booK_letter"><a href="javascript:;" name='A'>A</a></h4>
      5    <li>
      6      <div class="list_thumb">
      7       <img src="image/user.png" alt="">
      8      </div>
      9     <div class="list_info">
     10      <h4>阿门</h4>
     11     </div>
     12    </li>
     13     <h4 class="address_booK_letter"><a href="javascript:;" name='B'>B</a></h4>
     14    <li>
     15      <div class="list_thumb">
     16       <img src="image/user.png" alt="">
     17      </div>
     18     <div class="list_info">
     19      <h4>贝贝</h4>
     20     </div>
     21    </li>
     22     <h4 class="address_booK_letter"><a href="javascript:;" name='C'>C</a></h4>
     23    <li>
     24      <div class="list_thumb">
     25       <img src="image/user.png" alt="">
     26      </div>
     27     <div class="list_info">
     28      <h4>CC</h4>
     29     </div>
     30    </li>
     31     <h4 class="address_booK_letter"><a href="javascript:;" name='D'>D</a></h4>
     32    <li>
     33      <div class="list_thumb">
     34       <img src="image/user.png" alt="">
     35      </div>
     36     <div class="list_info">
     37      <h4>DD</h4>
     38     </div>
     39    </li>
     40     <h4 class="address_booK_letter"><a href="javascript:;" name='E'>E</a></h4>
     41    <li>
     42      <div class="list_thumb">
     43       <img src="image/user.png" alt="">
     44      </div>
     45     <div class="list_info">
     46      <h4>EE</h4>
     47     </div>
     48    </li>
     49     <h4 class="address_booK_letter"><a href="javascript:;" name='F'>f</a></h4>
     50    <li>
     51      <div class="list_thumb">
     52       <img src="image/user.png" alt="">
     53      </div>
     54     <div class="list_info">
     55      <h4>FF</h4>
     56     </div>
     57    </li>
     58     <h4 class="address_booK_letter"><a href="javascript:;" name='G'>G</a></h4>
     59    <li>
     60      <div class="list_thumb">
     61       <img src="image/user.png" alt="">
     62      </div>
     63     <div class="list_info">
     64      <h4>哥哥</h4>
     65     </div>
     66    </li>
     67     <h4 class="address_booK_letter"><a href="javascript:;" name='H'>H</a></h4>
     68    <li>
     69      <div class="list_thumb">
     70       <img src="image/user.png" alt="">
     71      </div>
     72     <div class="list_info">
     73      <h4>HH</h4>
     74     </div>
     75    </li>
     76     <h4 class="address_booK_letter"><a href="javascript:;" name='I'>I</a></h4>
     77    <li>
     78      <div class="list_thumb">
     79       <img src="image/user.png" alt="">
     80      </div>
     81     <div class="list_info">
     82      <h4>II</h4>
     83     </div>
     84    </li>
     85     <h4 class="address_booK_letter"><a href="javascript:;" name='W'>W</a></h4>
     86    <li>
     87      <div class="list_thumb">
     88       <img src="image/user.png" alt="">
     89      </div>
     90     <div class="list_info">
     91      <h4>WW</h4>
     92     </div>
     93    </li>
     94     <h4 class="address_booK_letter"><a href="javascript:;" name='Z'>Z</a></h4>
     95    <li>
     96      <div class="list_thumb">
     97       <img src="image/user.png" alt="">
     98      </div>
     99     <div class="list_info">
    100      <h4>ZZ</h4>
    101     </div>
    102    </li>
    103     <h4 class="address_booK_letter"><a href="javascript:;" name='#'>#</a></h4>
    104    <li>
    105      <div class="list_thumb">
    106       <img src="image/user.png" alt="">
    107      </div>
    108     <div class="list_info">
    109      <h4>##</h4>
    110     </div>
    111    </li>
    112 
    113  </ul>
    114    <!-- 右侧字母表 -->
    115   <div class="search-letters">
    116         <a name='A'>A</a>
    117         <a name='B'>B</a>
    118         <a name='C'>C</a>
    119         <a name='D'>D</a>
    120         <a name='E'>E</a>
    121         <a name='F'>F</a>
    122         <a name='G'>G</a>
    123         <a name='H'>H</a>
    124         <a name='I'>I</a>
    125         <a name='W'>W</a>
    126         <a name='Z'>Z</a>
    127         <a name='#'>#</a>
    128   </div>
    129 </div>
    130 </body>

    js部分:

    js引用了zepto:

     1 <script src="zepto.min.js"></script>
     2 <script>
     3 (function(){
     4   //zepto没有scrollTo动画,所以在这里扩展了一个scrollTo函数;
     5   $.fn.scrollTo = function(options) {
     6     var defaults = {
     7       toT: 90, //滚动目标位置
     8       durTime: 500, //过渡动画时间
     9       delay: 30, //定时器时间
    10       callback: null //回调函数
    11     };
    12     var opts = $.extend({},defaults, options),
    13       timer = null,
    14       _this = this,
    15       curTop = _this.scrollTop(), //滚动条当前的位置
    16       subTop = opts.toT - curTop, //滚动条目标位置和当前位置的差值
    17       index = 0,
    18       dur = Math.round(opts.durTime / opts.delay),
    19       smoothScroll = function(t) {
    20         index++;
    21         var per = Math.round(subTop / dur);
    22         if (index >= dur) {
    23           _this.scrollTop(t);
    24           window.clearInterval(timer);
    25           if (opts.callback && typeof opts.callback == 'function') {
    26             opts.callback();
    27           }
    28           return;
    29         } else {
    30           _this.scrollTop(curTop + index * per);
    31         }
    32       };
    33     timer = window.setInterval(function() {
    34       smoothScroll(opts.toT);
    35     }, opts.delay);
    36 
    37     return _this;
    38   };
    39 
    40 $('.search-letters a').each(function(index, item) {
    41 
    42     $(this).click(function() {
    43       var att = $(this).attr('name');
    44       var curOffsetTop = $(".address_booK_letter a[name=" + att + "]")[0].offsetTop;
    45       $(".address_book_body").scrollTo({
    46         toT: curOffsetTop,
    47         durTime: 0
    48       });
    49     });
    50   });
    51 })();
    52 
    53 
    54 </script>

    没有对样式进行过多调节,需要的小伙伴可以根据实际需要进行设置,效果图如下:

    ps:可能还有比这个更简单的办法,大家可以互相分享一下,如果有什么问题,欢迎随时骚扰。。。。

  • 相关阅读:
    android存储訪问框架Storage Access Framework
    hdu 5338 ZZX and Permutations (贪心+线段树+二分)
    集成CCFlow工作流与GPM的办公系统驰骋CCOA介绍(三)
    PHP中文分词扩展 SCWS
    使用docker 搭建基础的 mysql 应用
    UVA 11090 Going in Cycle!!(Bellman-Ford推断负圈)
    HDU 5237 Base64
    Android 自己定义主菜单
    HDU 1018 Big Number 数学题解
    python经常使用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)
  • 原文地址:https://www.cnblogs.com/candice-cc/p/5915865.html
Copyright © 2020-2023  润新知