- блочные (blok), которые занимают всю ширину, где находятся, и отделены от того, что над и под ними. Например, это теги DIV, P, H.
- встроенные (inline). Например, SPAN, STRONG, EM, A и IMG.
Ранее разметка страниц осуществлялась с помощью таблиц.
Роль свойства float возросла после перехода с table-верстки на div-верстку. Это объясняется тем, что float позволяет веб-разработчику включать столбцы не прибегая к таблице. Оно может принимать значения right, left, но не center.
<div> <p>Ранее разметка страниц осуществлялась с помощью <strong>таблиц</strong>.</p> <p>Роль свойства <a href="#">float</a> возросла после перехода с table-верстки на div-верстку. Это объясняется тем, что float позволяет веб-разработчику включать столбцы не прибегая к таблице. Оно может принимать значения <em>right</em>, <em>left</em>, но не <em>center</em>.</p> </div>
- ПУНКТ
- ПУНКТ
- ПУНКТ
- ПУНКТ
- ПУНКТ
- ПУНКТ
это HEADER h3
Если ему задать свойство display: inline;, то мы увидим, что изменилась не только ширина, но и расстояние над и под элементом:
это HEADER h3
Но если я хочу разместить элемент справа и добавлю на этот раз text-align:right;, то мы получим:
это HEADER h3
И совсем иначе, если float: right;. Обратите внимание, что расстояние над и под элементом остались неизменными:
это HEADER h3
А как поведут себя элементы, находящиеся рядом с заголовком?
Верхний текст остаётся неизменным, поскольку плавающий элемент не может располагаться выше строки, в которой он создан.
это HEADER h3
А вот красный текст находится под заголовком и он будет его обтекать, не имея при этом никаких дополнительных стилей. И только высота h3 будет преодолена, страница вернётся к естественному порядку.
АБВГНесколько плавающих элементов будут соблюдать последовательность своего расположения.
<p><span style="float: left;">А</span><span style="float: right;">Б</span><span style="float: left;">В</span><span style="float: right;">Г</span>текст...</p>
А выравнивание производится по самому нижнему краю тех букв, которые находятся на одной стороне.
АБВГ Если мы ходим, чтобы обтекание элемента было прекращено с определённого момента (отсюда), применяется свойство clear. Его мы можем добавить в пустой тег <div style="clear:both;"></div>
<div style="width: 100%; float: left;"> <div style="float: left; width: 25%;">Блок 1</div> <div style="float: left; width: 25%;">Блок 2</div> <div style="float: left; width: 25%;">Блок 3</div> <div style="float: left; width: 25%;">Блок 4</div> </div> <div style="clear: both;"></div>А где расстояние между блоками? Если задать отступы margin и padding, то из-за того, что плавающим элементам не будет хватать пространства, они будут смещаться вниз.
<div style="width: 100%; float: left;"> <div style="float: left; width: 25%; margin: 10px; padding: 10px;">Блок 1</div> <div style="float: left; width: 25%; margin: 10px; padding: 10px;">Блок 2</div> <div style="float: left; width: 25%; margin: 10px; padding: 10px;">Блок 3</div> <div style="float: left; width: 25%; margin: 10px; padding: 10px;">Блок 4</div></div><div style="clear: both;"></div>Вопрос решается путём добавления ещё одного DIV:
<div style="width: 100%; float: left;"> <div style="float: left; width: 25%;"> <div style="margin: 10px; padding: 10px;"> Блок 1 </div> </div> <div style="float: left; width: 25%;"> <div style="margin: 10px; padding: 10px;"> Блок 2 </div> </div> <div style="float: left; width: 25%;"> <div style="margin: 10px; padding: 10px;"> Блок 3 </div> </div> <div style="float: left; width: 25%;"> <div style="margin: 10px; padding: 10px;"> Блок 4 </div> </div> </div> <div style="clear: both;"></div>
<style type="text/css"> .tablica { display: table; width: 100%; border-spacing: 10px 10px; } .yacheika { display: table-cell; padding: 10px; } </style> <div class="tablica"> <div class="yacheika">Блок 1</div> <div class="yacheika">Блок 2</div> <div class="yacheika">Блок 3</div> <div class="yacheika">Блок 4</div> </div>, где border-spacing определяет горизонтальное и вертикальное расстояние между границами ячеек.
Теперь видно каким образом строится галерея изображений. Код картинок, надеюсь, никто не позабыл.

Блок 1

Блок 2

Блок 3

Блок 4
<div class="konteiner"> <div class="yacheika" ><img src="адрес_изо"/><br>Блок 1</div> <div class="yacheika" ><img src="адрес_изо"/><br>Блок 2</div> <div class="yacheika" ><img src="адрес_изо"/><br>Блок 3</div> <div class="yacheika" ><img src="адрес_изо"/><br>Блок 4</div> </div>

И последнее, что хочется показать - ситуацию, когда нужно достичь обтекания изображения с двух сторон. Собственно говоря картинка соответствует моему настроению, когда мне всё же удалось добиться этого эффекта.
#imagen-center {margin-left:-60px;} равен #texto-L:before, #texto-R:before {width: 60px;} и составляет половину ширины изображения плюс 10px. #texto-R:before {height: 110px;} равна высоте изображения + 10px.
<style type="text/css"> #contenedor-center { margin: 0 auto; position: relative; width: 620px; text-indent: 0px;} #imagen-center { position: absolute; top: 0; left: 50%; margin-left: -60px; } #texto-L, #texto-R {width: 49%;} #texto-L {float: left;} #texto-R {float: right;} #texto-L:before, #texto-R:before { content: ""; width: 60px; height: 110px;} #texto-L:before {float: right;} #texto-R:before {float: left;} #contenedor-center p {margin:0;} </style> <div id="contenedor-center"><img id="imagen-center" src="http://4.bp.blogspot.com/-yrI7Ea0IoX8/TcEkmd-f3qI/AAAAAAAAB2g/7YkRIG6kKGs/s100/happy-blogger.jpg"><div id="texto-L"><p style="text-align: right;">текст...</p></div><div id="texto-R"><p style="text-align: left;">текст...</p></div></div> <div style="clear: both;"></div>
Ссылки на источники: www.alistapart.com, softwaremaniacs.org, vagabundia.blogspot.com, www.smashingmagazine.com.
18 комментариев:
Подскажите пожалуйста, как реализовать вывод изображений как на этой странице
bersoantik.com/catalog/
Нужно чтобы все изображения выравнивались только по столбцам - по 3 в строке, но в строке чтобы если одно меньше, одно больше по высоте, то отступы между изображениями по вертикали были одинаковые, то есть как-будто какой-то небольшой хаос.
Спасибо за помощь.
Код с отступом:
<style type="text/css">
.kolonka {
-moz-columns: 3;
-webkit-columns: 3;
-moz-column-gap: 0;
-webkit-column-gap: 0;
line-height: 0;
columns: 3;
column-gap: 0;
text-align: center;
}
.kolonka img{
width: 98% !important;
height: auto !important;
padding-bottom: 2%;
}
</style>
<div class="kolonka">
<img src="URL_изо_1"/>
.......
<img src="URL_изо_15"/>
</div>
------------
Вячеслав Лукоянов
http://modxpro.ru/