- height
- Пример
- Как понять
- Как пишется
- Подсказки
- На практике
- Алёна Батицкая советует
- CSS Fixed Header & Auto Height Scrolling Body Content
- Let’s Build Fixed Header Markup
- Fixed Header
- Height Specified
- Make Fixed Header with CSS
- Как сделать шапку сайта фиксированной и изменяющей размер
- Реализация
- height
- Синтаксис
- Значения
- Объектная модель
- Браузеры
height
Любой HTML-элемент сам по себе по высоте равен нулю. Обычно элементы подстраиваются по высоте под то количество контента, которое лежит у него внутри. Но что делать, если дизайнер придумал иначе, или если внутри вообще ничего нет?
При помощи свойства height можно задать высоту любому блочному (block) или строчно-блочному (inline-block) элементу. Высоту можно задавать как в абсолютных единицах (пикселях px ) так и в относительных (проценты, vh , vmin , rem и так далее).
Помимо фиксированной высоты мы можем задать минимальную высоту элемента — min — height . В этом случае элемент сможет растягиваться на большую высоту, если того требует контент, размещённый внутри, но никогда не сожмётся по высоте меньше, чем указано в свойстве min — height .
Для максимальной высоты мы пишем свойство max — height . И тогда элемент будет иметь возможность растягиваться по высоте до тех пор, пока не достигнет размера, указанного в свойстве max — height . И дальше не растянется ни на пиксель.
Пример
Скопировать ссылку «Пример» Скопировано
div class="container"> div class="item">div> div>
.container /* высота родителя */ height: 150px; padding: 25px; background-color: #AFC9DA;> .item /* высота вложенного блока */ height: 50px; margin: 0 10px; background-color: #FFFFFF;>
.container /* высота родителя */ height: 150px; padding: 25px; background-color: #AFC9DA; > .item /* высота вложенного блока */ height: 50px; margin: 0 10px; background-color: #FFFFFF; >
Поскольку оба блока — .container и .item — пустые, в них нет контента, то без стилей их высота будет равна нулю. Мы изменили это, задав элементу .container высоту 150px , а элементу .item высоту 50px .
Добавим контент в элемент .item :
Из-за фиксированной высоты контент вываливается из блока. Как можно это исправить? Заменить height на min — height !
.item /* Меняем фиксированную высоту на минимальную */ min-height: 50px; margin: 0 10px; background-color: #FFFFFF;>
.item /* Меняем фиксированную высоту на минимальную */ min-height: 50px; margin: 0 10px; background-color: #FFFFFF; >
Теперь, если контента внутри не будет, то высота блока будет равна 50px , но как только появится контент — элемент растянется по высоте так, чтобы уместить в себе весь контент!
Как понять
Скопировать ссылку «Как понять» Скопировано
Свойство height даёт возможность менять высоту любого блока на своё усмотрение.
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Пишем свойство height для фиксированной высоты, min — height для минимальной высоты и max — height для максимальной высоты.
Для элемента можно написать только одно из них, два или все три сразу, если это нужно для решения конкретной задачи.
В качестве значения пишем число, а за ним без пробела единицу измерения: px , % , vh , rem , em или любую другую единицу измерения, доступную в вебе.
div height: 10px; min-height: 100%; max-height: 100vh;>
div height: 10px; min-height: 100%; max-height: 100vh; >
Подсказки
Скопировать ссылку «Подсказки» Скопировано
💡 Свойство высоты не наследуется.
💡 По умолчанию задаётся значение auto .
Это ключевое слово бывает полезно, когда нужно сбросить высоту, заданную ранее. Например, оно пригодится при доработке сайта, к исходным стилям которого нет доступа.
Стили, до которых нет доступа с фиксированной высотой:
.container height: 150px;>
.container height: 150px; >
Твои стили, где перезаписывается предыдущее значение: теперь высота подстраивается под контент.
.container height: auto;>
.container height: auto; >
Также оно может пригодится при адаптивной вёрстке.
💡 Не задавайте фиксированную высоту блокам, в которых есть контент. Если контента станет больше, то блок не растянется и контент из него выпадет. Не надо так. Если без высоты никак не обойтись, то используйте min — height .
💡 Строчные элементы не реагируют на height . Хотите изменить высоту? Меняйте элемент со строчного ( inline ) на блочный ( block ) или строчно-блочный ( inline — block )!
💡 Пишете height : 100 % и ничего не работает? Помните, что высота в процентах рассчитывается от высоты родителя. И сработает, только если у родителя задана эта самая высота.
Отношения родительский-дочерний элемент проще объяснить на примере.
div class="parent"> div class="child child-1"> div class="grandchild">div> div> div class="child">div> div class="child">div> div>
В примере выше элемент с классом parent является родительским для элементов с классом child . Они, в свою очередь, будут называться дочерними по отношению к элементу с классом parent .
Для элемента с классом grandchild родительским будет элемент с классом child — 1 .
Применительно к нашей ситуации элемент grandchild будет наследовать свою высоту от элемента child — 1 .
На практике
Скопировать ссылку «На практике» Скопировано
Алёна Батицкая советует
Скопировать ссылку «Алёна Батицкая советует» Скопировано
🛠 Чаще всего не требуется задавать фиксированную высоту блокам с контентом. Можно обойтись внутренними отступами ( padding ).
Вернёмся к примеру, который разбирали выше. Можно совсем убрать свойство height и заменить его на padding : 25px . Теперь, если контента внутри блока нет, то внутренние отступы сверху (25 пикселей) и снизу (25 пикселей) будут растягивать элемент на 50 пикселей.
Как только добавится контент, блок растянется, не произойдёт никакого выпадения контента, потому что не задана фиксированная высота. От верхнего и нижнего краёв контента до верхнего или нижнего краёв блока соответственно будут отступы в 25 пикселей.
Чтобы родительский блок .container тоже подстраивался под размеры контента, можно:
- Заменить фиксированную высоту на минимальную: min — height : 150px .
- Убрать высоту совсем и заменить её на внутренние отступы ( padding ). Этот вариант подойдёт, если не принципиально сохранить высоту 150 пикселей.
🛠 Но есть несколько ситуаций, в которых без высоты никак.
- В блоке нет контента. Он декоративный. Например, квадрат. Задаём одинаковые высоту и ширину. Profit!
- Первый экран сайта. Обычно дизайнеры хотят, чтобы первый экран всегда был по высоте не больше и не меньше высоты экрана пользователя. В этом случае поможет height : 100vh . Не забудь подстраховаться и задать минимальную высоту блоку. Например: min — height : 350px . Никогда нельзя быть уверенным, что высоты экрана пользователя достаточно для того, чтобы уместился весь важный контент.
🛠 В реальных задачах крайне редко требуется задавать высоту в относительных единицах rem и em . Эти единицы завязаны на размере шрифта. Рассчитывать высоту блока от размера текста почти никогда не требуется.
Но другие относительные единицы: vh , vw , а также vmin и vmax — будут встречаться вам гораздо чаще. Рассчитывать высоту элемента от высоты или ширины экрана пользователя бывает очень удобно.
CSS Fixed Header & Auto Height Scrolling Body Content
In this tutorial, I am going to create a CSS fixed header with auto height scrolling body content so that the content should be automatically adjusted instead of fixed.
You may know that It is quite easy to create a fixed header using CSS but the issue comes when we need the content area in auto height.
Its simple fixed header but you can also apply some nice animation to make it resizing animated header on scroll to stand out your website navigation and logo part.
We will make the header element stay at the top of the page whether you have more or less content, it does matter. I am not going to add any animation. Also, the header will always visible whether the user scrolls down or not.
I will place some simple content on the header in the position of the logo but you would try out sticky navigation bar on scroll which builds with jQuery and also have a nice animation.
We have created a demo with the following files but the demo.css is only for making our demo and you don’t need to add while implementing on your web page.
Now let’s get into the code and start making our header sticky!
Let’s Build Fixed Header Markup
In our index.html file, we have the following code for header. We have a class header-top which will handle the sticky function through CSS.
We did wrap the header logo area with class header-warp . I have added the simple heading text instead of the image but you can replace it if you want.
Fixed Header
Height Specified
Make Scrolling Body
Now we need to make a content area which will be auto height and work with body scrolling.
Make Fixed Header with CSS
I have written all the CS in the style.css but here Ii will mention some important class which helps us to make this job done successfully.
First thing, We make overflow-y:scroll and overflow-x: hidden for the HTML element. Set the 100% height for the body so we don’t need to define the fixed height. You can know more about CSS overflow property at W3Schools.
We will use position: fixed to make the header stay at the top. To raise the header, We use the z-index: 1 . The width: 100% is use to covers the full width when zooming the page.
To make the header fill the space from left to right and vice versa, I use the position: absolute; with left and right value 10px;
Styling Scrolling Body
To make the page responsive and work well on mobile devices, we’ll take the help of min-width and max-width. You can give some margin or padding as per your choice.
We need to add padding-top according to the height of header so the content should not be hidden behind the header.
There are few more style add in the style.css and some are only for demo purpose which you may not need to add. For example figure, h1, h2 and img etc.
Now, let me know (by comment below) if your able to make fixed header & scrolling body by using CSS.
Как сделать шапку сайта фиксированной и изменяющей размер
В этой статье я покажу, как сделать шапку сайта фиксированной и изменяющей размер при прокрутке. Приведенный вариант реализации может не работать в устаревших браузерах вроде IE5 или 6.
Реализация
Для начала нам нужна HTML-структура наподобие следующей:
Код CSS, приведенный ниже – это базовые стили заголовка.
.header < width: 100%; height: 150px; overflow: hidden; position: fixed; top: 0; left: 0; z-index: 999; background-color: #3b8dbd; -webkit-transition: height 0.3s; -moz-transition: height 0.3s; -ms-transition: height 0.3s; -o-transition: height 0.3s; transition: height 0.3s; >.header h1#logo < display: inline-block; height: 150px; float: left; margin-left: 50px; font-family: "Oswald", sans-serif; font-size: 60px; color: white; font-weight: 400; -webkit-transition: all 0.3s; -moz-transition: all 0.3s; -ms-transition: all 0.3s; -o-transition: all 0.3s; transition: all 0.3s; >.header nav < display: inline-block; float: right; margin-right: 50px; >.header nav a < line-height: 150px; margin-left: 20px; color: #9fdbfc; font-weight: 700; font-size: 18px; -webkit-transition: all 0.3s; -moz-transition: all 0.3s; -ms-transition: all 0.3s; -o-transition: all 0.3s; transition: all 0.3s; >.header nav a:hover < color: white; >.header.smaller < height: 75px; >.header.smaller h1#logo < width: 150px; height: 75px; font-size: 30px; >.header.smallernav a
В CSS-коде, приведенном выше, последние три блока имеют класс “.smaller”. Это сделает шапку меньше при прокрутке вниз. Но чтобы добавить класс “.smaller”, потребуется код jQuery:
После того, как вы добавите этот код в раздел и подключите библиотеку jQuery, шапка веб-страницы должна будет изменять свой размер при прокрутке вниз.
Чтобы сделать ее адаптивной, необходимо добавить несколько строк кода CSS:
@media all and (max-width: 660px) < .header h1#logo < display: block; float: none; margin: 0 auto; height: 100px; line-height: 100px; text-align: center; >.header nav < display: block; float: none; height: 50px; line-height: 50px; text-align: center; margin: 0 auto; >.header nav a < line-height: 50px; margin: 0 10px; >.header.smaller < height: 75px; >.header.smaller h1#logo < height: 40px; line-height: 40px; font-size: 30px; >.header.smallernav < height: 35px; line-height: 35px; >.header.smallernav a < line-height: 35px; >>
Теперь при уменьшении размера окна браузера при ширине в 660 пикселей вы увидите, что логотип переместится в середину. При этом меню навигации «съедет» под логотип и расположится по центру.
Если вам понравилась эта статься, поделитесь ей со своими друзьями!
height
Устанавливает высоту блочных или заменяемых элементов (к ним, например, относится тег ). Высота не включает толщину границ вокруг элемента, значение отступов и полей.
Если содержимое блока превышает указанную высоту, то высота элемента останется неизменной, а содержимое будет отображаться поверх него. Из-за этой особенности может получиться наложение содержимого элементов друг на друга, когда элементы в коде HTML идут последовательно. Чтобы этого не произошло, добавьте overflow : auto к стилю элемента.
Синтаксис
height: значение | проценты | auto | inherit
Значения
В качестве значений принимаются любые единицы длины, принятые в CSS — например, пикселы (px), дюймы (in), пункты (pt) и др. При использовании процентной записи высота элемента вычисляется в зависимости от высоты родительского элемента. Если родитель явно не указан, то в его качестве выступает окно браузера. auto устанавливает высоту исходя из содержимого элемента
HTML5 CSS2.1 IE Cr Op Sa Fx
Результат данного примера показан на рис. 1.
Рис. 1. Применение свойства height
Объектная модель
[window.]document.getElementById(» elementID «).style.heightБраузеры
Браузер Internet Explorer 6 некорректно определяет height как min-height .
В режиме совместимости (quirk mode) Internet Explorer до версии 8.0 включительно неправильно вычисляет высоту элемента, не добавляя к ней значение отступов, полей и границ.
Internet Explorer до версии 7.0 включительно не поддерживает значение inherit .