说"锚链",目标元素得到动态边缘顶部

Flo*_*uck 5 html css anchor jquery margin

我有一个"大"的问题,不知道如何解决.

如果我有一个锚点链接跳转到具有margin-top的元素,则边距被"忽略",如下例所示:

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>?
Run Code Online (Sandbox Code Playgroud)

CSS

body {
   height: 8000px;        
}

.link {
   display: block;
}

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

#testanchor {
   margin-top: 40px;  
   background-color: red;
   padding:15px;   
}?
Run Code Online (Sandbox Code Playgroud)

JS(包含"scrollAnimate"jQuery插件)

$(document).ready(function() {

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

});
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

Bla*_*ger 1

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

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

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