Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > Как растянуть div на оставшеюся высоту.


Автор: ShurikA 9.3.2009, 11:17
У меня есть header и footer которые должны быть на самом верху и в самом низу страницы соответственно (оба div-ы)...
Между ними есть ещё один div (content) который должен растягиваться на всю оставшеюся высоту как минимум.

С тем что вы предлогаете content всегда как минимум восотой во ВСЮ страницу. и естественно всегда есть прокрутка. 
Как это правильно сделать? 
Код

<div id="headerDiv">
<img src="http://localhost/fluortech/skins/default/images/logo.png"/>
</div>
<div id="topMenuBarDiv">
            .
</div>
<div id="bodyDiv">
    <p>qq</p>
</div>


bodyDiv должен занимать всё что осталось после topMenuBarDiv и headerDiv.

Автор: bars80080 9.3.2009, 11:34
http://www.alexilin.ru/5-sovetov-po-html-i-css/

Автор: ShurikA 10.3.2009, 03:50
Получилось такое:
Код

<body dir="ltr">
<div id="container">
<div id="headerDiv"><img
    src="http://localhost/fluortech/skins/default/images//logo.png" /></div>
<div id="topMenuBarDiv">.</div>
<div id="bodyDiv">
<p>qq</p>
</div>
<div id="footerDiv">.</div>
</div>
</body>


Код

@CHARSET "UTF-8";
/*=====MAIN TEMPLATES=====I*/
html,
body {
   margin:0;
   padding:0;
   height:100%;
}
body {
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
    color:#2B3637;
    background-color:#FFF;
    background-image:url(../images/bg.png);
    text-align: center;
    height: 100%;
}
img {
    border:0px;
    padding: 0px;
    margin: 0px;
}
table {
    border-collapse:collapse;
    border:0px;
    padding:0px 0px 0px 0px;
}
td {
    font:normal 11px Tahoma, Arial;
    vertical-align: middle;
    line-height:16px;
    padding:0px 0px 0px 0px;
}
input, textarea, select {
    font:normal 11px Tahoma;
    padding:2px 0px 2px 0px;
    margin:2px 0px 2px 0px;
    vertical-align:top;
}
div {
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
}
p {
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
}
/* =====MAIN====== */
#container {
    width: 905px;
    min-height:100%;
    height:100%;
    position:relative;
    margin-left: auto;
    margin-right: auto;
}
#headerDiv {
    width: 100%;
    height: 100px;
    text-align: left;
    background-image: url(../images/headerBg.png);
    background-repeat: no-repeat; 
    background-position: left top;
}
#topMenuBarDiv {
    width: 100%;
    height: 39px;
    text-align: center;
    background-image: url(../images/topMenuBar.png);
    background-position: top left;
    background-repeat: no-repeat;
    color: transparent;
}
#bodyDiv {
    width: 100%;
    height: inherit;
    padding: 0px;
    margin-bottom: -46px;
    background-image: url(../images/bodyBg.png);
    background-position: top left;
    background-repeat: repeat-y;
}
#footerDiv {
    position:relative;
    bottom:0;
    width:100%;
    height:46px;
    background-image: url(../images/footerBg.png);
    background-position: top left;
    background-repeat: no-repeat;
}


всё вроде хокей, но bodyDiv получает всю высоту страницы а не оставшеюся после headerDiv, topMenuBarDiv и footerDiv.
Можно было бы конечно убрать height из bodyDiv, но тогда, конечно footerDiv остаётся в самом низу, но bodyDiv остаётся не растянутым.

Что я тут не понимаю?

Автор: Violator 10.3.2009, 03:58
ShurikA, 
вы поставили у #bodyDiv height:inherit - соответственно он будет принимать такую же высоту как и у блока-родителя

Автор: ShurikA 10.3.2009, 04:29
Цитата(Violator @  10.3.2009,  02:58 Найти цитируемый пост)
вы поставили у #bodyDiv height:inherit - соответственно он будет принимать такую же высоту как и у блока-родителя 

И что же надо поставить в высоту?

Автор: Violator 10.3.2009, 11:51
ShurikA, 
убрать height...
растянуть блок на оставшуюся высоту не получится, да и не надо это, если же у вас возникает проблема с бэкграундом то перенесите его из блока #bodyDiv в #container

Автор: ShurikA 10.3.2009, 21:09
Цитата(Violator @  10.3.2009,  10:51 Найти цитируемый пост)
если же у вас возникает проблема с бэкграундом то перенесите его из блока #bodyDiv в #container 

Но в таком случае бэкграунд растягивается и на headerDiv и topMenuBarDiv тоже...  smile 

Автор: ShurikA 11.3.2009, 07:22
Цитата(ShurikA @  10.3.2009,  20:09 Найти цитируемый пост)
Но в таком случае бэкграунд растягивается и на headerDiv и topMenuBarDiv тоже...

Так как мой бэкграунд это одна линия которая поторяется по высоте, я даже не могу начять бэкграунд с определённой высоты. Он прорисовывается по всй высоте.

 smile  smile  smile 

Автор: Violator 11.3.2009, 10:52
ShurikA, 
поставьте для хеадера и топменю background-color:#fff;

Автор: ShurikA 11.3.2009, 11:03
Цитата(Violator @  11.3.2009,  09:52 Найти цитируемый пост)
ShurikA, 
поставьте для хеадера и топменю background-color:#fff;

Но общий background не белый.

Добавлено через 6 минут и 21 секунду
это тоже картинка.

Автор: ShurikA 11.3.2009, 11:44
вроде решил проблемму, так:

Код

<body dir="ltr">
<div id="container">
    <div id="topWrapper">
        <div id="headerDiv">
            <img src="http://localhost/fluortech/skins/default/images//logo.png" />
        </div>
        <div id="topMenuBarDiv">
            .
        </div>
    </div>
    <div id="bodyDiv">
        <p>content</p>
    </div>
</div>
<div id="footerDiv">
    .
</div>
</body>


Код

@CHARSET "UTF-8";
/*=====MAIN TEMPLATES=====I*/
* {
    margin: 0px;
    padding: 0px;
}
html,
body {
   margin:0;
   padding:0;
   height:100%;
}
body {
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
    color:#2B3637;
    background-color:#FFF;
    background-image:url(../images/bg.png);
    text-align: center;
    height: 100%;
}
img {
    border:0px;
    padding: 0px;
    margin: 0px;
}
table {
    border-collapse:collapse;
    border:0px;
    padding:0px 0px 0px 0px;
}
td {
    font:normal 11px Tahoma, Arial;
    vertical-align: middle;
    line-height:16px;
    padding:0px 0px 0px 0px;
}
input, textarea, select {
    font:normal 11px Tahoma;
    padding:2px 0px 2px 0px;
    margin:2px 0px 2px 0px;
    vertical-align:top;
}
div {
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
}
p {
    margin:0px 0px 0px 0px;
    padding:0px 0px 0px 0px;
}
/* =====MAIN====== */
#container {
    width: 905px;
    min-height:100%;
    height: auto !important;
    height: 100%;
    position:relative;
    margin-left: auto;
    margin-right: auto;
    background-image: url(../images/bodyBg.png);
    background-repeat: repeat-y; 
}
#topWrapper {
    width: 100%;
    height: 139px;
    background-color:#FFF;
    background-image:url(../images/bg.png);
    background-repeat: repeat;
}
#headerDiv {
    width: 100%;
    height: 100px;
    text-align: left;
    background-image: url(../images/headerBg.png);
    background-repeat: no-repeat; 
    background-position: left top;
}
#topMenuBarDiv {
    width: 100%;
    height: 39px;
    text-align: center;
    background-image: url(../images/topMenuBar.png);
    background-position: top left;
    background-repeat: no-repeat;
    color: transparent;
}
#bodyDiv {
    width: 100%;
    padding-bottom: 46px;
}
#footerDiv {
    width: 905px;
    margin-left: auto;
    margin-right: auto;
    height: 46px; 
    margin-top: -46px;
    position:relative;
    bottom: 0px;
    background-image: url(../images/footerBg.png);
    background-position: top left;
    background-repeat: no-repeat;
}


и результат...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)