1

我正在处理我的第一个网页,但在为我的粘性导航栏找到正确的代码时遇到了问题。导航栏已经附加了一个 jQuery 代码,所以我想知道这是否会影响代码,或者我使用的不是正确的。这是导航栏的 HTML...

                <div id="tab_container">
                    <nav id="tabs">
                        <ul id="nav">
                            <li class="active"><a href="#">About</a></li>
                            <li class="inactive"><a href="#">Services</a></li>
                            <li class="inactive"><a href="#">Our Staff</a></li>
                            <li class="inactive"><a href="#">book</a></li>
                            <li class="inactive"><a href="#">Gift Cards</a></li>
                            <li class="inactive"><a href="#">Reviews</a></li>
                        </ul>
                    </nav>
                </div>

这是我的CSS...

 #tab_container
{
    background-color: #1E1E1E;
    display: -webkit-box;
    -webkit-box-flex: 1;
    display: block;
    position: relative;
    max-width: 970px;
    width: 100%;
    text-align: center;
}

#tabs 
{
    float: left;
    margin-top: 0px;
    width: 100%;
    max-width: 970px;
    background-color: #1E1E1E;
    padding-top: 20px;
    text-align: center;
}

#nav 
{
    width: 100%;
    max-width: 970px;
    text-align: center;
    background-color: #1E1E1E;
}

ul
{
    float: left;
    max-width: 970px;
    display: -webkit-box;
   -webkit-box-flex: 1;
    width: 100%;
    padding-left: 0px;
    margin-bottom: 0px;
    margin-top: 0px;
    margin-right: 0px;
    text-align: center;
    background-color: #1E1E1E;
}

ul li
{
    display: inline-block;
    text-align: center;
    width: 158px;
    height: 70px;
    background-color: #1a1a1a;
    font-size: 18px;
    text-transform: uppercase;
    text-align: center;
    margin:0 auto;
    padding: 0;
}

ul li a
{
    color: #54544b;
    display: block;
    height: 100%;
    width: 100%;
    text-decoration: none;
    text-align: center;
    margin: 0px auto;
    line-height: 70px;

}

a:hover
{ 
    color: #CF7BA1;
}

.active a
{
    text-decoration: underline;
    color: #CF7BA1;
    background-color: #222;
}

对于我已经包含的 jQuery....

$(document).ready(function(){
$('ul#nav li').click(function(){
    var number = $(this).index();
    $('.sec').hide().eq(number).show();
            $(this).toggleClass('active inactive');
    $('ul#nav li').not(this).removeClass('active').addClass('inactive');

});

    $('.sec').not(':first').hide();

});
4

3 回答 3

1

为了使其具有粘性,您将position: fixed在 css 中使用它。这使它相对于浏览器窗口保持在相同的位置。您不必为此部分使用任何 jQuery。

于 2013-06-12T18:23:13.747 回答
1

尝试position:fixed;

 #tab_container
 {
background-color: #1E1E1E;
display: -webkit-box;
-webkit-box-flex: 1;
display: block;
position: fixed;  //change this to fixed....to stick to top
max-width: 970px;
width: 100%;
text-align: center;
 }

不过,您必须在容器 div 中补偿标题的高度,因此请注意在我的演示中,我在“bodydiv”中添加了 200px 的填充以进行补偿

在这里演示

于 2013-06-12T18:19:52.733 回答
0

即使不使用 javascript、jquery 或任何其他脚本语言,也可以有一个粘性的导航栏。您只需要在 CSS 代码中添加另一个属性。一切能施展魔法的都是position: fixed属性。该position属性表示 HTML 中特定分区的位置类型。后面是提到像素位置的属性。它们是topbottomrightleft。这是代码:

#tab_container
{
    background-color: #1E1E1E;
    display: -webkit-box;
    -webkit-box-flex: 1;
    display: block;
    position: relative;
    max-width: 970px;
    width: 100%;
    text-align: center;
    position: fixed;
    top: 0px;
}

#tabs 
{
    float: left;
    margin-top: 0px;
    width: 100%;
    max-width: 970px;
    background-color: #1E1E1E;
    padding-top: 20px;
    text-align: center;
}

#nav 
{
    width: 100%;
    max-width: 970px;
    text-align: center;
    background-color: #1E1E1E;
}

ul
{
    float: left;
    max-width: 970px;
    display: -webkit-box;
   -webkit-box-flex: 1;
    width: 100%;
    padding-left: 0px;
    margin-bottom: 0px;
    margin-top: 0px;
    margin-right: 0px;
    text-align: center;
    background-color: #1E1E1E;
}

ul li
{
    display: inline-block;
    text-align: center;
    width: 158px;
    height: 70px;
    background-color: #1a1a1a;
    font-size: 18px;
    text-transform: uppercase;
    text-align: center;
    margin:0 auto;
    padding: 0;
}

ul li a
{
    color: #54544b;
    display: block;
    height: 100%;
    width: 100%;
    text-decoration: none;
    text-align: center;
    margin: 0px auto;
    line-height: 70px;

}

a:hover
{ 
    color: #CF7BA1;
}

.active a
{
    text-decoration: underline;
    color: #CF7BA1;
    background-color: #222;
}
<div id="tab_container">
                    <nav id="tabs">
                        <ul id="nav">
                            <li class="active"><a href="#">About</a></li>
                            <li class="inactive"><a href="#">Services</a></li>
                            <li class="inactive"><a href="#">Our Staff</a></li>
                            <li class="inactive"><a href="#">book</a></li>
                            <li class="inactive"><a href="#">Gift Cards</a></li>
                            <li class="inactive"><a href="#">Reviews</a></li>
                        </ul>
                    </nav>
                </div>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>
                <p> Some Text <p>

这里我们使用position: fixed后跟是top: 0px因为我们希望导航栏始终固定在距屏幕顶部 0 像素处。如问题所述,如果您正在寻找 STICKY 的,您最好选择position: sticky. 希望能帮助到你。

如果您想了解更多关于positionCSS 中的属性,请访问https://www.w3schools.com/css/css_positioning.asp

于 2018-01-05T15:32:09.850 回答