How to create a fixed sidebar layout with Bootstrap 4?

前端 未结 5 1263
执笔经年
执笔经年 2020-12-02 14:40

I\'m trying to create a layout like the screenshot using Bootstrap 4 but I\'m having some problems with making the sidebar fixed and achieving this layout at the sa

相关标签:
5条回答
  • 2020-12-02 14:45

    I'm using the J.S. to fix a sidebar menu. I've tried a lot of solutions with CSS but it's the simplest way to solve it, just add J.S. adding and removing a native BootStrap class: "position-fixed".

    The J.S.:

    var lateral = false;
    function fixar() {
    
                var element, name, arr;
                element = document.getElementById("minhasidebar");
    
                if (lateral) {
                    element.className = element.className.replace(
                            /\bposition-fixed\b/g, "");
                    lateral = false;
                } else {
    
                    name = "position-fixed";
                    arr = element.className.split(" ");
                    if (arr.indexOf(name) == -1) {
                        element.className += " " + name;
                    }
                    lateral = true;
                }
    
            }
    

    The HTML:

    Sidebar:

    <aside>
            <nav class="sidebar ">
                 <div id="minhasidebar">
                     <ul class="nav nav-pills">
                         <li class="nav-item"><a class="nav-link active" 
                         th:href="@{/hoje/inicial}"> <i class="oi oi-clipboard"></i> 
                         <span>Hoje</span>
                         </a></li>
                     </ul>
                 </div>
            </nav>            
    </aside>
    
    0 讨论(0)
  • 2020-12-02 14:47

    Updated 2020

    Here's an updated answer for the latest Bootstrap 4.0.0. This version has classes that will help you create a sticky or fixed sidebar without the extra CSS....

    Use sticky-top:

    <div class="container">
        <div class="row py-3">
            <div class="col-3 order-2" id="sticky-sidebar">
                <div class="sticky-top">
                    ...
                </div>
            </div>
            <div class="col" id="main">
                <h1>Main Area</h1>
                ...   
            </div>
        </div>
    </div>
    

    Demo: https://codeply.com/go/O9GMYBer4l

    or, use position-fixed:

    <div class="container-fluid">
        <div class="row">
            <div class="col-3 px-1 bg-dark position-fixed" id="sticky-sidebar">
                ...
            </div>
            <div class="col offset-3" id="main">
                <h1>Main Area</h1>
                ...
            </div>
        </div>
    </div>
    

    Demo: https://codeply.com/p/0Co95QlZsH

    Also see:
    Fixed and scrollable column in Bootstrap 4 flexbox
    Bootstrap col fixed position
    How to use CSS position sticky to keep a sidebar visible with Bootstrap 4
    Create a responsive navbar sidebar "drawer" in Bootstrap 4?

    0 讨论(0)
  • 2020-12-02 14:50

    something like this?

    #sticky-sidebar {
    position:fixed;
    max-width: 20%;
    }
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" rel="stylesheet"/>
    <div class="container">
      <div class="row">
        <div class="col-xs-4">
          <div class="col-xs-12" id="sticky-sidebar">
            Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
          </div>
        </div>
        <div class="col-xs-8" id="main">
          Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
        </div>
      </div>
    </div

    0 讨论(0)
  • 2020-12-02 14:53

    I used this in my code:

    <div class="sticky-top h-100">
        <nav id="sidebar" class="vh-100">
            ....
    

    this cause your sidebar height become 100% and fixed at top.

    0 讨论(0)
  • 2020-12-02 15:08

    My version:

    div#dashmain { margin-left:150px; }
    div#dashside {position:fixed; width:150px; height:100%; }
    
    <div id="dashside"></div>
    <div id="dashmain">                        
        <div class="container-fluid">
            <div class="row">
                <div class="col-md-12">Content</div>
            </div>            
        </div>        
    </div>
    
    0 讨论(0)
提交回复
热议问题