Частые вопросы о 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('about:blank');
}
* 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]-->
Дополнения приветствуются.
Попытаюсь дополнить, условные комментарии именно в css:
IE7:
Opera:
Поправь ссылки в начале топика. Оне не работают на главной
Ссылки не работают из RSS тоже.
В Opera 9.50—9.51 приведенный Вами пример «прибивание футера» работает не корректно. При первом запуске, «футер» остается сверху, только после обновления страницы, перемещается вниз. Причем, в Opera 9.27 и ниже, все замечательно работает. Пока так и не нашел решения этой проблемы.
Андрей, это скорее хаки чем условные комментарии, за дополнение спасибо сейчас потестирую.
Pashka R., Олег Горбунов, ссылки поправил, спасибо, что обратили внимание.
Octane, поставил оперу 9.51, если подключать css внешним файлом то все работает. Примеры исправил.
Здорово! Неплохая подборка, начинающим должна весьма пригодится. :)
С фикседом иногда возникают неожиданные проблемы. Я использовал этот метод для своего сайта, но потом вовсе отказался от "фикседа" в IE 6.0...
Всё верно и правильно - как подметил yopopt, новичкам очень даже пригодится.
Какие?
Не знаю, у меня с фикседом не было проблем ещё, может везунчик. А так подборка замечательная, скопировал себе ссылочку в архивчик, пригодиться.
Вот никак не пойму, для чего захламлять код псевдо-скруглениями? Даже если границы скругления четкие, код слишком уж натужный. Выключены картинки? Сделай красвый бокс!
я бы назвал это говноценный fixed
хотя, если этот сайт призывает всех верстать в quirksmode, то метод подойдёт
есть метод, работающий в режиме стандартов, http://www.howtocreate.co.uk/fixedPosition.html , но блок не перестаёт дёргаться, даже если применить решение из говноценного fixed'а
Я бы почитал пост прежде чем делать выводы о quirks mode.
Написано ведь как сделать чтобы метод рабол в standard mode и пример соответствующий приложен.
А можно узнать, у вас дизайн блога шаблонный? Тоже себе такой хочу...
Нет не шаблонный.
И еще одно, я вижу ссылки с пробелом, давайте не будем тратить время друг друга спамом.
Товарисчи... Кому не лень - протестите ентот вариант, написанный мной... Сам тестил в IE, Mozilla, Opera (В Chrome не сомневаюсь:)... Качать и ставить другие нет ни желания ни необходимости...
Тайтл
body, html{
margin:0;
padding:0;
height:100%;
width:100%;
}
.content{
float:left;
width:100%;
}
.footer{
height:100px;
clear:both;
}
.bg{
float:left;
height:100%;
width:100%;
margin:0 0 -100px -100%;
overflow:hidden;
}
.block{
width:500px;
margin:0 auto;
}
Вариант блока контента... Ширина 500px, центрирование...
Злополучный фоотер...
Воть...
Ну вот...:(
HTML
[div class=”bg”][div]
[div class=”content”]
[div class=”block”]Вариант блока контента... Ширина 500px, центрирование...[/div]
[/div]
[div class=”footer”]Злополучный фоотер...[/div]
Скобы естессно поменять...
Футер внизу, это получается.
Но не понимаю, почему появляется прокрутка, небольшая, примерно 30px.
Куда думать, подскажите, пожалуйста?)
спасибо хорошая статья да есть небольшие глюки в опере да и сама опера особенно последняя версия глючная это касается 10.50 и 10.60 под неё сложно подточиться чтоб и в 9 ветки и в 10 ветки нормально сайт отображался вот кому надо есть статья чисто для оперы http://si-web.ru/blog/34-css-hacks-for-opera.html