【问题标题】:Sticky nav bar to bottom of browser window将导航栏粘贴到浏览器窗口底部
【发布时间】:2013-05-23 19:57:45
【问题描述】:

我正在尝试创建一个导航栏,该导航栏在加载时位于浏览器窗口的底部,但当您向下滚动时,它会停留在浏览器的顶部。

在这个网站http://thomas-rogers.co.uk/BleepBleeps2/index.html 上有点工作,但我无法将导航栏定位在浏览器窗口的底部,即它有时不可见,具体取决于屏幕尺寸等。

任何帮助将不胜感激。我只是无法理解这一点。

目前我正在使用此代码

            <header>
<div class="container">
    <div class="eight columns offset-by-eight" id="logo-box">
        <h1 class="logo">BleepBleeps</h1>
        <h2 class="subheader">A family of little friends<br>that make parenting easier</h2>
    <!-- MAILCHIMP SIGNUP -->
        <form action="http://bleepbleeps.us6.list-manage1.com/subscribe/post?u=e6067eec57&amp;id=7e02f5f7e4" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
            <input type="email" name="EMAIL" placeholder="Your email" class="required email mc-field-group" id="mce-EMAIL">
            <input type="submit" value="Go" name="subscribe" id="mc-embedded-subscribe" class="tooltip my-custom-theme" title="Sign up to receive amazing Bleep Bleeps content!">

            <div id="mce-responses" class="clear">
                <div class="response" id="mce-error-response" style="display:none"></div>
                <div class="response" id="mce-success-response" style="display:none"></div>
            </div>
        </form><!-- end MAILCHIMP SIGNUP -->
    </div><!-- end logo-box -->
</div><!-- end container -->

<div class="hero">
    <img class="hero-image" src="images/bb-background2.png" alt="#">
</div>

<nav class="navigation">
    <div class="container">
        <img src="images/bb_note.gif" alt="bleepbleeps icon" class="notes">
            <ul class="socialnav">
                <li class="circle-social tw"><a href="http://twitter.com/BleepBleeps"></a></li>
                <li class="circle-social fb"><a href="http://www.facebook.com/BleepBleeps"></a></li>
                <li class="circle-social tu"><a href="http://bleepbleeps.tumblr.com"></a></li>
                <li class="circle-social in"><a href="http://instagram.com/bleepbleeps"></a></li>
            </ul>
    </div>
</nav>

             nav {
width: 100%;
background: #fff;
height: 3em;
     }

    nav.navigation {
position: absolute;
padding-top: 1em;
width: 100%;
background: #fff;
opacity: 0.8;
bottom: 0;
z-index: 99;
     }

    @media only screen and (max-width: 479px) {
nav.navigation {
    position: relative !important;
}
     }

    .sticky {
position: fixed !important;
top: 0;
     }

    .sticky2 {
position: fixed !important;
left: 50%;
margin-left: 10px;
top: 11px;
     }

    @media only screen and (max-width: 767px) {
.sticky {
position: relative; !important;
     }

.sticky2 {
    display: none !important;
}
     }

    .notes {
float:left;
margin-left: 10px;
     }

     var delay = (function(){
var timer = 0;
return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
         };
     })();

     $(function() {

         var pause = 100; // will only process code within delay(function() { ... }) every 100ms.

$(window).resize(function() {

    delay(function() {

        var width = $(window).width();

        $(document).ready(function() {  
            var stickyNavTop = $('.navigation').offset().top;  

            var stickyNav = function(){  
            var scrollTop = $(window).scrollTop();  

            if  (scrollTop > stickyNavTop + 5) {   
                $('.navigation').addClass('sticky');  
            } else {  
                $('.navigation').removeClass('sticky');   
            }  
            };


            stickyNav();  

            $(window).scroll(function() {  
                stickyNav();  
            });  
            }); 

             }, pause );

         });

         $(window).resize();

     });


     $(document).ready(function() {  
     var stickyNavTop2 = $('#mc-embedded-subscribe-form').offset().top;  

     var stickyNav2 = function(){  
     var scrollTop2 = $(window).scrollTop();  

     if (scrollTop2 > stickyNavTop2) {   
         $('#mc-embedded-subscribe-form').addClass('sticky2');  
     } else {  
         $('#mc-embedded-subscribe-form').removeClass('sticky2');   
     }  
     };  

     stickyNav2();  

     $(window).scroll(function() {  
         stickyNav2();  
     });  
     });                 

【问题讨论】:

    标签: jquery css-position nav sticky


    【解决方案1】:

    你可以使用 jQuery 来做。

    类似...

    $('.navigation').css('top',$(window).height()-50);

    您可能想要减去一些像素,例如 50,以便将其向上移动到用户的视图中。

    【讨论】:

    • 嗨@rjg132234,我对使用jQuery 完全陌生,所以我不确定我应该把它放在哪里。我将它输入到我的 main.js 文件中,但它似乎没有将导航定位在屏幕底部。你能给我更多的建议吗?真的很感谢帮助!谢谢
    • 我的错误,我想我误读了你的问题。你的确切问题是什么?您提供的网站在页面底部确实有一个导航栏(虽然主图像很大,在它下方),然后当您滚动它时它会粘在顶部。你能更好地描述你的问题是什么吗?
    • 嗨@rjg132234,感谢您回复我。我希望导航栏在最初加载页面时在所有设备上固定到浏览器窗口的底部。正如您所说,也许这只是更改图像大小的情况?有没有其他办法解决这个问题?
    • 根据您告诉我的内容,听起来您的选择是 1) 将导航栏留在原处并缩小主图像的高度,以便在加载时看到导航栏或 2 ) 最初使用 CSS 将栏向上移动,以便在加载时显示。通过将 bottom:166px 添加到 nav.navigation {} css 或使用 jQuery 并执行以下操作: $('.navigation').css('bottom', $(window).height()-100);这会将导航设置为从打开网站的浏览器高度向上 100 像素。您可以随意调整所需的像素数。
    • 谢谢@rjg132234!这帮助很大 :) 非常感谢您花时间提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多