Частые вопросы о CSS
Евгений, 6 августа 2008
Подборка примеров и ссылок по CSS. Список вопросов составлен на основе поисковых запросов.
- position:fixed в ie6
- прибивание футера
- clear у блока float
- скругление углов css
- условные комментарии в css
position:fixed в ie6
В iE6 position:fixed не работает, но если очень нужно, то заменить его можно с помощью position: absolute и expression вычисляющего положение элемента в зависимости от положения скрола.
#fixed-block {
position: fixed;
right: 2em;
top: 100px;
background: wheat;
padding: 1.5em 1.5em 1.5em 3em;
width: 15em;
}
* html {
background: fixed url('null.png');
}
* html #fixed-block {
position: absolute;
top: expression(eval(document.documentElement.scrollTop) + 100 + 'px');
}
Подробная статья про Полноценный fixed в MSIE есть в Техногрете, но обратите внимание, что в Standards Mode используется document.documentElement, а в Quirks Mode document.body.
прибивание футера
HTML
<div id="header">
</div>
<div id="content">
</div>
<div id="footer">
</div>
CSS
html {
height: 100%;
}
body {
min-height: 100%;
}
* html body {
height: 100%; /* замена min-height:100% для IE6 */
}
body {
position: relative; /* абсолютно позиционируемые элементы
будут располагаться относительно body */
}
#content {
padding-bottom: 7em; /* место для футера */
}
#footer {
position: absolute;
bottom: 0;
height: 7em;
width: 100%;
background: wheat;
}
Не работает в IE5. В IE6 футер не уходит на свое место, если размер страницы изменяется в результате работы JavaScript, например, если скрыты или добавлены некоторые элементы страницы.
Дополнено: В Opera 9.51 работает только если css подключен внешним файлом, если использовать для css элемент style то работает только с бубном, например, если взять одно слово на странице в <q>. Проблема связана не столько с самим способом прибивания футера, сколько с особенностями min-height: 100% в Opera 9.51, во втором способе, на который ссылка ниже, она тоже есть.
Еще один способ прибивания футера.
clear у блока float (+ миллион вариантов запроса)
Часто нужно заставить родительский блок полностью поглощать вложенные float блоки, для этого можно использоваться следующие стили:
#block {
overflow: hidden; /* для всех браузеров */
/* для IE */
height: 1%;
/* или */
zoom: 1;
}
Если у родительского блока задана высота то height: 1% не подойдет, у zoom: 1 проблема только в том, что это нестандартное свойство, если важна валидность нужно вынести в отдельный файл для IE.
Этому действу не имеющему приемлемого русского названия посвящена статья Clear для плавающих блоков подробнее о float и связанных с ним багами можно почитать в статье CSS Float в теории и на практике.
скругление углов css (второй по количеству вариантов запрос)
Видимо на этот вопрос найдется не меньше миллиона ответов.
- Более 50 методов закругления углов (eng)
- 38 способов скругления блоков
- Я писал про закругление без изображений, Dimox добавил к нему сглаживание.
условные комментарии в css
Условные комментарии привилегия HTML, чаще всего применяются для того, чтобы сделать CSS файл видимым только для определенной версии Internet Explorera, например для IE6:
<!--[if IE 6]>
<link rel="stylesheet" href="styles.css" type="text/css" media="all">
<![endif]--> 
















Евгений 6 августа, 2008 2:29 #
Дополнения приветствуются.
Андрей 6 августа, 2008 5:35 #
Попытаюсь дополнить, условные комментарии именно в css:
IE7:
Opera:
Pashka R. 6 августа, 2008 7:39 #
Поправь ссылки в начале топика. Оне не работают на главной
Олег Горбунов 6 августа, 2008 8:40 #
Ссылки не работают из RSS тоже.
Octane 6 августа, 2008 11:48 #
В Opera 9.50—9.51 приведенный Вами пример «прибивание футера» работает не корректно. При первом запуске, «футер» остается сверху, только после обновления страницы, перемещается вниз. Причем, в Opera 9.27 и ниже, все замечательно работает. Пока так и не нашел решения этой проблемы.
Евгений 6 августа, 2008 15:20 #
Андрей, это скорее хаки чем условные комментарии, за дополнение спасибо сейчас потестирую.
Pashka R., Олег Горбунов, ссылки поправил, спасибо, что обратили внимание.
Octane, поставил оперу 9.51, если подключать css внешним файлом то все работает. Примеры исправил.
yopopt 7 августа, 2008 23:35 #
Здорово! Неплохая подборка, начинающим должна весьма пригодится. :)
Серега 8 августа, 2008 14:47 #
С фикседом иногда возникают неожиданные проблемы. Я использовал этот метод для своего сайта, но потом вовсе отказался от "фикседа" в IE 6.0...
Волотко Дмитрий 10 августа, 2008 2:30 #
Всё верно и правильно - как подметил yopopt, новичкам очень даже пригодится.
Евгений 10 августа, 2008 11:57 #
Какие?
Дмитрий 18 августа, 2008 2:23 #
Не знаю, у меня с фикседом не было проблем ещё, может везунчик. А так подборка замечательная, скопировал себе ссылочку в архивчик, пригодиться.
Я 19 августа, 2008 14:32 #
Вот никак не пойму, для чего захламлять код псевдо-скруглениями? Даже если границы скругления четкие, код слишком уж натужный. Выключены картинки? Сделай красвый бокс!
Максим 22 августа, 2008 9:40 #
я бы назвал это говноценный fixed
хотя, если этот сайт призывает всех верстать в quirksmode, то метод подойдёт
есть метод, работающий в режиме стандартов, http://www.howtocreate.co.uk/fixedPosition.html , но блок не перестаёт дёргаться, даже если применить решение из говноценного fixed'а
Евгений 22 августа, 2008 13:37 #
Я бы почитал пост прежде чем делать выводы о quirks mode.
Написано ведь как сделать чтобы метод рабол в standard mode и пример соответствующий приложен.