Что делает класс 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), вот как работают поплавки.
floatvsdisplay: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>читать эти ссылки для еще