从顶部的绝对DIV 300px的HTML锚点问题..?

我有一个带有标题位置的页面:固定顶部的DIV 。 这个DIV的高度:300px,并且它是固定的,以便即使用户向下滚动时它也始终可见。

我的内容在下面的另一个DIV中。 它有一个位置:绝对顶部:300px 。 所以当你第一次加载页面时,它会从我的页眉下面开始,当你滚动时,它将滚动到我的页眉下方,页面保持固定在顶部。

在我的内容DIV中,我有多个主播。 当我点击指向其中一个锚点的链接时,页面会滚动,但会将锚点置于页面顶部。 所以基本上,应该显示的内容隐藏在我的标题下...

你有任何想法如何解决这个问题与HTML / CSS ..?

除了使用iframe或框架集之外,是否还有其他解决方案?


你可以用jQuery来做到这一点。

首先,你需要在你的<head>包含jquery库。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

在上面你需要下面的JavaScript

<script type="text/javascript">
$(function(){

    $('a[href*=#]').click(function() {

    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 targetOffset = $target.offset().top - 300;

                $('html,body').animate({scrollTop: targetOffset}, 10);

                return false;

            }

        }

    });

});
</script>

以上脚本中的以下行控制顶部的偏移量或“边距”。

var targetOffset = $target.offset().top - 300;

您也可以通过增加此行上的值来使滚动平滑。

$('html,body').animate({scrollTop: targetOffset}, 10);

尝试用它替换它。

$('html,body').animate({scrollTop: targetOffset}, 1000);

填充和负边距应该适用于此。 以下是预览的示例页面:http://jsbin.com/ucili/edit

实质上,对于锚点,我有一个300px的顶部填充和-300px的页边距。 填充确保锚点不落在固定div下,负边距使得内容正确流动(没有巨大的空白空白)。


这个例子使用了padding- / margin-top技巧,但是通过CSS3伪类实现:target

/* assuming the header-height is 8em */
:target {
    padding-top: 8em;
    margin-top: -8em; }
链接地址: http://www.djcxy.com/p/62043.html

上一篇: Problem with HTML anchor in absolute DIV 300px from the top..?

下一篇: Setup a docker MS build server image