如何计算此侧边栏的高度?

时间:2015-10-23 00:11:18

标签: javascript jquery html css

我的目标是没有垂直滚动100%响应高度。对于我的生活,我无法弄清楚这个侧边栏的高度是如何计算的。无论我在大小的屏幕上,它都超过了页面的高度。 CSS中唯一的高度设置是height:100%

    $("#menu-toggle").click(function (e) {
        e.preventDefault();
        $("#wrapper").toggleClass("toggled");
    });
    $("#menu-toggle-2").click(function (e) {
        e.preventDefault();
        $("#wrapper").toggleClass("toggled-2");
        $('#menu ul').hide();
    });

    function initMenu() {
        $('#menu ul').hide();
        $('#menu ul').children('.current').parent().show();
        //$('#menu ul:first').show();
        $('#menu li a').click(
            function () {
                var checkElement = $(this).next();
                if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
                    return false;
                }
                if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
                    $('#menu ul:visible').slideUp('normal');
                    checkElement.slideDown('normal');
                    return false;
                }
            }
        );
    }
    $(document).ready(function () { initMenu(); });
/* Toggle Styles */
.navbar
{
    border-radius: 0;
    -moz-border-radius: 0;
    -webkit-border-radius: 0;
}

#wrapper
{
    padding-left: 0;
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;
    overflow: hidden;
}

    #wrapper.toggled
    {
        padding-left: 250px;
        overflow: hidden;
    }

#sidebar-wrapper
{
    z-index: 1000;
    position: absolute;
    left: 250px;
    width: 0;
    height: 100%;
    margin-left: -250px;
    overflow: hidden;
    /*overflow-y: hidden;*/
    background: #000;
    -webkit-transition: all 0.5s ease;
    -moz-transition: all 0.5s ease;
    -o-transition: all 0.5s ease;
    transition: all 0.5s ease;
}

#wrapper.toggled #sidebar-wrapper
{
    width: 250px;
}

#page-content-wrapper
{
    position: absolute;
    /*padding: 15px;*/
    width: 100%;
    overflow-x: hidden;
}

.xyz
{
    min-width: 360px;
}

#wrapper.toggled #page-content-wrapper
{
    position: relative;
    margin-right: 0px;
}

.fixed-brand
{
    width: auto;
}
/* Sidebar Styles */

.sidebar-nav
{
    position: absolute;
    top: 0;
    width: 250px;
    margin: 0;
    padding: 0;
    list-style: none;
    margin-top: 2px;
    color: #fff;
}

    .sidebar-nav li
    {
        text-indent: 15px;
        line-height: 40px;
    }

        .sidebar-nav li a
        {
            display: block;
            text-decoration: none;
            color: #999999;
        }

            .sidebar-nav li a:hover
            {
                text-decoration: none;
                color: #fff;
                background: rgba(255,255,255,0.2);
                border-left: red 2px solid;
            }

            .sidebar-nav li a:active,
            .sidebar-nav li a:focus
            {
                text-decoration: none;
            }

    .sidebar-nav > .sidebar-brand
    {
        height: 65px;
        font-size: 18px;
        line-height: 60px;
    }

        .sidebar-nav > .sidebar-brand a
        {
            color: #999999;
        }

            .sidebar-nav > .sidebar-brand a:hover
            {
                color: #fff;
                background: none;
            }

.no-margin
{
    margin: 0;
}

@media (min-width:768px)
{
    #wrapper
    {
        padding-left: 250px;
    }

    .fixed-brand
    {
        width: 200px;
    }

    #wrapper.toggled
    {
        padding-left: 0;
    }

    #sidebar-wrapper
    {
        width: 250px;
    }

    #wrapper.toggled #sidebar-wrapper
    {
        width: 250px;
    }

    #wrapper.toggled-2 #sidebar-wrapper
    {
        width: 0;
    }

        #wrapper.toggled-2 #sidebar-wrapper:hover
        {
            width: 250px;
        }


    #page-content-wrapper
    {
        /*padding: 20px;*/
        position: relative;
        /*-webkit-transition: all 0.5s ease;
        -moz-transition: all 0.5s ease;
        -o-transition: all 0.5s ease;
        transition: all 0.5s ease;*/
    }

    #wrapper.toggled #page-content-wrapper
    {
        position: relative;
        margin-right: 0;
        padding-left: 250px;
    }

    #wrapper.toggled-2 #page-content-wrapper
    {
        position: relative;
        margin-right: 0;
        margin-left: -200px;
        -webkit-transition: all 0.5s ease;
        -moz-transition: all 0.5s ease;
        -o-transition: all 0.5s ease;
        transition: all 0.5s ease;
        width: auto;
    }
}


.sidebar-section-container
{
    padding: 8px;
}

    .sidebar-section-container p
    {
        font-size: 12px;
        text-align: right;
    }

        .sidebar-section-container p label
        {
            display: inline-block;
            vertical-align: middle;
        }

        .sidebar-section-container p span
        {
            display: inline-block;
            vertical-align: middle;
            width: 90px;
        }

    .sidebar-section-container .sidebar-price
    {
        width: 70px;
    }

.sidebar-section-top
{
    border-bottom: 1px solid #a9a9aa;
    padding: 0 0 10px;
}

.sidebar-section-middle
{
    border-bottom: 1px solid #a9a9aa;
    padding: 10px 0;
}

.sidebar-section-bottom .btn-primary
{
    width: 110px;
    margin: 10px 0;
    position: relative;
    z-index: 999;
}

.sidebar-section-bottom p
{
    padding: 10px 0 0;
    font-weight: bold;
    font-size: 15px;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<html>
<body>
<nav class="navbar navbar-default no-margin">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header fixed-brand">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" id="menu-toggle">
            <span class="glyphicon glyphicon-th-large" aria-hidden="true"></span>
        </button>
        <a class="navbar-brand" href="#"><i class="fa fa-rocket fa-4"></i>Couture | Book</a>
    </div>
    <!-- navbar-header-->

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
            <li class="active">
                <button class="navbar-toggle collapse in" data-toggle="collapse" id="menu-toggle-2"><span class="glyphicon glyphicon-th-large" aria-hidden="true"></span></button>
            </li>
        </ul>
    </div>
    <!-- bs-example-navbar-collapse-1 -->
</nav>
<div id="wrapper">
    <!-- Sidebar -->
    <div id="sidebar-wrapper">
        <ul class="sidebar-nav nav-pills nav-stacked" id="menu">
            
            <li class="active">
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-dashboard fa-stack-1x "></i></span>Dashboard</a>
                <ul class="nav-pills nav-stacked" style="list-style-type: none;">
                    <li><a href="#">link1</a></li>
                    <li><a href="#">link2</a></li>
                </ul>
            </li>
            <li>
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-flag fa-stack-1x "></i></span>Shortcut</a>
                <ul class="nav-pills nav-stacked" style="list-style-type: none;">
                    <li><a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-flag fa-stack-1x "></i></span>link1</a></li>
                    <li><a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-flag fa-stack-1x "></i></span>link2</a></li>

                </ul>
            </li>
            <li>
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-cloud-download fa-stack-1x "></i></span>Overview</a>
            </li>
            <li>
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-cart-plus fa-stack-1x "></i></span>Events</a>
            </li>
            <li>
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-youtube-play fa-stack-1x "></i></span>About</a>
            </li>
            <li>
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-wrench fa-stack-1x "></i></span>Services</a>
            </li>
            <li>
                <a href="#"><span class="fa-stack fa-lg pull-left"><i class="fa fa-server fa-stack-1x "></i></span>Contact</a>
            </li>
        </ul>
    </div>
    <!-- /#sidebar-wrapper -->
    <!-- Page Content -->
    <div id="page-content-wrapper">
        <div class="container-fluid xyz">
            The Body
        </div>
    </div>
 </body>
 </html>

1 个答案:

答案 0 :(得分:2)

只需将其添加到您的@media

即可
#sidebar-wrapper{
    height: calc(100vh - 58px);   /* Where 58 is the exact height of the top bar */
}

(不过,很快就会出现随机滚动条,同时菜单会在调整大小时动画(谁在乎:)这不是用户调整浏览器大小以便与网站或应用程序一起运行)但它会让你走上正确的轨道)