Почему Float лучше, чем position: относительный и абсолютный, тогда как мы можем быстро создать макет с помощью position? - PullRequest
13 голосов
/ 23 февраля 2010

Почему Float лучше, чем position: относительный и абсолютный, тогда как мы можем быстро создать макет с помощью position?и в это время рецессии время очень важно.

, когда мы делаем 2-х, 3-х или многоцветный макет, а затем размещаем другие элементы в макетах div.

Большинство изМировой фаворит во Флоате.Почему Float лучше, чем position:relative и position:absolute, чтобы определить положение любого элемента в <body> и других вложенных элементов?

При использовании position: для разметки страницы / дизайна мы можем создать контейнерный div, для которого установлено положение: относительное, что позволяет установить заголовок, содержимое и навигацию divs внутри контейнера контейнера в положение:относительный, что позволяет позиционировать эти divs относительно контейнера div.

, а с позиционированием мы можем сохранять "maincontent" сначала и "leftsidebar" секунду в исходном порядке, что хорошо для SEO.

объясните, пожалуйста, пример демонстрационной страницы .

Ответы [ 9 ]

17 голосов
/ 24 февраля 2010

Абсолютное позиционирование выводит элемент из нормального потока документов . Любой абсолютно позиционированный элемент полностью игнорируется применительно к нормальным элементам.

Это нарушает множество сценариев. Главное, что приходит на ум, - это положить элементы друг под другом. На примере столбцов вы можете абсолютно точно позиционировать 3 столбца, но вы не можете поместить что-либо ниже этого на страницу, потому что поток все еще находится в верхней части страницы. «Абсолютные» элементы не влияют на то, где появляется более поздний контент.

В случае с плавающей точкой вы просто помещаете элемент потом, и он оборачивается вокруг или под плавающими.

Это не значит, что это бесполезно. Позиционирование очень полезно, когда вы хотите открыть «слой» над веб-страницей.


Краткий пример ... возьмем этот общий сценарий HTML:

<h2>Section title</h2>
<div class="column1">First</div>
<div class="column2">Second</div>
<div class="column3">Third</div>

<h2>Second section title</h2>
...

С плавающей точкой, вы бы использовали этот CSS:

.column1, .column2, .column3 {
  float: left;
  width: 200px;
}
h2 {
  clear: both;
}

И все будет хорошо. Давайте просто разместим столбцы вместо:

.column1, .column2, .column3 {
  position: absolute;
  width: 200px;
  top: 30px; /* enough to miss the first h2 */
}
.column1 {
  left: 0;
  background: pink;
}
.column2 {
  left: 200px;
  background: lightgreen;
}
.column3 {
  left: 400px;
  background: lightblue;
}

Попробуйте сами (с большим содержанием в каждом столбце) и посмотрите, что происходит со вторым заголовком - он всегда будет прямо под первым, как если бы столбцов не было. На самом деле, второй заголовок будет в основном скрыт столбцами, поскольку они располагаются поверх документа.

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

Честно говоря, просто попробуйте и попробуйте хороший макет, используя абсолютное позиционирование. Вы скоро поймете его недостатки.

4 голосов
/ 23 февраля 2010

Float не лучше, чем Position, и Position не лучше, чем Float - оба должны использоваться в правильном положении. Я бы порекомендовал вам прочитать книгу http://www.transcendingcss.com/, если вы хотите узнать больше о том, когда использовать какую из них, и стиль CSS в целом.

См. Здесь пример: http://transcendingcss.com/blog/about/changingman_layout_updated/

3 голосов
/ 23 февраля 2010

Абсолют: ваш элемент позиционируется на первый родительский элемент с позицией, отличной от статической (она должна быть явной, даже если позиция по умолчанию является относительной)

Относительно: ваш элемент расположен относительно последнего брата с относительной позицией

Float: например, если он оставлен, ваш элемент будет перемещаться как можно дальше влево (в зависимости от другого элемента и его ширины, элементы до не будут затронуты, элементы после будут обтекать его.

Ссылка:

http://www.w3schools.com/css/css_positioning.asp

http://www.w3schools.com/css/css_float.asp

2 голосов
/ 23 февраля 2010

мы используем float, так как absolute позиционирование не работает для столбцов переменной высоты.

Когда вы указываете position:absolute, элемент удаляется из документа и помещается именно туда, куда вы его указали

Если вы укажете position:relative, то вы можете использовать верх или низ, а также влево или вправо, чтобы переместить элемент относительно того места, где он обычно находится в документе.

Источник: http://www.barelyfitz.com/screencast/html-training/css/positioning/

1 голос
/ 24 февраля 2010

float не будет нарушать поток документов - также он будет располагать любой элемент, который он использует, наилучшим образом, который он может вписать в ширину контейнера - скажем, у меня есть 5 x 200px делений в контейнере шириной 800px, последние 5-е будет идти в «новой строке» ниже других - использование position:relative заставит вас рассчитывать, когда ему нужно разбить себя, и оно не будет корректно разрываться, поскольку display будет либо block, либо перейдите по всей ширине, или это будет inline-block или inline, который не будет отображаться для div так же, как block, и в значительной степени испортит поток документов и макет.

Это зависит от того, что вы хотите сделать: position:relative используется, чтобы переместить элемент немного в сторону от его естественного местоположения, тогда как float сделает его всплывающим в крайнем левом или крайнем правом положении в родительском элементе. элемент. position:absolute позволит вам позиционировать его относительно ближайшего расположенного предка (вместо того, чтобы позиционироваться относительно окна просмотра, как зафиксировано). Тем не мение; если элемент с абсолютным позиционированием не имеет позиционированных предков, он использует тело документа и перемещается вместе с прокруткой страницы.

1 голос
/ 23 февраля 2010

Как упоминалось выше, это не общая проблема лучше / хуже, но:

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

Таким образом, обычно это неправильный выбор для создания макета всей страницы, если вы не знаете, какой будет ширина и высота всего вашего контента.

1 голос
/ 23 февраля 2010

Я согласен с Frozenskys, ни один из них на самом деле не лучше, но float удерживает элемент в потоке документа, в то время как position удаляет элемент из потока документов, поэтому я нашел float работает лучше во многих браузерах, и мой CSS для IE меньше, когда я использую float

0 голосов
/ 21 февраля 2014

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

Мне не всегда нужна точность позиционирования, но я рад, что она есть, когда она мне нужна.

Конечно, это также зависит от того, насколько хорошо вы знаете свой html / css и сколько времени вы готовы потратить на кодирование, чтобы обойти ограничения для того или иного атрибута.

Например, <h2> дает большой заголовок, выделенный жирным шрифтом, понятный всем браузерам, но вы можете сделать то же самое с <p>, если вы хотите добавить атрибуты стиля, чтобы жирный заголовок соответствовал заданным особенностям. Это больше работы, в основном ненужной, но может быть сделано.

Как правило, лучше делать как можно меньше кода, используя установленные элементы, атрибуты и значения, и как можно меньше хаков. В этом суть стандартов HTML5. Используйте позиционирование, когда вам это нужно, но используйте поплавок, когда можете.

Отличный сайт. Хорошие участники. Я многому учусь.

0 голосов
/ 23 февраля 2010

В зависимости от ваших целей, это может быть лучше или хуже. Хорошей стороной является то, что он не меняет механизм позиционирования. Плохая сторона в том, что вы не можете делать некоторые трюки (то есть наложение элементов) с ним. Float подходит только для прикрепления элемента к любому краю родительского элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...