Один из способов “закрытия” плавающих блоков и FireFox

4 декабря 2007 г.

Стал практиковать один из способов “закрытия” плавающих блоков, который вот так выглядит в CSS:

1
2
3
4
5
6
7
8
9
* html #container {height: 1%;}
#container:after {
  content: '.';
  display: block;
  clear: both;
  visibility: hidden;
  height: 0;
  line-height: 0;
}

Используя данный этот метод, я при верстке заметил в браузере FireFox следующий баг, может быть кому-то пригодится эта информация.

Когда я прижимаю footer к низу окна браузера с помощью варианта с абсолютным позиционированием, в FF под этим футером появляется небольшой отступ, примерно в 5 пикселей. Сегодня в очередной раз встретился с этим багом, но уже в другой верстке. Отступ снова появился у элемента с position: absolute (на этот раз не футера).

Методом тыка выяснилось, что загвоздка заключалась в свойстве content: ‘.’, где вместо точки может стоять любой символ. Именно наличие символа и “распирает” блок, смещая его в ненужном направлении.

Баг лечится удалением символа между кавычек, т.е. вот так:

1
2
3
4
#container:after {
  content: '';
  ...
}

Можно было бы, конечно, добавить этому идентификатору еще одно свойство - font-size:0, но это уже лишний код.

* * *

Компания «Анкарус» предоставляет следующие услуги по городу Москве: перевозка пианино и роялей, квартир и офисов, мебели и домашних вещей, а также осуществляет погрузочно-разгрузочные работы (разборка, упаковка, разборка, установка).

Теги: , автор: Dimox | рубрика CSS-верстка

Комментарии (11): »

  1. А не легче ли вообще свойство content убрать?

  2. Хм… может быть и проще. Я даже об этом и не задумывался. В таком случае код сработает?

  3. content специально добавляют чтобы контейнер не захлопывался.

  4. Вот, поэтому я и спросил, останется ли код работоспособным. Теперь ясно. Значит удалять его нельзя.

  5. С кодом в любом случае проблемы будут, но вот способ, описанный автором выше вполне работаспособен…

    @
  6. В помощь: Контейнер для float - блоков
    А вообще можно после зафлоаченных блоков поставить

    1
    <br clear="all">

    и будет все ок.
    Правда это воттакенный прибор на семантику… хотя контейнер, тоже не слабый поклеп на семантику.

  7. br режется ((
    …после зафлоаченных блоков поставить br clear=”all”

  8. … или <hr class=”clear” /> и в css указать hr.clear { clear: both }

  9. Максим, вашу статью я прочитал еще, когда вы ее опубликовали и коммент тоже там оставлял :). От варианта, подобного br clear=”all” я уже стараюсь отказываться из-за семантики и лишнего html-кода, давно им пользуюсь. Пусть лучше вместо этого будет небольшой дополнительный CSS-код.

  10. margin:0 !important;

Присоединяйтесь к обсуждению!

Отправляя кoммeнтapий, Вы автоматически принимаете правила кoммeнтиpoвaния на этом блоге.

Правила кoммeнтиpoвaния на блоге dimox.name:

  1. Первый кoммeнтapий всегда проходит премодерацию.
  2. В поле "URL блога" можно указывать только ссылку на главную страницу вашего блога. Ссылки на прочие веб-ресурсы (в том числе блоги/сплоги, созданные не для людей) будут удалены.
  3. Запрещается использовать в качестве имени комментатора слоганы/названия сайтов, рекламные фразы, ключевые и т.п. слова. В случае несоблюдения этого условия имя изменяется по усмотрению владельца блога. Просьба указывать нормальное имя или ник.
  4. Весьма вероятно, что короткий и неинформативный кoммeнтapий вида "Спасибо!", "Интересная статья", будет удален. Исключение составляют знакомые автору блога комментаторы.

Подписаться, не комментируя

Предыдущие из рубрики