5

我有一个小“大”问题,不知道如何解决。

如果我有一个带有锚点的链接,该锚点跳转到具有顶部边距的元素,则边距将被“忽略”,如下例所示:

http://jsfiddle.net/T38uk/

如果我有一个margin-top =“0”的div,并且会动态添加一些margin-top,则锚点会跳转到“旧”位置,如下例所示:

http://jsfiddle.net/eG2Gd/

是否可以告诉锚目标元素上存在动态更改的边距?

以下是单个代码片段:

HTML

<a href="#testanchor" class="link">Testanchor</a>
<div id="zwischenelement"></div>
<div id="testanchor">Hier muss der Anker hinspringen</div>​

CSS

body {
   height: 8000px;        
}

.link {
   display: block;
}

#zwischenelement {
   height: 200px;
   background-color: grey;    
}

#testanchor {
   margin-top: 40px;  
   background-color: red;
   padding:15px;   
}​

JS(包括“scrollAnimate”jQuery 插件)

$(document).ready(function() {

$('#testanchor').scrollAnimate({
    startScroll: 0,
    endScroll: 100,
    cssProperty: 'margin-top',
    before: 0,
    after: 40
});

});

感谢您的帮助。

4

2 回答 2

1

一种解决方案是用滚动到元素当前位置的 jQuery 函数替换正常的链接单击操作,加上您希望它向下移动的像素数:

$('a[href^=#]').on('click',function(e) {
    e.preventDefault();
    $(document).scrollTop($('#testanchor').position().top+40); 
    // 40 pixels is specific to this case
});

http://jsfiddle.net/mblase75/eG2Gd/2/

于 2012-11-20T15:06:24.793 回答
0

您将无法让锚点指向 div 的边距顶部,因为它链接到 div 并且边距只是 div 上方的间距。要么你需要做一些像 Blazemonger 建议的事情,要么在你想要链接的 div 周围创建一个 div 并链接到它。

例如:

<a href="#testAnchorHolder" class="link">Testanchor</a>
<div id="zwischenelement"></div>
<div id="testAnchorHolder">
    <div id="testanchor">Hier muss der Anker hinspringen</div>
</div>

和CSS:

#testAnchorHolder {
    padding-top: 40px;
}
#testanchor { 
    background-color: red;
    padding:15px;   
}​

http://jsfiddle.net/FchLX/

于 2012-11-20T15:15:11.483 回答