Какие методы «clearfix» я могу использовать?

Используйте segments вместо lines.

Функция segments добавит только к существующему сюжету. Чтобы создать пустой график с правильными осями и пределами, сначала используйте plot с type="n", чтобы нарисовать «ничего».

x0 <- seq(1, 10, 0.1)
colour <- ifelse(sin(seq(from=1, to=10,by=0.1))>0.5,"red","blue")

plot(x0, sin(x0), type="n")
segments(x0=x0, y0=sin(x0), x1=x0+0.1, y1=sin(x0+0.1), col=colour)

Подробнее см. ?segments.

enter image description here [/g0]

848
задан NathanOliver 22 March 2017 в 12:03
поделиться

7 ответов

В зависимости от создаваемой конструкции каждое из нижеприведенных решений clearfix CSS имеет свои преимущества .

У clearfix действительно есть полезные приложения, но его также использовали в качестве взлома. Прежде чем использовать clearfix, возможно, вам могут пригодиться эти современные решения css:


Современные решения Clearfix


Контейнер с overflow: auto;

Самый простой способ очистить плавающие элементы используют стиль overflow: auto для содержащего элемента. Это решение работает во всех современных браузерах.

<div style="overflow: auto;">
  <img
    style="float: right;"
    src="path/to/floated-element.png"
    width="500"
    height="500"
  > 
  <p>Your content here…</p>
</div>

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

Использование 'overflow: hidden' также является решением clearfix, но не будет иметь полос прокрутки, однако использование hidden приведет к обрезке любого содержимого, расположенного за пределами содержащего элемента.

Примечание: Элемент floated - это тег img в этом примере, но может быть любым элементом html.


Clearfix Reloaded

Тьерри Кобленц на CSSMojo написал: Самая последняя перезагрузка clearfix . Он отметил, что отказавшись от поддержки oldIE, решение можно упростить до одного оператора css. Кроме того, использование display: block (вместо display: table ) позволяет правильно сжимать поля, когда элементы с clearfix являются родственными.

.container::after {
  content: "";
  display: block;
  clear: both;
}

Это самая современная версия clearfix. - объясняет, как решить общие проблемы, связанные с этой техникой, а именно установку width: 100% в контейнере.

.container {
  overflow: hidden;
  display: inline-block;
  display: block;
}

Вместо использования свойства display для установки " hasLayout "для IE, другие свойства могут использоваться для запуска hasLayout для элемента .

.container {
  overflow: hidden;
  zoom: 1;
  display: block;
}

Другой способ очистить плавающие объекты с помощью свойства overflow - использовать хак подчеркивания . IE будет применять значения с префиксом подчеркивания, другие браузеры - нет. Свойство zoom запускает hasLayout в IE:

.container {
  overflow: hidden;
  _overflow: visible; /* for IE */
  _zoom: 1; /* for IE */
}

Хотя это работает ... не идеально использовать хаки.


PIE: Простой метод очистки

Это более старый «Легкая очистка» имеет то преимущество, что позволяет позиционированным элементам висеть за пределами контейнера за счет более хитрого CSS.

Это решение довольно старое, но вы можете узнать все о Easy Clearing on Position Is Everything: http://www.positioniseverything.net/easyclearing.html[12126 impressionElement using "clear" свойство

Быстрое и грязное решение (с некоторыми недостатками), когда вы быстро собираете что-то вместе:

<br style="clear: both" /> <!-- So dirty! -->

Недостатки

  • Он не реагирует и, следовательно, может не обеспечить желаемый эффект, если стили макета изменяются на основе медиа-запросов. Решение на чистом CSS является более идеальным.
  • Оно добавляет разметку html без обязательного добавления какого-либо семантического значения.
  • Для каждого экземпляра требуется встроенное определение и решение, а не ссылка на класс на одно решение «clearfix» в CSS и ссылки на него в html.
  • Это затрудняет работу с кодом для другие, поскольку им, возможно, придется написать больше хаков, чтобы обойти это.
  • В будущем, когда вам понадобится / вы захотите использовать другое решение clearfix, вам не придется возвращаться и удалять все
    тэг валяется вокруг разметки.
1031
ответ дан 22 November 2019 в 21:11
поделиться

Имейте Вас, попробовал это:

<div style="clear:both;"/>

у меня не было проблем с этим методом.

-2
ответ дан Torkel 22 March 2017 в 12:03
поделиться

Я нашел ошибку в официальном CLEARFIX-методе: ТОЧКА не имеет размера шрифта. И если Вы установите height = 0, и первый Элемент в Вашем DOM-дереве имеет класс "clearfix", то у Вас всегда будет поле внизу страницы 12 пкс:)

необходимо зафиксировать его как это:

/* float clearing for everyone else */
.clearfix:after{
  clear: both;
  content: ".";
  display: block;
  height: 0;
  visibility: hidden;
  font-size: 0;
}

Это - теперь часть YAML-расположения... Просто смотрите на него - это очень интересно! http://www.yaml.de/en/home.html

17
ответ дан Martin 22 March 2017 в 12:03
поделиться

Водосливное свойство может использоваться для очистки плаваний без дополнительной разметки:

.container { overflow: hidden; }

Это работает на все браузеры кроме IE6, где все, что необходимо сделать, включают hasLayout (масштабирование, являющееся моим предпочтительным методом):

.container { zoom: 1; }

http://www.quirksmode.org/css/clearing.html

23
ответ дан Eric 22 March 2017 в 22:03
поделиться

Использование overflow: hidden / auto и высоты для ie6 будет достаточно, если у плавающего контейнера есть родительский элемент.

Любой из #test может работать, если HTML, указанный ниже, очищает float.

#test {
  overflow:hidden; // or auto;
  _height:1%; forces hasLayout in IE6
}

<div id="test">
  <div style="floatLeft"></div>
  <div style="random"></div>
</div>

В случаях, когда это отказывается работать с ie6, просто float родительского объекта, чтобы очистить float.

#test {
  float: left; // using float to clear float
  width: 99%;
}

Еще никогда особо не нуждался в какой-либо другой очистке. Может быть, так я пишу свой HTML.

4
ответ дан 22 November 2019 в 21:11
поделиться

Я бы сделал плавающий #content тоже, чтобы обе колонки содержали плавающие элементы. Также это позволит вам очищать элементы внутри #content, не очищая сайдбар.

То же самое с оберткой, вам нужно будет сделать ее контекстом форматирования блока, чтобы обернуть две колонки.

В этой статье упоминается несколько триггеров, которые можно использовать: контексты форматирования блоков.

3
ответ дан 22 November 2019 в 21:11
поделиться

честно говоря, все решения кажутся хаком для исправления ошибки рендеринга... я не прав?

я нашел
самым простым, самым легким. Видеть class="clearfix" повсюду не может задеть чувства того, кто возражает против лишних элементов разметки, не так ли? Вы просто рисуете проблему на другом холсте.

Я также использую решение display: hidden, которое отлично подходит и не требует дополнительных объявлений классов или html-разметки... но иногда нужно, чтобы элементы переполняли контейнер, например, красивые ленты и пояса

.
5
ответ дан 22 November 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: