javascript – JQuery – 在加载时直接使用锚点获取偏移量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – JQuery – 在加载时直接使用锚点获取偏移量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2673字,纯文字阅读大概需要4分钟。
内容图文
![javascript – JQuery – 在加载时直接使用锚点获取偏移量](/upload/InfoBanner/zyjiaocheng/810/dbb6e839a38b4815927b45984305d5fb.jpg)
我尝试添加以下功能:当我键入带锚点的URL时,我希望直接在锚点上.我的问题是我有一个固定的标题,我当前的JQuery代码没有考虑到我放置的偏移量(55,即标题的高度).
这是代码片段:
if ($(location.href.split("#")[1])) {
var target = $('#'+location.href.split("#")[1]);
if (target.length) {
var hash = this.hash;
$('html,body').animate({ scrollTop: target.offset().top - 55 }, 300, function() {
location.hash = hash;
});
}
}
此代码段位于[anchor.js] [1]脚本中.
我很好地重定向到锚点,但是,无论我采取什么偏移值,最终结果都没有考虑到这一点,因此锚点名称在加载页面后被固定标题隐藏.
如果有人可以帮我解决这个问题,
提前致谢.
ps:我只想让它在Firefox和Chrome上运行.
UPDATE
似乎解决方案可能来自this link.
为此,我必须在< a name =“...”>< / a>之前插入.标签a< span>使用class =’direct_anchor’标记(带有.before Jquery函数),所以我在CSS中包含以下规则:
.direct_anchor {
display: block;
height: 55px; // Height of fixed header
margin-top: -55px;
visibility: hidden;
}
最后,这是我直接在地址栏中输入带有散列扩展名的URL的情况的代码片段:
var target = $('[name="'+location.href.split("#")[1]+'"]');
var hash = location.href.split("#")[1];
if (target.length) {
location.hash = hash;
$('html,body').animate({ scrollTop: target.offset().top - 55 }, 300);
target.before( "<span class='direct_anchor'></span>" );
}
不幸的是,我无法让它工作,class =’direct_anchor’CSS规则似乎没有应用于span标记.
我不是Jquery的专家,任何人都可以看到什么是错的?
谢谢你的帮助.
解决方法:
我调试并得到重新加载时脚本不会在if语句中执行.
$(window).bind("load", function () {
$('a[href*="#"]:not([href="#SECTION"]):not([href*="wikipedia"]):not([href*="mjx-eqn"])').click(function(event) {
event.preventDefault();
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 hash = this.hash;
$('html,body').animate({ scrollTop: target.offset().top - 55 }, 300, function() {
href = window.location.href;
history.pushState({page:href}, null, href.split('#')[0]+hash);
});
return false;
}
}
});
$(window).bind('popstate', function(event) {
var state = event.originalEvent.state;
var target = window.location.href.split('#');
var href = target[0];
if (state) {
$('html,body').animate({ scrollTop: 0 }, 300, function() {
history.replaceState({}, null, href);
});
}
});
// code changed here
var target = $("[name='"+location.href.split("#")[1]+"']");
if (target.length) {
$('html,body').animate({ scrollTop: target.offset().top-55},300);
}
});
请注意,您可以使用name not id作为选择器来获取元素.这是创造现在解决的问题.我通过调试检查,所以不能确定它,但它在chrome中运行良好.我无法检查firefox,因为我不知道如何使用调试器编辑脚本.
内容总结
以上是互联网集市为您收集整理的javascript – JQuery – 在加载时直接使用锚点获取偏移量全部内容,希望文章能够帮你解决javascript – JQuery – 在加载时直接使用锚点获取偏移量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。