Bootstrap css hides portion of container below navbar navbar-fixed-top

后端 未结 7 1342
傲寒
傲寒 2020-12-22 20:35

I am building a project with Bootstrap and im facing little issue .I have a container below the Nav-top.My issue is that some portion of my container is hidden below the nav

相关标签:
7条回答
  • 2020-12-22 21:14

    I know this thread is old, but i just got into that exactly problem and i fixed it by just using the page-header class in my page, under the nav. Also i used the <nav> tag instead of <div> but i am not sure it would present any different behavior.

    Using the page-header as a container for the page, you won't need to mess with the <body>, only if you disagree with the default space that the page-header gives you.

    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    
    
    
       <div class="container-fluid">
            <nav class="navbar navbar-default navbar-fixed-top">
        
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="#">Bootstrap</a>
                </div>
                <div id="navbar" class="navbar-collapse collapse">
                    <ul class="nav navbar-nav">
                        <li class="active"><a href="#">Home</a></li>
                        <li class="dropdown">
                                <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
                                <ul class="dropdown-menu">
                                    <li><a href="#">Action</a></li>
                                    <li><a href="#">Another action</a></li>
                                    <li><a href="#">Something else here</a></li>
                                    <li role="separator" class="divider"></li>
                                    <li class="dropdown-header">Nav header</li>
                                    <li><a href="#">Separated link</a></li>
                                    <li><a href="#">One more separated link</a></li>
                                </ul>
                            </li>
                    </ul>
                    <div class="navbar-right">
                    </div>
                </div>
            </nav>
        </div>
        <div class="page-header">
            <div class="clearfix">
                <div class="col-md-12">
                    <div class="col-md-8 col-sm-6 col-xs-12">
                        <h1>Registration form <br /><small>A Bootstrap template showing a registration form with standard fields</small></h1>
                    </div>
                </div>
            </div>
        </div>
            <div class="container">
            <div class="row">
                <form role="form">
                    <div class="col-lg-6">
                        <div class="well well-sm"><strong><span class="glyphicon glyphicon-asterisk"></span>Required Field</strong></div>
                        <div class="form-group">
                            <label for="InputName">Enter Name</label>
                            <div class="input-group">
                                <input type="text" class="form-control" name="InputName" id="InputName" placeholder="Enter Name" required>
                                <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="InputEmail">Enter Email</label>
                            <div class="input-group">
                                <input type="email" class="form-control" id="InputEmailFirst" name="InputEmail" placeholder="Enter Email" required>
                                <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="InputEmail">Confirm Email</label>
                            <div class="input-group">
                                <input type="email" class="form-control" id="InputEmailSecond" name="InputEmail" placeholder="Confirm Email" required>
                                <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="InputMessage">Enter Message</label>
                            <div class="input-group">
                                <textarea name="InputMessage" id="InputMessage" class="form-control" rows="5" required></textarea>
                                <span class="input-group-addon"><span class="glyphicon glyphicon-asterisk"></span></span>
                            </div>
                        </div>
                        <input type="submit" name="submit" id="submit" value="Submit" class="btn btn-info pull-right">
                    </div>
                </form>
        </div>

    0 讨论(0)
  • 2020-12-22 21:22

    This is handled by adding some padding to the top of the <body>.

    As per Bootstrap's documentation on .navbar-fixed-top, try out your own values or use our snippet below. Tip: By default, the navbar is 50px high.

      body {
        padding-top: 70px;
      }
    

    Also, take a look at the source for this example and open starter-template.css.

    0 讨论(0)
  • 2020-12-22 21:24

    It happens because with navbar-fixed-top class the navbar gets the position:fixed. This in turns take the navbar out of the document flow leaving the body to take up the space behind the navbar.

    You need to apply padding-top or margin-top to your container, based on your requirements with values >= 50px. (or play around with different values)

    The basic bootstrap navbar takes height around 40px. So if you give a padding-top or margin-top of 50px or more, you will always have that breathing space between your container and the navbar.

    0 讨论(0)
  • 2020-12-22 21:29

    I too have had this problem but solved it without script and only using CSS. I start by following the recommended padding-top for a fixed menu by setting of 60px described on the Bootstrap website. Then I added three media tags that resize the padding at the cutoff points where my menu also resizes.

    <style>      
        body{
            padding-top:60px;
        }
        /* fix padding under menu after resize */
        @media screen and (max-width: 767px) {
            body { padding-top: 60px; }
        }
        @media screen and (min-width:768px) and (max-width: 991px) {
            body { padding-top: 110px; }
        }
        @media screen and (min-width: 992px) {
            body { padding-top: 60px; }
        }
    </style>
    

    One note, when my menu width is between 768 and 991, the menu logo in my layout plus the <li> options cause the menu to wrap to two lines. Therefore, I had to adjust the padding-top to prevent the menu from covering the content, hence 110px.

    Hope this helps...

    0 讨论(0)
  • 2020-12-22 21:29

    i solved it using jquery

    <script type="text/javascript">
    $(document).ready(function(e) {
       var h = $('nav').height() + 20;
       $('body').animate({ paddingTop: h });
    });
    </script>

    0 讨论(0)
  • 2020-12-22 21:33

    Just define an empty navbar prior to the fixed one, it will create the space needed.

    <nav class="navbar navbar-default ">
    </nav>
    <nav class="navbar  navbar-default navbar-fixed-top ">
         <div class="container-fluid">
    // Your menu code 
         </div>
    </nav>
    
    0 讨论(0)
提交回复
热议问题