Строительство домов по канадской каркасной технологии, строительство домов в Киеве - Будинок у задоволення

Особенности свойства height

09.6.2008  –  Рубрика: HTML&CSS

В блочной модели верстки CSS свойство height ведет себя не так как одноименный атрибут height разметки. С логической точки, когда блоку присваивается свойство, height он должен быть заданной свойством высоты и при увеличении содержимого блока его высота должна растягиваться. Но на практике все происходит не так.

При увеличении содержимого блока до размеров, которые превышают размеры блока, его содержимое вываливается за границы блока. Так происходит во всех браузерах кроме Internet Explorer 6, в этом браузере все происходит логически, при увеличении содержимого блок растягивается до нужных размеров, чтоб вместить в себе все содержимое.

Во всех остальных браузерах свойство, которое ведет себя аналогично свойству height, является свойство min-height. Но проблема состоит в том, что браузеру IE6 неизвестно это свойство. Таким образом, нам необходимо сделать так, чтоб браузер Internet Explorer 6 видел только свойство height, а все остальные браузеры свойство min-height.

Для решения этой проблемы я привожу два способа. Первый – короткий, он основан на хаке Internet Explorer 6, но он не проходит валидацию CSS, второй более громоздки, зато проходит валидацию.

Вариант 1 (* html)

Суть метода в том что мы воспользуемся хаком(подробней о хаках можно прочитать в заметке Хаки – краткий путь к кроссбраузерности?) для браузера Internet Explorer 6. Этот браузер воспринимает селектор, родительским которого является *html, а вот все остальные браузеры данное свойство игнорируют, под него не попадает ни один из элементов, так как у html нет родителя, который бы описывался звездочкой, а ие6 считает что родитель таки у него есть и применяет свойство. . Таким образом, мы можем задать отдельно селектор, который будет воспринят только браузером Internet Explorer 6


#someDiv {
  width:300px;
  min-height:300px;
}
* html #someDiv{
  height:300px;
}


Вариант 2 (auto !important)

Этот метод является более элегантным и лишает необходимости создавать дополнительный селектор. Метод состоит в том что браузер IE6 не воспримет свойство селектора !important(это свойство устанавливает приоритетность), которое указывает на важность auto(это свойство указывает на то что размеры элемента зависят от размеров его содержимого), а воспримет только свойство, которое в этом браузере работает нужным нам образом. Все остальные браузеры воспримут все свойства размеров, но так как для свойства auto установлено !important оно будет самым главным таким образом элемент будет иметь размеры и его размеры будут увеличиваться при увеличении размеров содержимого.


#someDiv {
  min-height: 300px;
  height: auto !important;
  height: 300px;
}


Есть еще пару свойств которые не поддерживает Internet Explorer, это – min-width, max-width, подробней о них можно прочитать в заметке Эмуляция min-width, max-width под IE6.

Tags:

7 Отзывов to “Особенности свойства height”

  1. Ghost Bear:

    Так происходит во всех браузерах кроме Internet Explorer 6, в этом браузере все происходит логически

    А вот я считаю что IE6 ведет себя неправильно. Если мне нужна определенная высота – она такой и должна быть – независимо от контента. По аналогии с поведением IE6 было бы что если строка не влазит в ширину контейнера, имея большой шрифт, то шрифт бы уменьшался.

  2. Богдан:

    Только что проверил первый вариант на валидность. Результат – код валидный. стандарт css2.1

  3. Валентин:

    Спасибо за статью.
    Очень интересно и доходчива. Надеюсь что ты не бросишь этот ресурс и будешь дальше публиковать статьи.
    Добавил ресурс в избранное, спасибо за проделанную работу.

  4. Amigo:

    Я за валидность и элегантность. Более громоздкий считаю первый вариант. Во втором случае всё описывается одним свойством дива.

  5. А:

    Помогло! Спасибо!

  6. хуй с ушами:

    ага

  7. noname:

    Ну ты и троль: «учитывая что на блоге нету и не будет рекламы это безсмысленно». Твой блог забит рекламой… А как красиво писал: _http://forum.htmlbook.ru/index.php?showtopic=10666

Оставить отзыв


Последние записи

Real Time Web Analytics