Bootstrap - 如何使垂直侧边栏具有固定宽度/不可滚动但仍然响应?

时间:2015-06-13 10:52:01

标签: javascript css twitter-bootstrap

我是新手,并试图找出我的能力:

  1. 有一个固定宽度的垂直侧边栏,不会滚动内容但仍然响应(如果屏幕宽度太小,它会成为我们习惯的汉堡菜单的顶栏)
  2. 让主要内容div占剩余宽度的100%(减去侧边栏固定宽度)
  3. 这是我到目前为止所拥有的代码(我在某处找到了几乎可以实现我想要的代码,但是带有内容和内容div的侧边栏滚动不会占用100%的重新宽度):

    进口:

    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
    <link rel="stylesheet" type="text/css" href="scripts/css/bootstrap.css" />
    <script type="text/javascript" src="scripts/js/bootstrap.min.js"></script>
    

    JS

        <script type="text/javascript">
        $(document).ready(function () {
            $('[data-toggle=offcanvas]').click(function () {
                $('.row-offcanvas').toggleClass('active');
            });
        });
    </script>
    

    CSS:

    body {
      padding-top: 51px;  
    }
    .text-center {
      padding-top: 20px;
    }
    .col-xs-12 {
      background-color: #fff;
    }
    #sidebar {
      height: 100%;
      padding-right: 0;
      padding-top: 20px;
    }
    #sidebar .nav {
      width: 95%;
    }
    #sidebar li {
      border:0 #f2f2f2 solid;
      border-bottom-width:1px;
    }
    
    @media screen and (max-width: 767px) {
      .row-offcanvas {
        position: relative;
        -webkit-transition: all 0.25s ease-out;
        -moz-transition: all 0.25s ease-out;
        transition: all 0.25s ease-out;
      }
      .row-offcanvas-right
      .sidebar-offcanvas {
        right: -41.6%;
      }
    
      .row-offcanvas-left
      .sidebar-offcanvas {
        left: -41.6%;
      }
      .row-offcanvas-right.active {
        right: 41.6%;
      }
      .row-offcanvas-left.active {
        left: 41.6%;
      }
      .sidebar-offcanvas {
        position: absolute;
        top: 0;
        width: 41.6%;
      }
      #sidebar {
        padding-top:0;
      }
    }
    
    .fixed {
        width: 200px;
        float: left;
    }
    

    HTML:

        <body>
        <div class="page-container">
    
            <!-- top navbar -->
            <div class="navbar navbar-default navbar-fixed-top" role="navigation">
                <div class="container-fluid">
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="offcanvas" data-target=".sidebar-nav">
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                            <span class="icon-bar"></span>
                        </button>
                        <a class="navbar-brand" href="#">Project Name</a>
                    </div>
                </div>
            </div>
    
            <div class="container-fluid">
                <div class="row row-offcanvas row-offcanvas-left">
    
                    <!-- sidebar -->
                    <div class="col-xs-6 col-sm-3 sidebar-offcanvas fixed" id="sidebar" role="navigation">
                        <ul class="nav">
                            <li class="active"><a href="#">Home</a></li>
                            <li><a href="#">Link 1</a></li>
                            <li><a href="#">Link 2</a></li>
                            <li><a href="#">Link 3</a></li>
                        </ul>
                    </div>
    
                    <!-- main area -->
                    <div class="col-xs-12 col-sm-9" style="background-color: blue;">
                        <h1>Shrink Width to Collapse Sidebar</h1>
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus in nisi eu arcu tempus vehicula.
                            Nulla faucibus cursus metus in sagittis. Nunc elit leo, imperdiet in ligula in, euismod varius est.
                            Aenean pellentesque lorem a porttitor placerat. Vestibulum placerat nunc ac rutrum fringilla. Donec
                            arcu leo, tempus adipiscing volutpat id, congue in purus. Pellentesque scelerisque mattis nibh vel
                            semper. Sed a risus purus. Fusce pulvinar, velit eget rhoncus facilisis, enim elit vulputate nisl, a
                            euismod diam metus eu enim. Nullam congue justo vitae justo accumsan, sit amet malesuada nulla sagittis.
                            Nam neque tellus, tristique in est vel, sagittis congue turpis. Aliquam nulla lacus, laoreet dapibus
                            odio vitae, posuere volutpat magna. Nam pulvinar lacus in sapien feugiat, sit amet vestibulum enim
                            eleifend. Integer sit amet ante auctor, lacinia sem quis, consectetur nulla.
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus in nisi eu arcu tempus vehicula.
                            Nulla faucibus cursus metus in sagittis. Nunc elit leo, imperdiet in ligula in, euismod varius est.
                            Aenean pellentesque lorem a porttitor placerat. Vestibulum placerat nunc ac rutrum fringilla. Donec
                            arcu leo, tempus adipiscing volutpat id, congue in purus. Pellentesque scelerisque mattis nibh vel
                            semper. Sed a risus purus. Fusce pulvinar, velit eget rhoncus facilisis, enim elit vulputate nisl, a
                            euismod diam metus eu enim. Nullam congue justo vitae justo accumsan, sit amet malesuada nulla sagittis.
                            Nam neque tellus, tristique in est vel, sagittis congue turpis. Aliquam nulla lacus, laoreet dapibus
                            odio vitae, posuere volutpat magna. Nam pulvinar lacus in sapien feugiat, sit amet vestibulum enim
                            eleifend. Integer sit amet ante auctor, lacinia sem quis, consectetur nulla.
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus in nisi eu arcu tempus vehicula.
                            Nulla faucibus cursus metus in sagittis. Nunc elit leo, imperdiet in ligula in, euismod varius est.
                            Aenean pellentesque lorem a porttitor placerat. Vestibulum placerat nunc ac rutrum fringilla. Donec
                            arcu leo, tempus adipiscing volutpat id, congue in purus. Pellentesque scelerisque mattis nibh vel
                            semper. Sed a risus purus. Fusce pulvinar, velit eget rhoncus facilisis, enim elit vulputate nisl, a
                            euismod diam metus eu enim. Nullam congue justo vitae justo accumsan, sit amet malesuada nulla sagittis.
                            Nam neque tellus, tristique in est vel, sagittis congue turpis. Aliquam nulla lacus, laoreet dapibus
                            odio vitae, posuere volutpat magna. Nam pulvinar lacus in sapien feugiat, sit amet vestibulum enim
                            eleifend. Integer sit amet ante auctor, lacinia sem quis, consectetur nulla.
                        </p>
                        <p>
                            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus in nisi eu arcu tempus vehicula.
                            Nulla faucibus cursus metus in sagittis. Nunc elit leo, imperdiet in ligula in, euismod varius est.
                            Aenean pellentesque lorem a porttitor placerat. Vestibulum placerat nunc ac rutrum fringilla. Donec
                            arcu leo, tempus adipiscing volutpat id, congue in purus. Pellentesque scelerisque mattis nibh vel
                            semper. Sed a risus purus. Fusce pulvinar, velit eget rhoncus facilisis, enim elit vulputate nisl, a
                            euismod diam metus eu enim. Nullam congue justo vitae justo accumsan, sit amet malesuada nulla sagittis.
                            Nam neque tellus, tristique in est vel, sagittis congue turpis. Aliquam nulla lacus, laoreet dapibus
                            odio vitae, posuere volutpat magna. Nam pulvinar lacus in sapien feugiat, sit amet vestibulum enim
                            eleifend. Integer sit amet ante auctor, lacinia sem quis, consectetur nulla.
                        </p>
    
                        <p>
                            Vestibulum porttitor massa eget pellentesque eleifend. Suspendisse tempor, nisi eu placerat auctor,
                            est erat tempus neque, pellentesque venenatis eros lorem vel quam. Nulla luctus malesuada porttitor.
                            Fusce risus mi, luctus scelerisque hendrerit feugiat, volutpat gravida nisi. Quisque facilisis risus
                            in lacus sagittis malesuada. Suspendisse non purus diam. Nunc commodo felis sit amet tortor
                            adipiscing varius. Fusce commodo nulla quis fermentum hendrerit. Donec vulputate, tellus sed
                            venenatis sodales, purus nibh ullamcorper quam, sit amet tristique justo velit molestie lorem.
                        </p>
                        <p>
                            Vestibulum porttitor massa eget pellentesque eleifend. Suspendisse tempor, nisi eu placerat auctor,
                            est erat tempus neque, pellentesque venenatis eros lorem vel quam. Nulla luctus malesuada porttitor.
                            Fusce risus mi, luctus scelerisque hendrerit feugiat, volutpat gravida nisi. Quisque facilisis risus
                            in lacus sagittis malesuada. Suspendisse non purus diam. Nunc commodo felis sit amet tortor
                            adipiscing varius. Fusce commodo nulla quis fermentum hendrerit. Donec vulputate, tellus sed
                            venenatis sodales, purus nibh ullamcorper quam, sit amet tristique justo velit molestie lorem.
                        </p>
                        <p>
                            Vestibulum porttitor massa eget pellentesque eleifend. Suspendisse tempor, nisi eu placerat auctor,
                            est erat tempus neque, pellentesque venenatis eros lorem vel quam. Nulla luctus malesuada porttitor.
                            Fusce risus mi, luctus scelerisque hendrerit feugiat, volutpat gravida nisi. Quisque facilisis risus
                            in lacus sagittis malesuada. Suspendisse non purus diam. Nunc commodo felis sit amet tortor
                            adipiscing varius. Fusce commodo nulla quis fermentum hendrerit. Donec vulputate, tellus sed
                            venenatis sodales, purus nibh ullamcorper quam, sit amet tristique justo velit molestie lorem.
                        </p>
    
                        <p>
                            Fusce sollicitudin lacus lacinia mi tincidunt ullamcorper. Aenean velit ipsum, vestibulum nec
                            tincidunt eu, lobortis vitae erat. Nullam ultricies fringilla ultricies. Sed euismod nibh quis
                            tincidunt dapibus. Nulla quam velit, porta sit amet felis eu, auctor fringilla elit. Donec
                            convallis tincidunt nibh, quis pellentesque sapien condimentum a. Phasellus purus dui, rhoncus
                            id suscipit id, ornare et sem. Duis aliquet posuere arcu a ornare. Pellentesque consequat libero
                            id massa accumsan volutpat. Fusce a hendrerit lacus. Nam elementum ac eros eu porttitor.
                            Phasellus enim mi, auctor sit amet luctus a, commodo fermentum arcu. In volutpat scelerisque
                            quam, nec lacinia libero.
                        </p>
    
                        <p>
                            Aliquam a lacinia orci, iaculis porttitor neque. Nullam cursus dolor tempus mauris posuere, eu
                            scelerisque sem tincidunt. Praesent blandit sapien at sem pulvinar, vel egestas orci varius.
                            Praesent vitae purus at ante aliquet luctus vel quis nibh. Mauris id nulla vitae est lacinia
                            rhoncus a vel justo. Donec iaculis quis sapien vel molestie. Aliquam sed elementum orci.
                            Vestibulum tristique tempor risus et malesuada. Sed eget ligula sed quam placerat dapibus.
                            Integer accumsan ac massa at tempus.
                        </p>
                        <p>
                            Vestibulum porttitor massa eget pellentesque eleifend. Suspendisse tempor, nisi eu placerat auctor,
                            est erat tempus neque, pellentesque venenatis eros lorem vel quam. Nulla luctus malesuada porttitor.
                            Fusce risus mi, luctus scelerisque hendrerit feugiat, volutpat gravida nisi. Quisque facilisis risus
                            in lacus sagittis malesuada. Suspendisse non purus diam. Nunc commodo felis sit amet tortor
                            adipiscing varius. Fusce commodo nulla quis fermentum hendrerit. Donec vulputate, tellus sed
                            venenatis sodales, purus nibh ullamcorper quam, sit amet tristique justo velit molestie lorem.
                        </p>
    
                        <p>
                            Fusce sollicitudin lacus lacinia mi tincidunt ullamcorper. Aenean velit ipsum, vestibulum nec
                            tincidunt eu, lobortis vitae erat. Nullam ultricies fringilla ultricies. Sed euismod nibh quis
                            tincidunt dapibus. Nulla quam velit, porta sit amet felis eu, auctor fringilla elit. Donec
                            convallis tincidunt nibh, quis pellentesque sapien condimentum a. Phasellus purus dui, rhoncus
                            id suscipit id, ornare et sem. Duis aliquet posuere arcu a ornare. Pellentesque consequat libero
                            id massa accumsan volutpat. Fusce a hendrerit lacus. Nam elementum ac eros eu porttitor.
                            Phasellus enim mi, auctor sit amet luctus a, commodo fermentum arcu. In volutpat scelerisque
                            quam, nec lacinia libero.
                        </p>
    
                        <p>
                            Aliquam a lacinia orci, iaculis porttitor neque. Nullam cursus dolor tempus mauris posuere, eu
                            scelerisque sem tincidunt. Praesent blandit sapien at sem pulvinar, vel egestas orci varius.
                            Praesent vitae purus at ante aliquet luctus vel quis nibh. Mauris id nulla vitae est lacinia
                            rhoncus a vel justo. Donec iaculis quis sapien vel molestie. Aliquam sed elementum orci.
                            Vestibulum tristique tempor risus et malesuada. Sed eget ligula sed quam placerat dapibus.
                            Integer accumsan ac massa at tempus.
                        </p>
                        <p>
                            Vestibulum porttitor massa eget pellentesque eleifend. Suspendisse tempor, nisi eu placerat auctor,
                            est erat tempus neque, pellentesque venenatis eros lorem vel quam. Nulla luctus malesuada porttitor.
                            Fusce risus mi, luctus scelerisque hendrerit feugiat, volutpat gravida nisi. Quisque facilisis risus
                            in lacus sagittis malesuada. Suspendisse non purus diam. Nunc commodo felis sit amet tortor
                            adipiscing varius. Fusce commodo nulla quis fermentum hendrerit. Donec vulputate, tellus sed
                            venenatis sodales, purus nibh ullamcorper quam, sit amet tristique justo velit molestie lorem.
                        </p>
    
                        <p>
                            Fusce sollicitudin lacus lacinia mi tincidunt ullamcorper. Aenean velit ipsum, vestibulum nec
                            tincidunt eu, lobortis vitae erat. Nullam ultricies fringilla ultricies. Sed euismod nibh quis
                            tincidunt dapibus. Nulla quam velit, porta sit amet felis eu, auctor fringilla elit. Donec
                            convallis tincidunt nibh, quis pellentesque sapien condimentum a. Phasellus purus dui, rhoncus
                            id suscipit id, ornare et sem. Duis aliquet posuere arcu a ornare. Pellentesque consequat libero
                            id massa accumsan volutpat. Fusce a hendrerit lacus. Nam elementum ac eros eu porttitor.
                            Phasellus enim mi, auctor sit amet luctus a, commodo fermentum arcu. In volutpat scelerisque
                            quam, nec lacinia libero.
                        </p>
    
                        <p>
                            Aliquam a lacinia orci, iaculis porttitor neque. Nullam cursus dolor tempus mauris posuere, eu
                            scelerisque sem tincidunt. Praesent blandit sapien at sem pulvinar, vel egestas orci varius.
                            Praesent vitae purus at ante aliquet luctus vel quis nibh. Mauris id nulla vitae est lacinia
                            rhoncus a vel justo. Donec iaculis quis sapien vel molestie. Aliquam sed elementum orci.
                            Vestibulum tristique tempor risus et malesuada. Sed eget ligula sed quam placerat dapibus.
                            Integer accumsan ac massa at tempus.
                        </p>
    
                    </div>
                </div>
            </div>
        </div>
    </body>
    

    提前致谢!

1 个答案:

答案 0 :(得分:0)

我有它的工作,以便菜单粘在左边,内容是其余页面宽度的100%。要做到这一点;

补充工具栏位置已修复

第一步

更改 - <div class="col-xs-6 col-sm-3 sidebar-offcanvas fixed" id="sidebar" role="navigation">至 - <div class="col-xs-6 col-sm-3 sidebar-offcanvas fixedSide" id="sidebar" role="navigation">

第二步

将以下内容添加到CSS底部的CSS中 -

 .fixedSide {
    position: fixed;
    top: 75px;    
    left: 0px;
    bottom: 0px;
    right: 0px;
}

第3步

从当前的CSS中删除以下内容;

.fixed {
    width: 200px;
    float: left;
}

内容100%

第1步

content fix课程添加到<div class="col-xs-12 col-sm-9" style="background-color: blue;">

第2步

添加以下CSS;

.contentfix {
    margin-left: 20%; 
    width: 100%;
}

@media screen and (max-width: 767px) {
 .contentfix {
    margin-left: 0%;   
 }

}