Заголовок 100% рост минус? [дубликат]


этот вопрос уже есть ответ здесь:

  • CSS-высота 100% минус #px-верхний и Нижний колонтитулы 5 ответов

Я хочу создать макет для панели администратора, но я не знаю, как получить #Nav и содержание всегда на 100% окна браузера. Я не понимаю наследование 100% атрибутов высоты, может кто-то объясните это более ясно?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>index.htm</title>
    <link rel="stylesheet" type="text/css" href="main.css">
</head>
<body>

        <div id="header">
            <img src="./img/header_logo.png" alt="bla"/>
        </div><!-- #header -->
        <div id="nav">
        </div><!-- #nav -->
        <div id="content">
        asfdg
        </div><!-- #content -->
        <div class="clear">
        </div>

</body>
</html>

главная.css

    html, body{
    font-family: Helvetica, "Helvetica Neue", Arial, Geneva, sans-serif;
    margin: 0px;
    padding: 0px;
    height: 100%;
}
img{
    margin: 0px;
    padding: 0px;
    border-width: 0px;
}
#wrapper{

}
#header{
    background: url(img/header_bg.png) repeat-x;
    height: 65px;
    padding-top: 20px;
    padding-left: 25px;
}
#nav{
    width: 235px;
    float: left; 
    background-color: #f7f7f7;
    border-right: 1px solid #d9d9d9;
    height: 100%;

}
#content{
    float: left;
    width: auto;
    padding: 15px;

}
.clear{
    clear: both;
}

какие идеи?

3 54

3 ответа:

Если ваш браузер поддерживает CSS3, попробуйте использовать элемент CSS Calc()

height: calc(100% - 65px);

вы также можете добавить параметры совместимости браузера:

height: -o-calc(100% - 65px); /* opera */
height: -webkit-calc(100% - 65px); /* google, safari */
height: -moz-calc(100% - 65px); /* firefox */

также убедитесь, что у вас есть пробелы между значениями, см.: https://stackoverflow.com/a/16291105/427622

Как уже упоминалось в комментариях высота: 100% зависит от высоты родительского контейнера, который явно определен. Один из способов добиться того, что вы хотите, - использовать абсолютное/относительное позиционирование и указывать свойства left/right/top/bottom, чтобы "растянуть" содержимое, чтобы заполнить доступное пространство. Я реализовал то, что я собираю вы хотите достичь в jsfiddle. Попробуйте изменить размер окна результатов, и вы увидите, что содержимое изменяется автоматически.

в ограничение этого подхода в вашем случае заключается в том, что вы должны указать явный margin-top на родительском контейнере, чтобы смещать его содержимое вниз, чтобы освободить место для содержимого заголовка. Вы можете сделать его динамическим, если вы бросаете в JavaScript, хотя.

для "100% окна браузера", Если вы имеете в виду этого буквально, Вы должны использовать фиксированное позиционирование. Затем свойства top, bottom, right и left используются для смещения краев divs от соответствующих краев видового экрана:

#nav, #content{position:fixed;top:0px;bottom:0px;}
#nav{left:0px;right:235px;}
#content{left:235px;right:0px}

это позволит настроить экран с левой 235 пикселей, посвященных навигации, и правой остальной части экрана для контента.

Отметим, однако, вы не сможете прокрутить весь экран сразу. Хотя вы можете установить его для прокрутки либо панель по отдельности, применяя overflow:auto к любому div.

Примечание также: фиксированное позиционирование не поддерживается в IE6 или ранее.