Растяжение элемента по все высоте

Я всегда сталкиваюсь с затруднениями, когда необходимо растянуть блок на 100% высоты страницы. Например, у меня есть блок div, который необходимо растянуть, однако все немного сложнее, чем кажется. Итак, почему бы не найти кроссбраузерное решение по растягиванию блока на всю высоту страницы? Сегодня мы попытаемся найти это решение.
Скажем, у вас есть html-файл наподобие такого:
HTML
<!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Strict//EN»
«https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd»>
<html xmlns=»https://www.w3.org/1999/xhtml»>
<head>
<meta http-equiv=»Content-Type»
content=»text/html; charset=windows-1251″ />
<title>CSS 100% Height</title>
<link rel=»stylesheet» type=»text/css» href=»style.css» />
</head>
<body>
<div id=»content»>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat
volutpat. Ut wisi enim ad minim veniam, quis
nostrud exerci tation ullamcorper
suscipit lobortis nisl ut aliquip ex ea
commodo consequat. Duis
autem vel eum iriure dolor in hendrerit in vulputate velit
esse molestie consequat, vel illum dolore eu feugiat nulla
facilisis at vero eros et accumsan et iusto odio dignissim
qui blandit praesent luptatum zzril delenit
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam nonummy nibh euismod …..
короче много контента
</div>
</body>
</html>
К нему прилагается CSS:
CSS
body {
margin: 0;
padding: 0;
}
#content {
background: #EEE;
border-left: 1px solid #000;
border-right: 1px solid #000;
padding: 0 20px 0 20px;
margin: auto;
font: 1.5em arial, verdana, sans-serif;
width: 960px;
height: 100%;
}
Что это нам дает, вы можете увидеть перейдя по:
Как вы можете видеть, высота страницы определяется контентом и не растягивается на 100%, несмотря на то, что мы добавили блоку #content свойство height со значением 100%. Как так? Давайте немного поразмышляем об HTML. HTML – это всего лишь куча контейнеров вложенных один в другой. Итак, у нашей страницы сперва идет контейнер html, затем внутри контейнера html лежит контейнер body, ну и, наконец, в body расположен блок с идентификатором content. Когда мы помещаем контент в один из этих блоков, он растягивает этот блок и все другие блоки, содержащие этот блок. Итак, мы растягиваем блок <div id=«content»>, когда помещаем в него текст, этим, в свою очередь, мы растягиваем другие блоки (в нашем случае это блоки body и html).
Добавляя блоку <div id=«content»> объявление height: 100%, мы говорим: блок div id=«content» нужно растянуть на всю высоту блока-родителя. В нашем примере, как вы понимаете, этим блоком-родителем является тег body. Итак, высота блока div id=«content» равна полной высоте (100%) тега body. Хорошо, но какая высота у тега body? Все просто: высота тега body равна высоте блока <div id=«content»>, которую мы нигде не задавали! Поэтому, когда мы создаем объявление height: 100%, мы просто говорим: блок по высоте должен быть равен самому себе!
Чтобы исправить это, нам нужно назначить тегу body свою высоту. Но мы снова столкнемся с той же проблемой, ведь тег body лежит в теге html. Таким образом, чтобы растянуть блок <div id=«content»> на всю высоту окна браузера, нам необходимо тегам body и html задать высоту, которая соответствовала бы полной высоте страницы.
CSS
html {
height: 100%;
}
body {
margin: 0;
padding: 0;
height: 100%;
}
#content {
background: #EEE;
border-left: 1px solid #000;
border-right: 1px solid #000;
padding: 0 20px 0 20px;
margin: auto;
font: 1.5em arial, verdana, sans-serif;
width: 960px;
min-height: 100%;
}
/* специально для IE */
* html #content {
height: 100%;
}
И на этом все. Посмотрите demo. Блок с контентом растягивается на всю высоту окна браузера.
Обратите внимание на объявление min-height:100%;: благодаря нему в случае, если контент выходит за пределы окна браузера, фон также будет растягиваться за контентом.
Не забываем и о старых браузерах IE, которые не понимают свойство min-heigt, для них необходимо добавить * html #content {height: 100%;}.
Использованы материалы статьи
Источник
Как отменить растягивание блока search-box?
margin: 0;
padding: 0;
box-sizing: border-box;
font-size: 10px;
}
body .top {
background-color: #ededed;
margin-bottom: 80px;
}
body .top .row {
height: 100px;
align-items: center;
}
body .top .navigation {
color: #1a1919;
font-family: «Open Sans»;
font-size: 14px;
font-weight: 400;
line-height: 24px;
}
body .top .navigation ul {
display: flex;
justify-content: flex-end;
}
body .top .navigation ul li {
list-style-type: none;
}
body .top .navigation ul a {
padding-right: 30px;
color: black;
}
body .top .navigation-active {
color: #df3636;
}
body .top .page {
color: #1a1919;
font-family: Oswald;
font-size: 24px;
font-weight: 700;
line-height: 24px;
}
body .search-box {
flex-basis: auto;
background-color: #1b1b1b;
color: white;
padding: 20px;
flex: auto;
}
body .search-box button[type=»submit»] {
color: #ffffff;
font-family: «Open Sans»;
font-size: 14px;
font-weight: 700;
line-height: 24px;
text-transform: uppercase;
letter-spacing: 0.42px;
background-color: #df3636;
width: 100%;
height: 50px;
}
body .search-box button {
color: red;
background-color: transparent;
border: none;
margin-top: 20px;
}
body .search-box select {
background-color: #313131;
color: #999999;
font-family: «Open Sans»;
font-size: 14px;
font-weight: 400;
line-height: 24px;
width: 100%;
height: 40px;
padding: 5px 10px;
margin-bottom: 15px;
border: none;
}
body .search-box .disc {
color: #ffffff;
font-family: Open Sans;
font-size: 14px;
font-weight: 400;
line-height: 24px;
padding: 10px 0;
}
body .search-box .title {
color: #ffffff;
font-family: «Open Sans»;
font-size: 18px;
font-weight: 700;
line-height: 24px;
text-transform: uppercase;
text-align: center;
padding-bottom: 30px;
}
body .content {
color: #1a1919;
font-family: Oswald;
font-size: 16px;
font-weight: 400;
line-height: 24px;
}
body .content .col {
padding: 0px;
}
body .content .sort {
border-bottom: 1px solid #e9e9e9;
padding-bottom: 30px;
margin-left: 20px;
}
body .content select {
background-color: #e9e9e9;
color: #999999;
font-family: «Open Sans»;
font-size: 14px;
font-weight: 400;
line-height: 24px;
height: 40px;
padding: 5px 10px;
margin-left: 10px;
border: none;
}
body .content .filter {
border-radius: 13px;
background-color: #f2f2f2;
color: #393939;
font-family: Montserrat;
font-size: 14px;
padding: 0px 10px;
margin: 20px;
}
body .content .filter span {
color: #df3636;
padding-right: 10px;
}
body .content .price {
background-color: #df3636;
color: #ffffff;
font-family: «Open Sans»;
font-size: 20px;
font-weight: 700;
text-transform: uppercase;
padding: 5px 15px;
}
body .content .photo-car {
border: 1px solid #e9e9e9;
}
body .content .photo-car img {
width: 100%;
}
body .content .model {
color: #1d1d1d;
font-family: «Open Sans»;
font-size: 14px;
font-weight: 700;
line-height: 26.4px;
text-transform: uppercase;
padding: 10px 0;
}
body .content .add {
color: #1d1d1d;
font-family: «Open Sans»;
font-size: 14px;
font-weight: 700;
line-height: 26.4px;
}
/*# sourceMappingURL=main.css.map */
<!doctype html>
<html>
<head>
<meta charset=»UTF-8″>
<meta name=»viewport» content=»initial-scale=1″ content=»width=device-width»>
<link rel=»stylesheet» href=»https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css»>
<link rel=»stylesheet» href=»https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css» integrity=»sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy» crossorigin=»anonymous»>
<link href=»https://fonts.googleapis.com/css?family=Open+Sans» rel=»stylesheet»>
<link rel=»stylesheet» href=»css/main.css»>
</head>
<body>
<div class=»section top»>
<div class=»container»>
<div class=»row»>
<div class=»col page»>Inventory</div>
<!— /.page —>
<div class=»col navigation»>
<ul>
<li><a href=»#»>Home</a></li>
<li><a href=»#»>Inventory</a></li>
<li class=»navigation-active»>Gird standard style 1</li>
</ul>
</div>
</div>
<!— /.row —>
</div>
<!— /.container —>
</div>
<!— /.section —>
<div class=»section»>
<div class=»container»>
<div class=»row»>
<div class=»col-3 search-box»>
<div class=»serch»>
<div class=»title»>Search inventory</div>
<form action=»#» method=»post»>
<div class=»disc»>Condition</div>
<select>
<option>new</option>
</select>
<div class=»disc»>Body</div>
<select>
<option>Compact</option>
</select>
<div class=»disc»>Make</div>
<select>
<option>BMW</option>
</select>
<div class=»disc»>Model</div>
<select>
<option>x6</option>
</select>
<div class=»disc»>Max Mileage</div>
<select>
<option>new</option>
</select>
<div class=»disc»>Year</div>
<select>
<option>2016</option>
</select>
<div class=»disc»>Transmission</div>
<select>
<option>Automatic</option>
</select>
<div class=»disc»>Color</div>
<select>
<option>All color</option>
</select>
<button type=»submit»>SEARCH</button>
<button type=»reset»>Reset all</button></p>
</form>
</div>
</div>
</row>
<div class=»col-9 content»>
<div class=»row»>
<div class=»col sort»>
SORT BY
<select>
<option>Date: Newest first</option>
</select>
</div>
<!— /.col sort —>
</div>
<div class=»row filtes»>
<div class=»filter»>Pricice <span>$2000 — $65.765</span>
<a href=»#»><img src=»image/X.png»></a>
</div>
<!— /.filter-one —>
</div>
<!— /.row filter —>
<!— /.row —>
<div class=»row block-car»>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
<div class=»col-4 car»>
<div class=»photo-car»><img src=»image/kia.jpg» width=»270px» height=»150px»></div>
<!— /.photo-car —>
<div class=»price»>$45.000</div>
<!— /.price —>
<div class=»model»>BMW 535I, NAVI, LEATHER, ABS</div>
<!— /.model —>
<div class=»add»>45/65 Automatic </div>
<!— /.add —>
</div>
<!— /.col car —>
</div>
<!— /.row block-car —>
</div>
<!— /.col-9 —>
</div>
</div>
<!— /.container —>
</div>
<!— /.section —>
<script src=»https://code.jquery.com/jquery-3.2.1.slim.min.js» integrity=»sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN» crossorigin=»anonymous»></script>
<script src=»https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js» integrity=»sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q» crossorigin=»anonymous»></script>
<script src=»https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js» integrity=»sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4″ crossorigin=»anonymous»></script>
</body>
</html>
Источник
Здравствуйте, уважаемые, появилась следующая задача:
растянуть содержимое div блока на всю высоту экрана, иными словами — Если у пользователя широкий экран, то всё содержимое блока < div > растягивается по всей ширине его экрана.
Если у пользователя узкий экран, то всё содержимое блока < div > сжимается, так, чтобы не вылезать за пределы экрана.
<!DOCTYPE html>
<html>
<head>
<meta charset = ‘utf-8’ />
<style>
html,body,.div {height:100%;margin:0}
.div {background-color:#000;color:#fff;height:100%}
</style>
</head>
<body>
<div class = ‘div’ width=»100%»>
<font size = ‘+5’>Мы работаем.</font><br />
<image src = ‘https://…’ /><br />
<font size = ‘+5’>Правда-правда…</font>
</div>
</body>
</html>
Приведенный мною код, к сожалению, работает неверно…
Изображение выходит за рамки экрана при этом ещё и перекрывая собою нижний текст.
Подскажите, что сделать?
задан 27 янв ’13 в 9:41
Павел СотниковПавел Сотников
35111 золотой знак44 серебряных знака1616 бронзовых знаков
Сделайте следующее:
- Немедленно избавьтесь от тегов font, вместо них используйте span, p, div и т.д.
- Стили пишите в отдельном CSS файле, или, на худой конец, в head.
В стилях для body, html пропишите:
body, html {
width: 100%;
height: 100%;
}В стилях для div:
.div {
min-width: 100%;
min-height: 100%;
position: relative;
}В стилях для img:
.div img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
Хотя, на мой взгляд, картинку лучше задать background’ом для .div и прописать для него background-size: cover;
Надписи так же позиционируются абсолютно.
P.S. А вообще, почитайте лучше по адаптивной верстке, например здесь. А также, и это главное, очень внимательно читайте и я бы даже сказал учите html & css — думаю, что вот этот ресурс Вам подойдет.
ответ дан 27 янв ’13 в 10:59
AstorAstor
2,78333 золотых знака2020 серебряных знаков3838 бронзовых знаков
С развитием нашего любимого языка CSS, появились величины vw и vh
Эти величины определяют процент от размера окна, т.е. если вы блоку укажите 100vw, то это будет означать, что блок должен быть на всю ширину окна. Так и с vh — по высоте
width: 100vw;
height: 100vh;
background-color: red;
}
<div class=»object»></div>
Стоит учитывать, что оно учитывает размер вместе со скроллом и по-этому следует делать более точные расчёты 🙂
ответ дан 11 фев ’17 в 17:14
YuriYuri
15.3k77 золотых знаков4545 серебряных знаков9090 бронзовых знаков
Мне кажется с помощью jquery можно решить это вообще легко, к примеру так:
$(document).ready(function(){
var heightR = $(window).height();// высота экрана
var widthR = $(window).width();// ширина экрана
$(‘body .div’).css({‘width’:widthR,’height’:heightR});
});
ответ дан 27 янв ’13 в 10:28
bemulimabemulima
1,87266 золотых знаков3434 серебряных знака4949 бронзовых знаков
width: 100%;
max-width: 1260px;
min-width: 780px;
margin: 0 auto;
}
Примерно так.
ответ дан 27 янв ’13 в 10:16
anmysikanmysik
7788 бронзовых знаков
var widthR = $(window).width();// ширина экрана
Если страницы загружаются с помощью ajax и нужно обновление (как для чата, например), то возникают проблемы на мобильных устройствах при растяжении или увеличении… Да и вообще на resize экрана если что-то вешается, то проблемы неминуемы
VenZell
18.9k55 золотых знаков3737 серебряных знаков5959 бронзовых знаков
ответ дан 19 янв ’15 в 8:29
ответ дан 27 янв ’13 в 9:46
naymnaym
2,0531010 серебряных знаков1818 бронзовых знаков
Всё ещё ищете ответ? Посмотрите другие вопросы с метками div css или задайте свой вопрос.
Источник