- 浏览: 268467 次
- 性别:
- 来自: 北京
最新评论
-
haixin3036:
jQuery是一套跨浏览器的JavaScript库,简化HTM ...
jquery sizzle 选择器浅析 -
panshunchang:
非常感谢分享,正找这东西呢。
基于jQuery的QQ表情插件 -
yuur369:
不错。。。
移动端webapp开发必备知识
//页内锚点滑动效果
$("html,body").animate({scrollTop: $("#box").offset().top}, 1000);
更具体详细的方法
//页内锚点滑动效果,来自http://www.learningjquery.com/的方法
$('a[href*=#]').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname){
var $target = $(this.hash);
$target = $target.length && $target|| $('[name=' + this.hash.slice(1) +']');
if ($target.length) {
var targetOffset = $target.offset().top;
$('html,body').animate({scrollTop: targetOffset}, 1000);
//return false; //使其呈现清晰的URL链接
}
}
});
网上有很多锚点平滑滚动的javascript脚本下载,但是很多脚本需要手工在XHTML上写入鼠标事件,更加别说支持链接到新页面的锚点了。而AnchorArt.js却可以做到一次引入自动给页面带锚点的链接添加平滑滚动效果,并且支持链接到新页面的锚点!AnchorArt.js(压缩版)仅仅只有2KB大小!
关于链接到新页面的锚点平滑滚动的思路:
如果A页面打开url带锚点的B页面(#号),那么浏览器在页面下载完毕后自动跳到相应的锚点上,据我所知还没有办法阻止这个浏览器默认的行为。
但是如果B页面没有对应的锚点浏览器就不会进行跳转了,所以我们在url的锚点附加一点额外的信息那就可以让浏览器不进行调转了,接下来我们的脚本就可以通过锚点附加的参数进行平滑滚动操作了。
所有的操作通过绑定事件完成,在脚本没有运行的时候也不会破坏原有锚点的功能
所以我在网上一搜“锚点平滑滚动”结果一大堆,选择了个写的比较简洁的脚本,按照上面的思路给它写个事件绑定和接收锚点参数滚动的效果于是就出了AnchorArt.js。
/*
AnchorArt.js
平滑锚点跳转[支持新窗口打开的页面]
www.planeArt.cn
2009.08.25
*/
//页面加载完成执行函数
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != ‘function’) {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
allLinks();//绑定链接
pageInit();//获取锚点参数执行跳转
});
// 转换为数字
function intval(v){
v = parseInt(v);
return isNaN(v) ? 0 : v;
}
// 获取元素信息
function getPos(e){
var l = 0;
var t = 0;
var w = intval(e.style.width);
var h = intval(e.style.height);
var wb = e.offsetWidth;
var hb = e.offsetHeight;
while (e.offsetParent){
l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);
t += e.offsetTop + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);
e = e.offsetParent;
}
l += e.offsetLeft + (e.currentStyle?intval(e.currentStyle.borderLeftWidth):0);
t += e.offsetTop + (e.currentStyle?intval(e.currentStyle.borderTopWidth):0);
return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
}
// 获取滚动条信息
function getScroll() {
var t, l, w, h;
if (document.documentElement && document.documentElement.scrollTop) {
t = document.documentElement.scrollTop;
l = document.documentElement.scrollLeft;
w = document.documentElement.scrollWidth;
h = document.documentElement.scrollHeight;
} else if (document.body) {
t = document.body.scrollTop;
l = document.body.scrollLeft;
w = document.body.scrollWidth;
h = document.body.scrollHeight;
}
return { t: t, l: l, w: w, h: h };
}
// 滚动
var $sr=1;//防止同时执行多个跳转
function scroller(el, duration){
if(typeof el != ‘object’) { el = document.getElementById(el); }
if(!el) return;
var z = this;
z.el = el;
z.p = getPos(el);
z.s = getScroll();
z.clear = function(){window.clearInterval(z.timer);z.timer=null};
z.t=(new Date).getTime();
z.step = function(){
var t = (new Date).getTime();
var p = (t – z.t) / duration;
if (t >= duration + z.t) {
z.clear();
window.setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
$sr=1;
} else {
st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
z.scroll(st, sl);
}
};
z.scroll = function (t, l){window.scrollTo(l, t)};
z.timer = window.setInterval(function(){z.step();},13);
$sr=0;
}
//给页面锚点添加额外的参数
function goAnchor(href,target){
u=href.split(“#”);
if (target==”) target=’_self’;
if (target==’_self’ && $sr==1) scroller(u[1],800);
window.open(u[0] + ‘#anchor=’ + u[1],target=target);
}
function allLinks(){
var allLinks = document.getElementsByTagName(‘a’);
for (var i=0;i
var lnk = allLinks[i];
if ((lnk.href && lnk.href.indexOf(‘#’) != -1)) {
lnk.onclick=function(evt){
if ($sr==1) goAnchor(this.href,this.target);
return false;
}
}
}
}
//接收页面锚点参数执行平滑跳转
function pageInit(){
hash=window.location.hash.split(“#anchor=”);
scroller(hash[1],800);
}
- 支持链接到新页面的锚点平滑跳转.zip (5.7 KB)
- 下载次数: 5
发表评论
-
CSS团队协作开发方式的思考
2014-05-29 10:59 794有效的团队协作开发, ... -
Javascript类定义语法,私有成员、受保护成员、静态成员等
2014-05-29 10:59 762JS只是一门支持面向对象编程的语言,通过OO可以让我们的 ... -
Javascript 继承模式
2014-05-29 10:59 749在面向对象的JavaScript开发中使用继承可以提高代码 ... -
用JavaScript实现自己的DOM选择器
2014-05-28 14:27 718解释器模式(Interpreter):定义一种语法格式,通过 ... -
Javsript代码的注释和模块定义
2014-05-28 14:21 875可以这样定义模块: (function(ns, re ... -
在JavaScript中应用单例模式管理命名空间
2014-05-28 10:56 831单例模式确保一个类在整个应用程序中只有一个是实例对象,在J ... -
移动WEB开发中媒体查询里的width, device-width, resolution
2014-05-28 10:14 1033/*1、width: viewport的宽度,css像素,三星 ... -
前端性能优化
2014-05-27 15:16 9161. 请减少HTTP请求 基本原理: ... -
jquery sizzle 选择器浅析
2014-05-26 14:23 1253看了jquery的源码,jquery用的选择器的引擎是siz ... -
jQuery 1.8,1.9和2.0分别带来的新特性
2014-05-26 14:17 1376jQuery 1.8 可定制 在jQuery ... -
jquery点击div之外的地方div本身消失
2014-05-15 12:22 917<!DOCTYPE html PUBLIC " ... -
jquery-migrate: 迁移旧的jQuery代码至jQuery1.9以上的版本
2014-05-14 16:31 708这个插件可以用来检测和恢复在jQuery1.9版本中已删除或 ... -
移动WEB在线开发工具 – Codiqa
2014-05-12 15:43 678Codiqa,https://codiqa.com 简单试用 ... -
一种比CSS-Sprite更加方便在网页中嵌入大量图标的方法
2014-05-12 15:34 631这种思路是在一个国外的网站上发现的,设计者在网站中使用了很多 ... -
Google Developers的ResetCSS
2014-05-12 10:32 643@charset "utf-8"; ht ... -
Android手机版浏览器DIV滚动条失效解决方案
2014-05-08 11:09 1320除了BODY和HTML的滚动条,在触屏下几乎所有浏览器都不支 ... -
解耦HTML、CSS和JavaScript
2014-02-14 11:32 661当前在互联网上, ... -
设置双核浏览器的浏览模式
2014-01-20 15:44 700如果访问的页面中有 CSS3 代码,双核浏览器会自动切换到 ... -
使用console.table()调试javascript
2014-01-20 15:42 652或许你已经习惯了console.log()来调试js,非常好 ... -
iOS下无法正常渲染按钮的问题
2014-01-20 15:40 699最近做移动端的页面,碰到了一个问题,就是css无法定义按钮样 ...
相关推荐
JavaScript 锚点平滑跳转是一种在网页中实现页面内部导航时提供平滑过渡效果的技术。传统的HTML锚点链接可以直接跳转到页面内的某个特定位置,但这种跳转通常是瞬间完成,缺乏用户体验上的平滑性。JS锚点平滑跳转则...
锚点跳转是一种在页面内部跳转到指定部分的功能,常用于长页面,使得用户可以快速定位到页面的指定区域。实现锚点跳转通常需要两个步骤:一是在页面中设置具有唯一ID的目标位置,二是通过链接或者按钮触发跳转事件,...
例如,`<a name="section1"></a>`定义了一个名为"section1"的锚点,用户点击链接`跳转到第1节</a>`时,浏览器会滚动到页面上对应的"section1"位置。 jQuery锚点动画跳转特效则是在这个基础上增加了动画效果,使得...
- 用户体验提升:用户无需等待整个新页面加载,只需页面局部滚动即可到达目标位置。 - 便于导航:长页面内容可以通过锚点链接进行分割,使用户能快速找到所需信息。 缺点: - SEO影响:搜索引擎可能无法识别页面内...
7. **历史记录管理**:为了让浏览器的前进后退功能正常工作,可以使用`history.pushState`和`popstate`事件更新URL状态而不实际加载新页面。 在实际应用中,JS锚点常用于单页应用(SPA)和长页面的导航。通过结合...
1. jQuery实现锚点跳转滚动条平滑滚动的代码示例: 文件中提供的核心代码为: ```javascript $("html,body").animate({scrollTop:$("#box").offset().top},1000); ``` 该代码通过jQuery的animate方法,使得页面滚动...
JavaScript 实现锚点是一种常见的网页交互技术,它允许用户点击页面上的链接,快速跳转到同一页面的特定位置。在网页开发中,锚点通常用于长页面的导航,让用户能够轻松地访问页面内的各个部分。这篇文章将深入探讨...
锚点链接(Anchor Links)是HTML中的一个重要概念,它允许我们通过点击链接直接跳转到同一页面的特定位置。在这个插件中,锚点链接与页面的各个模块对应,当用户点击导航菜单中的某个项时,页面会平滑滚动到相应的...
在Web开发中,页面内的导航跳转到特定的内容位置是一项常见需求。本文介绍了几种使用JavaScript实现页面滚动到指定div位置的解决方案。这些方法主要包括锚点法、jQuery的animate方法、window.scrollTo方法和...
锚点导航是网页设计中的一种常见技术,它允许用户通过点击导航链接直接跳转到页面的特定部分。在“jQuery城市电梯锚点导航代码”中,这一功能得到了巧妙的应用。当用户点击导航菜单中的某个选项时,页面会平滑滚动至...
`event.preventDefault()`阻止了浏览器的默认行为,即跳转到新URL。`$('html, body').animate()`方法用于平滑滚动到页面顶部,参数`scrollTop: 0`表示滚动到顶部,`800`是动画执行的时长。 如果需要返回首页并跳转...
在本资源中,我们关注的是一个使用jQuery和CSS3技术实现的导航菜单,该菜单具有在页面内平滑跳转到指定位置的功能。这个特效源码可以帮助开发者为他们的网站增添互动性和用户体验。以下是对这个技术实现的详细解析:...
5. 执行动画滚动效果:使用jQuery的animate函数来实现平滑滚动到目标锚点位置。animate函数的第一个参数是一个对象,指定了需要变化的属性,此处为scrollTop。第二个参数是动画持续时间,这里设置为1000毫秒,即1秒...
然后,我们可以通过链接来直接跳转到这个锚点: ```html <a href="#section1">Go to Section 1 ``` 在纯 JavaScript 中,我们可以监听 `click` 事件并使用 `window.scrollTo()` 方法来实现平滑滚动效果。但是,当...
在网页设计中,平滑滚动(Smooth Scroll)是一种常见的交互效果,它使得用户在点击页面内的链接时,页面能够以平滑、流畅的方式过渡到目标位置,而不是瞬间跳转。这种效果大大提升了用户体验,尤其在长篇内容或者...
4. **锚点链接**:HTML的`<a>`标签配合`href="#section"`属性,可以创建锚点链接,让用户点击后迅速跳转到页面的特定部分。 5. **响应式设计**:考虑到不同的设备和屏幕尺寸,可能需要调整侧边栏的显示方式。可以...
这行代码会立即跳转到`id`为`aa`的元素,但没有动画效果。 2. **使用`scrollTo`或`scrollBy`**: 如果需要平滑滚动效果,可以使用`window.scrollTo`方法。不过,这种方法需要配合一些计算来实现平滑过渡: ```...
当页面滑动到末尾时,为了实现循环效果,需要手动跳转到起始页面,反之亦然。 3. **循环滑动**: `ViewPager` 默认不支持循环滑动,但是可以通过自定义适配器或者利用`PagerAdapter` 的`instantiateItem()` 和`...
3. **锚点链接**:为了方便用户通过点击导航菜单直接跳转到特定的部分,插件会处理锚点链接(如`#section1`),确保点击后能平滑滚动到对应位置。 4. **性能优化**:为了提高用户体验,插件可能包含了一些性能优化...
在网页设计中,有时我们需要实现一个功能,使得用户点击某个链接或者按钮后,页面能够自动滚动到特定的位置,而不是直接跳转到新的页面。这种功能通常用于网站内部导航,帮助用户快速定位到页面的某个区域。jQuery...