Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CSS,jquery水平对齐中的固定标题_Jquery_Css - Fatal编程技术网

CSS,jquery水平对齐中的固定标题

CSS,jquery水平对齐中的固定标题,jquery,css,Jquery,Css,我对jquery有一个问题,我制作了一个固定的标题,但是当它向下滚动时,它没有水平对齐。在CSS中,我将边距放在左边:auto;右边距:自动;它做得很好,但当我向下滚动时,标题会转到左侧 我不知道这是jquery还是CSS中的问题 非常感谢 以下是我的jQuery: $(function () { var HeaderTop = $('#header').offset().top; $(window).scroll(function () { if ($(wind

我对jquery有一个问题,我制作了一个固定的标题,但是当它向下滚动时,它没有水平对齐。在CSS中,我将边距放在左边:auto;右边距:自动;它做得很好,但当我向下滚动时,标题会转到左侧

我不知道这是jquery还是CSS中的问题

非常感谢

以下是我的jQuery:

$(function () {
    var HeaderTop = $('#header').offset().top;
    $(window).scroll(function () {
        if ($(window).scrollTop() > HeaderTop) {
            $('#header').css({
                position: 'fixed',
                top: '0px',
                marginLeft: 'auto',
                marginRight: 'auto'
            });
        } else {
            $('#header').css({
                position: 'relative',
                top: '0px'
            });
        }
    });
});
我的CSS:

    html, body
    {
        height:100%;
    }
    body
    {
        margin: 0;
        padding: 0;
    } 
    #header
    {
        width:900px;
        height:100px;
        background-color:#FFF;
        margin-left:auto;
        margin-right:auto;
        border-top:1px;
        border-top-color:#D2D2D2;
        border-top-style:solid;
        border-bottom:1px;
        border-bottom-color:#D2D2D2;
        border-bottom-style:solid;
    }
    header
    {
        background-color:#FFF;
        width:900px;
        margin-left:auto;
        margin-right:auto;
        text-align:center;
    }
    .content
    {
        width:900px;
        margin-left:auto;
        margin-right:auto;
    }
    #header ul
    {
        list-style:none;
    }
    #header ul li
    {
        display:inline;
        padding:10px;
    }
我的HTML:

    <header>
    <img src="darkness.png" height="100" />
    </header>
    <div id="header">
    <ul>
    <li>Home</li><li>About</li>
    </ul>
    </div>
    <div class="content">
    </div>

  • 主页
  • 关于

jsiddle演示:

您甚至不需要为此使用JQuery

为了稍微解释一下这一点,负边距是您定义的宽度的一半,因为元素基于其最左上角的点在页面上居中,所以我们通过将其向后移动一半来补偿这一点

固定位置默认为最左边和最上面对齐,所以需要一点按摩

但正如您所看到的,这是一个CSS解决方案,所以除非您需要使用JQuery,否则我将避免使用它。它为纯CSS中可以完成的事情增加了不必要的开销和复杂性


JQUERY解决方案


您不能将
自动
边距
固定
定位一起使用,您需要使用我建议的边距固定。

您可以像这样添加一个额外的div

<div id="wrapp">
    <div id="header">
        <ul>
            <li>Home</li>
            <li>About</li>
        </ul>
    </div>
</div>     
因此,您可以有保证金:0自动;工作

这里有一段代码:我不想要类似的东西,我想要在向下滚动页面时有一个固定的标题,类似的东西:。但是头球偏左没有问题。使用固定定位有时会很棘手。
    if ($(window).scrollTop() > HeaderTop) {
        $('#header').css({
            position: 'fixed',
            top: '0px',
            left:'50%',
            marginLeft: '-450px'
        });
<div id="wrapp">
    <div id="header">
        <ul>
            <li>Home</li>
            <li>About</li>
        </ul>
    </div>
</div>     
#wrapp{
    width:100%;
    position:fixed;
    top:0px;
}