Что делает класс clearfix в css? [дубликат]
этот вопрос уже есть ответ здесь:
- Что такое clearfix? 11 ответов
Я видел div
использовать теги clearfix
класс, когда ребенок divs
использовать float
собственность. Класс clearfix выглядит так:
.clearfix:after {
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
}
.clearfix {
display: inline-block;
}
.clearfix {
display: block;
}
я обнаружил, что если я не использую clearfix
когда я использую bottom-border
свойства, граница будет отображаться над ребенком divs
. Может кто-нибудь объяснить, что делает класс clearfix? Кроме того, почему есть два display
свойства? Мне это кажется очень странным. Мне особенно любопытно, что такое content:'.'
средства.
Спасибо, G
3 ответа:
как работают "плавающие" блоки
когда плавающие элементы существуют на странице, неплавающие элементы обернуть вокруг плавающие элементы, похожие на то, как текст идет вокруг изображения в газете. С точки зрения документа (изначальное предназначение HTML), вот как работают поплавки.
float
vsdisplay:inline
до изобретения
display:inline-block
, веб-сайтов использоватьfloat
для установки элементов рядом друг с другом.float
предпочтителен заdisplay:inline
так как с последним, вы не можете установить размеры элемента (ширина и высота), а также вертикальные отступы (сверху и снизу) - которые плавающие элементы могут делать, так как они рассматриваются как блочные элементы.проблемы с поплавком
главная проблема заключается в том, что мы используем
float
против своего предназначения.другое дело, что пока
float
позволяет бок о бок элементы уровня блока,поплавки не придают форму своему контейнеру. Это какposition:absolute
, где элемент "вынут из макета". Например, когда пустой контейнер содержит плавающий 100px x 100px<div>
на<div>
не будет передавать 100px в высоту в контейнер.в отличие от
position:absolute
, это влияет на содержание, которое его окружает. Содержимое после того, как плавающий элемент будет "обернуть" вокруг элемента. Он начинается с рендеринга рядом с ним, а затем под ним, например, как газетный текст будет обтекать изображение.Clearfix к спасите
что clearfix does-это заставить содержимое после поплавков или контейнера, содержащего поплавки, отображаться под ним. Есть много версий для clear-fix, но он получил свое имя от версии, которая обычно используется - тот, который использует свойство CSS
clear
.примеры
вот несколько способов сделать clearfix в зависимости от браузера и использования. Нужно только знать, как использовать
clear
свойство в CSS и как плавает рендеринг в каждом браузере для достижения идеального кроссбраузерного clear-fix.то, что ты есть
предоставил ваш стиль-это форма clearfix с обратной совместимостью. я нашел статью об этом clearfix. Оказывается, это старый clearfix-все еще обслуживающий старые браузеры. Есть более новая, более чистая версия этого в статье также. Вот разбивка:
в первый clearfix у вас есть добавляет невидимый псевдо-элемент, который выполнен
clear:both
, между целевым элементом и следующим элементом. Это заставляет псевдо-элемент отображаться ниже целевого объекта, а следующий элемент ниже псевдо-элемента.второй добавляет стиль
display:inline-block
, который не поддерживается более ранними браузерами. inline-block похож на inline, но дает вам некоторые свойства, которые блокируют элементы, такие как ширина, высота, а также вертикальное заполнение. Этот был нацелен на IE-MAC.это было повторное применение
display:block
из-за правила IE-MAC выше. Это правило было "скрыто" от IE-MAC.в целом, эти 3 правила держать
.clearfix
работает кросс-браузер, со старыми браузерами в виду.
когда элемент, например
div
иfloated
, его родительский контейнер больше не учитывает его высоту, т. е.<div id="main"> <div id="child" style="float:left;height:40px;"> Hi</div> </div>
родительский контейнер не будет иметь высоту 40 пикселей по умолчанию. Это вызывает много странных маленьких причуд, если вы используете эти контейнеры для структурирования макета.
так
clearfix
класс, который используют различные фреймворки, устраняет эту проблему, заставляя родительский контейнер "подтверждать" содержащиеся элементы.изо дня в день, я обычно просто используйте фреймворки, такие как 960gs, Twitter Bootstrap для выкладки и не беспокоясь о точной механике.
подробнее здесь
clearfix
это то же самое, чтоoverflow:hidden
. Оба ясно плавали дети родителя, ноclearfix
не будет отрезать элемент, который переполнение к немуparent
. Он также работает в IE8 и выше.нет необходимости определять
"."
по материалам & .clearfix. Просто напишите так:.clr:after { clear: both; content: ""; display: block; }
HTML
<div class="parent clr"></div>
читать эти ссылки для еще