我有一个响应式布局,并且我使用sticky.js 作为我的标题。这似乎工作减去一些我可以忍受的小故障。但是我的锚总是关闭(我正在使用平滑滚动)。当响应式布局不断改变宽度和高度时,我不确定如何在滚动到锚点时补偿粘性标题?
user2137135
问问题
236 次
2 回答
0
不幸的是,你不能用不会扭曲你的设计的直接 CSS 做很多事情。为了在之前的项目中解决这个问题,我使用 jQuery 来处理这些类型的滚动/锚点问题。
你现在拥有的: <a>
在页面上寻找id
's 的标签。问题是:当网站响应时,这些锚标记与您的 DOM 布局并没有很好地对齐。
我的解决方案: 为您提供高级概念 - 我使用 jQuery 即时修改 ID 位置。假设您在网站全尺寸时单击链接,一切都很好。这里不需要 jQuery。现在说,当您在站点缩放到大约 768 像素宽度范围(iPad 纵向)时单击同一个链接时:然后我的锚看起来好像它们偏离了大约 100 像素(例如)。我写了一点 jQuery 来处理这个问题:“如果宽度是_ _,则将锚点偏移ID
___px。”
于 2013-04-22T20:42:20.033 回答
0
我建议使用 JS 来解释滚动时间的差异,而不是试图人为地改变锚标签的高度属性。这是一个可能对您有用的函数,使用纯 JS:
adjustScroll = function () {
// Sticky nav selector (you'll have to provide your own selector)
const nav = document.querySelector('header>nav');
if (location.href.indexOf("#") >= 0) {
// Find the name of the anchor
let n = location.href.substr(location.href.indexOf("#")+1);
// Find the anchor by name, if it exists
let a = document.querySelector('a[name="'+n+'"]');
if (!a) {
return;
}
// Set y value as y-value of the anchor, offset by the header height
let y = a.offsetTop;
y -= nav.height + 10;
// Scroll to the y position
window.scrollTo(0, y);
}
}
// Call it wherever you need to call it
adjustScroll();
在哪里调用它的示例可能是在DOMContentLoaded事件上,或者在锚标记的onclick事件上。
于 2018-06-19T16:09:25.593 回答