锚点滑动jq 关于HTML锚点定位几个不同场景的解决方案
来源:互联网 发布:sql怎么查找重复数据 编辑:程序博客网 时间:2024/05/20 20:05
// Load jQuery.js firstlyjQuery(function() { jQuery('a[href*=#]').click(function() { if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { var $target = jQuery(this.hash); var $url = this.hash.slice(1); var $scrollTime = 500; function updateUrl() { window.location.hash = encodeURIComponent($url); } $target = $target.length && $target || jQuery('[name=' + $url + ']'); if (!$url) { return false; } else if ($target.length) { var targetOffset = $target.offset().top; jQuery('html,body').animate({ scrollTop: targetOffset }, $scrollTime); setTimeout(updateUrl, $scrollTime + 100) return false; } } });});情形1:目标页面有个 `position:fixed;height:50px;` 的顶部导航栏,这部分会遮住文章正文内容,正文中的所有`#part-1` 这样的锚点都会有50px的误差,解法很简单,如下:jQuery('html,body').animate({ scrollTop: targetOffset - 50}, $scrollTime);
如果要兼容从别的页面锚过来,可以再加个触发器监控`location.hash`:
$('body').append('<a id="anchor-temp" href="' + location.hash + '"></a>');window.setTimeout(function() { $('#anchor-temp').trigger('click');}, 2000);
情形2:
需要强行根据URL中的锚标记进行页面跳转,如:
http://aaa.bbb/ccc#part-1 -> http://aaa.bbb.ccc/1/ 这样我们首先会想到使用`.htaccess` 进行重定向,可实践后发现不可行,原因见:stackoverflow
# RewriteRule /ccc/(\d+)(.*) http://aaa.bbb/ccc/$1 [NE]RewriteRule /ccc/(\d+).#.(.*) http://aaa.bbb/ccc/$1 [NE]
于是退而求其次,用下面的js完成:
if(window.location.hash.split('-')[0] == '#part')window.location.href = window.location.href.split('#')[0];
情形3:
锚点和URL的字符串统一关系以及平滑滑动的动画需求,可以看下这段小script的demo:
https://github.com/hzlzh/Anchor-Scroll
版权所有© HzlzH | 本文采用 BY-NC-SA 进行授权
转载需注明 转自: 《关于HTML锚点定位几个不同场景的解决方案》
0 0
- 锚点滑动jq 关于HTML锚点定位几个不同场景的解决方案
- html 锚点定位
- HTML锚点定位偏移
- HTML 超链接,锚点,定位
- 关于锚点定位的一些知识
- 关于html锚点
- jq锚点联动
- 关于滚动条滚动到指定位置触发jq事件和html锚点
- html中a标签锚点定位的运用
- html锚点定位不准确问题
- 优雅的锚点定位
- HTML基础--position 绝对定位 相对定位 锚点链接
- jsp中关于锚点的使用(定位)
- 关于length的几个点
- 锚点滑动
- 锚点滑动效果
- js锚点定位
- js锚点定位
- [转]提示microsoft incremental linker已停止工作解决方法
- 基础总结篇之二:Activity的四种launchMode
- 假期观察:家乡的、身边的真实互联网
- 复习JSP基础内容
- Hive 全排序 优化
- 锚点滑动jq 关于HTML锚点定位几个不同场景的解决方案
- LINUX ICMP检测
- MySQL binlog 格式(Mixed,Statement,Row Level)
- Invalidate()、InvalidateRect()、InvalidateRgn、UpdateWindow()
- 三星N7100 Galaxy Note2 Root权限获取详细教程
- android xmpp开发 asmack实现断线自动重连
- Builder Pattern
- hdu 1233 最小生成树Prim算法
- 第十二周 整整3个月