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

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

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

css部分:

.address_book {
position: relative;
width: 100%;
margin-top:;
padding-top:;
}
.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:;
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部分比较多):

 <body class="address_book_body">
<div class="address_book">
<ul>
<h4 class="address_booK_letter"><a href="javascript:;" name='A'>A</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>阿门</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='B'>B</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>贝贝</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='C'>C</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>CC</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='D'>D</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>DD</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='E'>E</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>EE</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='F'>f</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>FF</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='G'>G</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>哥哥</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='H'>H</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>HH</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='I'>I</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>II</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='W'>W</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>WW</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='Z'>Z</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>ZZ</h4>
</div>
</li>
<h4 class="address_booK_letter"><a href="javascript:;" name='#'>#</a></h4>
<li>
<div class="list_thumb">
<img src="data:image/user.png" alt="">
</div>
<div class="list_info">
<h4>##</h4>
</div>
</li> </ul>
<!-- 右侧字母表 -->
<div class="search-letters">
<a name='A'>A</a>
<a name='B'>B</a>
<a name='C'>C</a>
<a name='D'>D</a>
<a name='E'>E</a>
<a name='F'>F</a>
<a name='G'>G</a>
<a name='H'>H</a>
<a name='I'>I</a>
<a name='W'>W</a>
<a name='Z'>Z</a>
<a name='#'>#</a>
</div>
</div>
</body>

js部分:

js引用了zepto:

 <script src="zepto.min.js"></script>
<script>
(function(){
//zepto没有scrollTo动画,所以在这里扩展了一个scrollTo函数;
$.fn.scrollTo = function(options) {
var defaults = {
toT: 90, //滚动目标位置
durTime: 500, //过渡动画时间
delay: 30, //定时器时间
callback: null //回调函数
};
var opts = $.extend({},defaults, options),
timer = null,
_this = this,
curTop = _this.scrollTop(), //滚动条当前的位置
subTop = opts.toT - curTop, //滚动条目标位置和当前位置的差值
index = 0,
dur = Math.round(opts.durTime / opts.delay),
smoothScroll = function(t) {
index++;
var per = Math.round(subTop / dur);
if (index >= dur) {
_this.scrollTop(t);
window.clearInterval(timer);
if (opts.callback && typeof opts.callback == 'function') {
opts.callback();
}
return;
} else {
_this.scrollTop(curTop + index * per);
}
};
timer = window.setInterval(function() {
smoothScroll(opts.toT);
}, opts.delay); return _this;
}; $('.search-letters a').each(function(index, item) { $(this).click(function() {
var att = $(this).attr('name');
var curOffsetTop = $(".address_booK_letter a[name=" + att + "]")[0].offsetTop;
$(".address_book_body").scrollTo({
toT: curOffsetTop,
durTime: 0
});
});
});
})(); </script>

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

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

zepto的scrollTo,实现锚点跳转的更多相关文章

  1. a 锚点跳转滑动效果

    点击a链接时,跳转到相应id的位置处,有一个滑动效果. <a href="#my">我是跳转到div</a><div id="my" ...

  2. HTML meta锚点跳转 小tips

    小tips meta锚点跳转 http://www.zhangxinxu.com/wordpress/2015/03/meta-http-equiv-refresh-content/

  3. 各种HTML锚点跳转方式

    1 js控制锚点跳转 <a name="anchor"></a> location.hash="anchor"; 不只有a其他元素也可以 ...

  4. 使用JS模拟锚点跳转

    A-HTML锚点定义: 设置锚: <a href="#mao">&nsbp;</a> 设置点:(为了浏览器兼容性,id和name一起设置) < ...

  5. jquery 在页面上根据ID定位(jQuery锚点跳转及相关操作) 经典

    1.锚点跳转简介 Edit 锚点其实就是可以让页面定位到某个位置上的点.在高度较高的页面中经常见到.比如百度的百科页面,wiki中的page内容. 我知道实现锚点的跳转有两种形式,一种是a标签+nam ...

  6. 微信小程序 scroll-view 实现锚点跳转

    在微信小程序中,使用 scroll-view 实现长页面的标记跳转,官方文档中没有例子演示,锚点标记主要是使用<scroll-view> 的 scroll-into-view 属性. 实现 ...

  7. jQuery实现锚点跳转(就一行代码)

    /* 锚点跳转 */ function anchor(p,fn) { $("html,body").animate({ scrollTop: $("#" + p ...

  8. html锚点的作用和js选项卡锚点跳转的使用

    location是javascript里边管理地址栏的内置对象,比如location.href就管理页面的url,用location.href=url就可以直接将页面重定向url.而location. ...

  9. jQuery任意标签锚点跳转插件

    // 任意锚点平滑跳转插件// 2010-07-15 v1.0(function($){ $.fn.zxxAnchor = function(options){ var defaults = { ie ...

随机推荐

  1. 【HDOJ】1253 胜利大逃亡

    经典的BFS,需要注意的是当前时间超过最小时间,输出-1.同时,队列为空时还未返回,证明并未找到终点(可能终点为墙).此时也应该输出-1,这个部分容易wa. #include <cstdio&g ...

  2. Inventory > INV.MTL_MATERIAL_TRANSACTIONS Show Error Msg: ORA-20100: File lxxx.tmp creation for FND_FILE failed.

    Fixed Step.   1.  Backup error data CREATE TABLE MMT_BACKUP_0805 AS SELECT * FROM INV.MTL_MATERIAL_T ...

  3. BZOJ2741: 【FOTILE模拟赛】L

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1170  Solved: 303[Submit][Status] ...

  4. [HDU 1254] 推箱子

    推箱子 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submis ...

  5. WCF大数据量传输解决方案

    文章内容列表:1. 场景:2. 解决方案3. WCF契约与服务实现设计静态图4. WCF契约与服务实现设计详细说明6. 服务端启动服务代码:7. 客户端代码8.   WCF大数据量传输解决方案源码下载 ...

  6. NameValueCollection类

    最近在研究HttpRequest类,发现里面的很多属性都返回一个NameValueCollection对象,今天再来了解一下这个神秘的对象. 随便写了个例子,发现跟HashTable类似.但是这个东西 ...

  7. ArcSDE 10.1安装、配置、连接 (SQL Server 2008)

    转自:http://blog.csdn.net/esrichinacd/article/details/8510224 1  概述 ArcSDE 10.1的安装配置相较于ArcSDE 10.0和之前版 ...

  8. python解析AMF协议

    最近看公司同事在玩页游<斗破乾坤>我也进去完了一把,感觉画面还不错,就是不停的点鼠标做任务,一会就烦了,看了下前端配置文件,我们以error.json_3e30为例,这个肯定是记录错误码的 ...

  9. [NOIP2011]数的划分

    本题地址:http://www.luogu.org/problem/show?pid=1025 题目描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序).例如:n=7,k=3,下面三 ...

  10. HW5.7

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...