Search code examples
htmlcsstwitter-bootstrapnavbarsticky

Sticky navbar increases to 100% when using bootstrap container


I'm able to create a sticky navbar & use it inside a bootstrap container with limited success.

However, when you scroll down, the width of the navbar suddenly increases to 100%.

If I remove the bootstrap container, the problem doesn't occur.

I have a link to it on code pen here

HTML:

  <div class="container">
<div class="row">
  <div class="col-sm">
    <div id="navbar">
      <a href="#home">Home</a>
      <a href="#news">News</a>
      <a href="#contact">Contact</a>
    </div>
  </div>
  </div>


  <div class="content">
      <h3>Sticky Navigation Example</h3>
      <p>The navbar will stick to the top when you reach its scroll position.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
      <p>Some text to enable scrolling.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
    </div>

*Sorry if its something really simple! New to HTML :)


Solution

  • CodePen

    The .container class should be not be used as a wrapper of everything but used inside the main elements.

    HTML

    Remove the .row & .col-sm and add a .container wrapper in the #navbar

    <div class="container">
        <div class="row">
          <div class="col-sm">
            <div id="navbar">
              <a href="#home">Home</a>
              <a href="#news">News</a>
              <a href="#contact">Contact</a>
            </div>
          </div>
    
          <div class="content">
            <h3>Sticky Navigation Example</h3>
            ...
    

    to

    <!--   <div class="row"> -->
    <!--     <div class="col-sm"> -->
          <div id="navbar">
            <div class="container">
              <a href="#home">Home</a>
              <a href="#news">News</a>
              <a href="#contact">Contact</a>
            </div>
          </div>
    <!--     </div> -->
    <!--   </div> -->
    
      <div class="container">
        <div class="content">
          <h3>Sticky Navigation Example</h3>
            ...
    

    CSS

    Change the CSS to add the background to the .container:

    #navbar {
      overflow: hidden;
      background-color: #333;
    }
    

    to

    #navbar .container {
      overflow: hidden;
      background-color: #333;
    }