СвойÑÑво float в CSS Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ñобенное меÑÑо. Ðо его поÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑаÑположиÑÑ Ð´Ð²Ð° блока один Ñлева Ð¾Ñ Ð´ÑÑгого можно бÑло лиÑÑ Ð¿Ñи помоÑи ÑаблиÑ. Ðо в его ÑабоÑе еÑÑÑ ÑÑд оÑобенноÑÑей. ÐоÑÑÐ¾Ð¼Ñ ÐµÐ³Ð¾ иногда не лÑбÑÑ, но пÑи иÑ
понимании float ÑÑÐ°Ð½ÐµÑ Ð²Ð°Ñим веÑнÑм дÑÑгом и помоÑником.
Ðалее Ð¼Ñ ÑаÑÑмоÑÑим, как ÑабоÑÐ°ÐµÑ float, ÑазбеÑÑм ÑеÑÐµÐ½Ð¸Ñ ÑопÑÑÑÑвÑÑÑиÑ
пÑоблем, а Ñакже ÑÑд полезнÑÑ
ÑеÑепÑов.
Ðак ÑабоÑÐ°ÐµÑ float
СинÑакÑиÑ:
float: left | right | none | inherit;
ÐÑи пÑименении ÑÑого ÑвойÑÑва пÑоиÑÑ Ð¾Ð´Ð¸Ñ ÑледÑÑÑее:
- ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾Ð·Ð¸ÑиониÑÑеÑÑÑ ÐºÐ°Ðº обÑÑно, а заÑем вÑнимаеÑÑÑ Ð¸Ð·
докÑменÑапоÑока и ÑдвигаеÑÑÑ Ð²Ð»ÐµÐ²Ð¾ (длÑleft) или впÑаво (длÑright) до Ñого как коÑнÑÑÑÑ Ð»Ð¸Ð±Ð¾ гÑаниÑÑ ÑодиÑелÑ, либо дÑÑгого ÑлеменÑа Ñfloat. - ÐÑли пÑоÑÑÑанÑÑва по гоÑизонÑали не Ñ Ð²Ð°ÑÐ°ÐµÑ Ð´Ð»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð²Ð¼ÐµÑÑиÑÑ ÑлеменÑ, Ñо он ÑдвигаеÑÑÑ Ð²Ð½Ð¸Ð· до ÑÐµÑ Ð¿Ð¾Ñ, пока не наÑнÑÑ Ð¿Ð¾Ð¼ÐµÑаÑÑÑÑ.
- ÐÑÑгие непозиÑиониÑованнÑе блоÑнÑе ÑлеменÑÑ Ð±ÐµÐ·
floatведÑÑ ÑÐµÐ±Ñ Ñак, как бÑдÑо ÑлеменÑа ÑfloatнеÑ, Ñак как он ÑбÑан из поÑока. - СÑÑоки (inline-ÑлеменÑÑ), напÑоÑив, «знаÑÑ» о
floatи обÑекаÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ð¾ ÑÑоÑонам.
ÐÑÑ Ð´ÐµÑали:
-
ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ð¿Ñи налиÑии
floatполÑÑаеÑdisplay:block.То еÑÑÑ, Ñказав ÑлеменÑÑ, Ñ ÐºÐ¾ÑоÑого
display:inlineÑвойÑÑвоfloat: left/right, Ð¼Ñ Ð°Ð²ÑомаÑиÑеÑки Ñделаем его блоÑнÑм. Ð ÑаÑÑноÑÑи, Ð´Ð»Ñ Ð½ÐµÐ³Ð¾ бÑдÑÑ ÑабоÑаÑÑwidth/height.ÐÑклÑÑением ÑвлÑÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе Ñедкие
displayнаподобиеinline-tableиrun-in(Ñм. Relationships between âdisplayâ, âpositionâ, and âfloatâ) -
ШиÑина
float-блока опÑеделÑеÑÑÑ Ð¿Ð¾ ÑодеÑжимомÑ. («CSS 2.1, 10.3.5»). -
ÐеÑÑикалÑнÑе оÑÑÑÑпÑ
marginÑлеменÑов Ñfloatне ÑливаÑÑÑÑ Ñ Ð¾ÑÑÑÑпами ÑоÑедей, в оÑлиÑие Ð¾Ñ Ð¾Ð±ÑÑнÑÑ Ð±Ð»Ð¾ÑнÑÑ ÑлеменÑов.
ÐÑо пока ÑолÑко ÑеоÑиÑ. Ðалее Ð¼Ñ ÑаÑÑмоÑÑим пÑоиÑÑ Ð¾Ð´ÑÑее на пÑимеÑе.
ТекÑÑ Ñ ÐºÐ°ÑÑинками
Ðдно из пеÑвÑÑ
пÑименений float, Ð´Ð»Ñ ÐºÐ¾ÑоÑого ÑÑо ÑвойÑÑво когда-Ñо бÑло пÑидÑмано â ÑÑо вÑÑÑÑка ÑекÑÑа Ñ ÐºÐ°ÑÑинками, оÑжаÑÑми влево или впÑаво.
ÐапÑимеÑ, Ð²Ð¾Ñ ÑÑÑаниÑа о Ðинни-ÐÑÑ
е Ñ ÐºÐ°ÑÑинками, коÑоÑÑм поÑÑавлено ÑвойÑÑво float:
ÐÑ HTML-код вÑглÑÐ´Ð¸Ñ Ð¿ÑимеÑно Ñак:
<img src="1.jpg" style="float:right">
<p>ТекÑÑ...</p>
<p>ТекÑÑ...</p>
<img src="2.jpg" style="float:left">
<p>ТекÑÑ...</p>
<img src="3.jpg" style="float:right">
<p>ТекÑÑ...</p>
ÐÐ°Ð¶Ð´Ð°Ñ ÐºÐ°ÑÑинка, Ñ ÐºÐ¾ÑоÑой еÑÑÑ float, обÑабаÑÑваеÑÑÑ Ð² ÑоÑноÑÑи по алгоÑиÑмÑ, ÑÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ Ð²ÑÑе.
ÐоÑмоÑÑим, напÑимеÑ, как вÑглÑдело Ð±Ñ Ð½Ð°Ñало ÑекÑÑа без float:
- ÐлеменÑ
IMGвÑнимаеÑÑÑ Ð¸Ð·Ð´Ð¾ÐºÑменÑапоÑока. ÐнаÑе говоÑÑ, поÑледÑÑÑие блоки наÑинаÑÑ Ð²ÐµÑÑи ÑÐµÐ±Ñ Ñак, как бÑдÑо его неÑ, и заполнÑÑÑ Ð¾ÑвободивÑееÑÑ Ð¼ÐµÑÑо (изобÑажение Ð´Ð»Ñ Ð½Ð°Ð³Ð»ÑдноÑÑи полÑпÑозÑаÑно):
- ÐлеменÑ
IMGÑдвигаеÑÑÑ Ð¼Ð°ÐºÑималÑно впÑаво(пÑиfloat:right):
- СÑÑоки, в оÑлиÑие Ð¾Ñ Ð±Ð»Ð¾ÑнÑÑ
ÑлеменÑов, «ÑÑвÑÑвÑÑÑ»
floatи ÑÑÑÑпаÑÑ ÐµÐ¼Ñ Ð¼ÐµÑÑо, обÑÐµÐºÐ°Ñ ÐºÐ°ÑÑÐ¸Ð½ÐºÑ Ñлева:
ÐÑи float:left â вÑÑ Ñо же Ñамое, ÑолÑко IMG ÑмеÑаеÑÑÑ Ð²Ð»ÐµÐ²Ð¾ (или не ÑмеÑаеÑÑÑ, еÑли он и Ñак Ñ Ð»ÐµÐ²Ð¾Ð³Ð¾ кÑаÑ), а ÑÑÑоки â обÑекаÑÑ ÑпÑава
СÑÑоки и инлайн-ÑлеменÑÑ ÑмеÑаÑÑÑÑ, ÑÑÐ¾Ð±Ñ ÑÑÑÑпиÑÑ Ð¼ÐµÑÑо float. ÐбÑÑнÑе блоки â ведÑÑ ÑÐµÐ±Ñ Ñак, как бÑдÑо ÑлеменÑа неÑ.
ЧÑÐ¾Ð±Ñ ÑÑо ÑвидеÑÑ, добавим паÑагÑаÑам Ñон и ÑамкÑ, а Ñакже Ñделаем изобÑажение немного пÑозÑаÑнÑм:
Ðак видно из ÑиÑÑнка, паÑагÑаÑÑ Ð¿ÑоÑ
одÑÑ Â«Ð·Ð°Â» float. ÐÑи ÑÑом ÑÑÑоки в ниÑ
о float'аÑ
знаÑÑ Ð¸ обÑекаÑÑ Ð¸Ñ
, поÑÑÐ¾Ð¼Ñ ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑаÑÑÑ Ð¿Ð°ÑагÑаÑа пÑÑÑа.
Ðлок Ñ float
СвойÑÑво float можно поÑÑавиÑÑ Ð»ÑÐ±Ð¾Ð¼Ñ ÑлеменÑÑ, не обÑзаÑелÑно каÑÑинке. ÐÑи ÑÑом ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑÐ°Ð½ÐµÑ Ð±Ð»Ð¾ÑнÑм.
ÐоÑмоÑÑим, как ÑÑо ÑабоÑаеÑ, на конкÑеÑной задаÑе â ÑделаÑÑ ÑÐ°Ð¼ÐºÑ Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸ÐµÐ¼ вокÑÑг каÑÑинки Ñ Ðинни.
HTML бÑÐ´ÐµÑ Ñакой:
<h2>Ðинни-ÐÑÑ
</h2>
<div class="left-picture">
<img src="winnie-mult.jpg" width="200" height="150">
<div>ÐÐ°Ð´Ñ Ð¸Ð· ÑовеÑÑкого мÑлÑÑÑилÑма</div>
</div>
<p>ТекÑÑ...</p>
â¦Ñо еÑÑÑ, div.left-picture вклÑÑÐ°ÐµÑ Ð² ÑÐµÐ±Ñ ÐºÐ°ÑÑÐ¸Ð½ÐºÑ Ð¸ заголовок к ней. Ðобавим ÑÑÐ¸Ð»Ñ Ñ float:
.left-picture {
float: left;
/* ÑамоÑка и оÑÑÑÑп Ð´Ð»Ñ ÐºÑаÑоÑÑ (не обÑзаÑелÑно) */
margin: 0 10px 5px 0;
text-align: center;
border: 1px solid black;
}
РезÑлÑÑаÑ:
ÐамеÑим, ÑÑо блок div.left-picture «обеÑнÑл» каÑÑÐ¸Ð½ÐºÑ Ð¸ ÑекÑÑ Ð¿Ð¾Ð´ ней, а не ÑаÑÑÑнÑлÑÑ Ð½Ð° вÑÑ ÑиÑинÑ. ÐÑо ÑледÑÑвие Ñого, ÑÑо ÑиÑина блока Ñ float опÑеделÑеÑÑÑ Ð¿Ð¾ ÑодеÑжимомÑ.
ÐÑиÑÑка под float
РазбеÑÑм еÑÑ Ð¾Ð´Ð½Ñ Ð¾ÑобенноÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑвойÑÑва float.
ÐÐ»Ñ ÑÑого вÑведем пеÑÑонажей из мÑлÑÑÑилÑма «Ðинни-ÐÑÑ Â». ЦелÑ:
РеализÑем еÑ, Ñаг за Ñагом.
Шаг 1. ÐобавлÑем инÑоÑмаÑиÑ
ÐопÑобÑем пÑоÑÑо добавиÑÑ Ð¡Ð¾Ð²Ñ Ð¿Ð¾Ñле Ðинни-ÐÑÑ Ð°:
<h2>Ðинни-ÐÑÑ
</h2>
<div class="left">ÐаÑÑинка</div>
<p>..ТекÑÑ Ð¾ Ðинни..</p>
<h2>Сова</h2>
<div class="left">ÐаÑÑинка</div>
<p>..ТекÑÑ Ð¾ Сове..</p>
РезÑлÑÑÐ°Ñ Ñакого кода бÑÐ´ÐµÑ ÑÑÑаннÑм, но пÑедÑказÑемÑм:
ÐÑоизоÑло ÑледÑÑÑее:
- Ðаголовок
<h2>Сова</h2>не замеÑилfloat(он же блоÑнÑй ÑлеменÑ) и ÑаÑположилÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле пÑедÑдÑÑего паÑагÑаÑа<p>..ТекÑÑ Ð¾ Ðинни..</p>. - ÐоÑле него идÑÑ
float-ÑÐ»ÐµÐ¼ÐµÐ½Ñ â каÑÑинка «Сова». Ðн бÑл ÑдвинÑÑ Ð²Ð»ÐµÐ²Ð¾. СоглаÑно алгоÑиÑмÑ, он двигаеÑÑÑ Ð´Ð¾ левой гÑаниÑÑ Ð¸Ð»Ð¸ до каÑÐ°Ð½Ð¸Ñ Ñ Ð´ÑÑгимfloat-ÑлеменÑом, ÑÑо и пÑоизоÑло (каÑÑинка «Ðинни-ÐÑÑ Â»). - Так как Ñ ÑовÑ
float:left, Ñо поÑледÑÑÑий ÑекÑÑ Ð¾Ð±ÑÐµÐºÐ°ÐµÑ ÐµÑ ÑпÑава.
Шаг 2. СвойÑÑво clear
ÐÑ, конеÑно же, Ñ Ð¾Ñели Ð±Ñ ÑаÑположиÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº «Сова» и оÑÑалÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð½Ð¸Ð¶Ðµ Ðинни-ÐÑÑ Ð°.
ÐÐ»Ñ ÑеÑÐµÐ½Ð¸Ñ Ð²Ð¾Ð·Ð½Ð¸ÐºÑей пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¿ÑидÑмано ÑвойÑÑво clear.
СинÑакÑиÑ:
clear: left | right | both;
ÐÑименение ÑÑого ÑвойÑÑва ÑÐ´Ð²Ð¸Ð³Ð°ÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²Ð½Ð¸Ð· до ÑеÑ
поÑ, пока не законÑаÑÑÑ float'Ñ Ñлева/ÑпÑава/Ñ Ð¾Ð±ÐµÐ¸Ñ
ÑÑоÑон.
ÐÑименим его к Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ H2:
h2 {
clear: left;
}
РезÑлÑÑÐ°Ñ Ð¿Ð¾Ð»ÑÑивÑегоÑÑ ÐºÐ¾Ð´Ð° бÑÐ´ÐµÑ Ð±Ð»Ð¸Ð¶Ðµ к Ñели, но вÑÑ ÐµÑÑ Ð½Ðµ идеален:
ÐлеменÑÑ ÑепеÑÑ Ð² нÑжном поÑÑдке. Ðо кÑда пÑопал оÑÑÑÑп margin-top Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° «Сова»?
ТепеÑÑ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº «Сова» пÑÐ¸Ð»ÐµÐ³Ð°ÐµÑ ÑÐ½Ð¸Ð·Ñ Ð¿Ð¾ÑÑи вплоÑнÑÑ Ðº каÑÑинке, Ñ ÑÑÑÑом ÐµÑ margin-bottom, но без Ñвоего болÑÑого оÑÑÑÑпа margin-top.
Таково поведение ÑвойÑÑва clear. Ðно ÑдвинÑло ÑÐ»ÐµÐ¼ÐµÐ½Ñ h2 вниз Ñовно наÑÑолÑко, ÑÑÐ¾Ð±Ñ ÑлеменÑов float не бÑло ÑÐ±Ð¾ÐºÑ Ð¾Ñ ÐµÐ³Ð¾ веÑÑ
ней гÑаниÑÑ.
ÐÑли поÑмоÑÑеÑÑ Ð½Ð° ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° внимаÑелÑно в инÑÑÑÑменÑаÑ
ÑазÑабоÑÑика, Ñо можно замеÑиÑÑ Ð¾ÑÑÑÑп margin-top Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ ÐµÑÑÑ, но он ÑаÑполагаеÑÑÑ Â«Ð·Ð°Â» ÑлеменÑом float и не ÑÑиÑÑваеÑÑÑ Ð¿Ñи ÑабоÑе в clear.
ЧÑÐ¾Ð±Ñ Ð¸ÑпÑавиÑÑ ÑиÑÑаÑиÑ, можно добавиÑÑ Ð¿ÐµÑед заголовком пÑÑÑой пÑомежÑÑоÑнÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð±ÐµÐ· оÑÑÑÑпов, Ñ ÐµÐ´Ð¸Ð½ÑÑвеннÑм ÑвойÑÑвом clear:both. Тогда Ñже под ним оÑÑÑÑп заголовка бÑÐ´ÐµÑ ÑабоÑаÑÑ Ð½Ð¾ÑмалÑно:
<h2>Ðинни-ÐÑÑ
</h2>
<div class="left">ÐаÑÑинка</div>
<p>ТекÑÑ</p>
<div style="clear:both"></div>
<h2>Сова</h2>
<div class="left">ÐаÑÑинка</div>
<p>ТекÑÑ</p>
РезÑлÑÑÐ°Ñ Ð¿Ð¾Ð»ÑÑивÑегоÑÑ ÐºÐ¾Ð´Ð°:
- СвойÑÑво
clearгаÑанÑиÑовало, ÑÑо<div style="clear:both">бÑÐ´ÐµÑ Ð¿Ð¾Ð´ каÑÑинкой Ñfloat. - Ðаголовок
<h2>Сова</h2>идÑÑ Ð¿Ð¾Ñле ÑÑого<div>. Так ÑÑо его оÑÑÑÑп ÑÑиÑÑваеÑÑÑ.
Ðаполнение блока-ÑодиÑелÑ
ÐÑак, Ð¼Ñ Ð½Ð°ÑÑилиÑÑ ÑаÑполагаÑÑ Ð´ÑÑгие ÑлеменÑÑ Ð¿Ð¾Ð´ float. ТепеÑÑ ÑаÑÑмоÑÑим ÑледÑÑÑÑÑ Ð¾ÑобенноÑÑÑ.
Ðз-за Ñого, ÑÑо блок Ñ float ÑдалÑн из поÑока, ÑодиÑÐµÐ»Ñ Ð½Ðµ вÑделÑÐµÑ Ð¿Ð¾Ð´ него меÑÑа.
ÐапÑимеÑ, вÑделим Ð´Ð»Ñ Ð¸Ð½ÑоÑмаÑии о Ðинни-ÐÑÑ
е кÑаÑивÑй ÑлеменÑ-конÑÐµÐ¹Ð½ÐµÑ <div class="hero">:
<div class="hero">
<h2>Ðинни-ÐÑÑ
</h2>
<div class="left">ÐаÑÑинка</div>
<p>ТекÑÑ.</p>
</div>
СÑÐ¸Ð»Ñ ÐºÐ¾Ð½ÑейнеÑа:
.hero {
background: #D2B48C;
border: 1px solid red;
}
РезÑлÑÑÐ°Ñ Ð¿Ð¾Ð»ÑÑивÑегоÑÑ ÐºÐ¾Ð´Ð°:
ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ñ float оказалÑÑ Ð²ÑпавÑим за гÑаниÑÑ ÑодиÑÐµÐ»Ñ .hero.
ЧÑÐ¾Ð±Ñ ÑÑого не пÑоиÑÑ Ð¾Ð´Ð¸Ð»Ð¾, иÑполÑзÑÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð· ÑледÑÑÑÐ¸Ñ ÑÐµÑ Ð½Ð¸Ðº.
ÐоÑÑавиÑÑ ÑодиÑÐµÐ»Ñ float
ÐÐ»ÐµÐ¼ÐµÐ½Ñ Ñ float обÑзан ÑаÑÑиÑиÑÑÑÑ, ÑÑÐ¾Ð±Ñ Ð²Ð¼ÐµÑÑиÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñе float.
ÐоÑÑомÑ, еÑли ÑÑо допÑÑÑимо, Ñо ÑÑÑановка float конÑейнеÑÑ Ð²ÑÑ Ð¸ÑпÑавиÑ:
.hero {
background: #D2B48C;
border: 1px solid red;
float: left;
}
РазÑмееÑÑÑ, не вÑегда можно поÑÑавиÑÑ ÑодиÑÐµÐ»Ñ float, Ñак ÑÑо ÑмоÑÑим далÑÑе.
ÐобавиÑÑ Ð² ÑодиÑÐµÐ»Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ clear
Ðобавим ÑÐ»ÐµÐ¼ÐµÐ½Ñ div style="clear:both" в ÑамÑй ÐºÐ¾Ð½ÐµÑ ÐºÐ¾Ð½ÑейнеÑа .hero.
Ðн Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑоÑÐ¾Ð½Ñ Ð±ÑÐ´ÐµÑ Â«Ð½Ð¾ÑмалÑнÑм» ÑлеменÑом, в поÑоке, и конÑÐµÐ¹Ð½ÐµÑ Ð±ÑÐ´ÐµÑ Ð¾Ð±Ñзан вÑделиÑÑ Ð¿Ð¾Ð´ него пÑоÑÑÑанÑÑво, Ñ Ð´ÑÑгой â он Ð·Ð½Ð°ÐµÑ Ð¾ float и ÑмеÑÑиÑÑÑ Ð²Ð½Ð¸Ð·.
СооÑвеÑÑÑвенно, и конÑÐµÐ¹Ð½ÐµÑ Ð²ÑÑаÑÑÐµÑ Ð² ÑазмеÑе:
<div class="hero">
<h2>Ðинни-ÐÑÑ
</h2>
<div class="left">ÐаÑÑинка</div>
<p>ТекÑÑ.</p>
<div style="clear:both"></div>
</div>
РезÑлÑÑÐ°Ñ â пÑавилÑное оÑобÑажение, как и в пÑимеÑе вÑÑе. ÐÑкÑÑÑÑ ÐºÐ¾Ð´.
ÐдинÑÑвеннÑй недоÑÑаÑок ÑÑого меÑода â лиÑний HTML-ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² ÑазмеÑке.
УнивеÑÑалÑнÑй клаÑÑ clearfix
ЧÑÐ¾Ð±Ñ Ð½Ðµ добавлÑÑÑ Ð² HTML-код лиÑний ÑлеменÑ, можно задаÑÑ ÐµÐ³Ð¾ ÑеÑез :after.
.clearfix:after {
content: "."; /* добавиÑÑ ÑодеÑжимое: "." */
display: block; /* ÑделаÑÑ Ð±Ð»Ð¾ÐºÐ¾Ð¼, Ñ.к. inline не Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ clear */
clear: both; /* Ñ Ð¾Ð±ÐµÐ¸Ñ
ÑÑоÑон clear */
visibility: hidden; /* ÑделаÑÑ Ð½ÐµÐ²Ð¸Ð´Ð¸Ð¼Ñм, заÑем нам ÑоÑка внизÑ? */
height: 0; /* ÑделаÑÑ Ð²ÑÑоÑÑ 0, ÑÑÐ¾Ð±Ñ Ð½Ðµ занимал меÑÑо */
}
Ðобавив ÑÑÐ¾Ñ ÐºÐ»Ð°ÑÑ Ðº ÑодиÑелÑ, полÑÑим ÑÐ¾Ñ Ð¶Ðµ ÑезÑлÑÑаÑ, ÑÑо и вÑÑе. ÐÑкÑÑÑÑ ÐºÐ¾Ð´.
overflow:auto/hidden
ÐÑли добавиÑÑ ÑодиÑÐµÐ»Ñ overflow: hidden или overflow: auto, Ñо вÑÑ ÑÑÐ°Ð½ÐµÑ Ñ
оÑоÑо.
.hero {
overflow: auto;
}
ÐÑÐ¾Ñ Ð¼ÐµÑод ÑабоÑÐ°ÐµÑ Ð²Ð¾ вÑÐµÑ Ð±ÑаÑзеÑÐ°Ñ , полнÑй код в пеÑоÑниÑе.
ÐеÑмоÑÑÑ Ð½Ð° внеÑнÑÑ ÑÑÑанноÑÑÑ, ÑÑÐ¾Ñ ÑпоÑоб не ÑвлÑеÑÑÑ Â«Ñ Ð°ÐºÐ¾Ð¼Â». Такое поведение пÑопиÑано в ÑпеÑиÑикаÑии CSS.
Ðднако, ÑÑÑановка overflow Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»Ð¾ÑÑ Ð¿ÑокÑÑÑки, ÑпоÑоб Ñ Ð¿ÑевдоÑлеменÑом :after более безопаÑен.
float вмеÑÑо display:inline-block
ÐÑи помоÑи float можно ÑазмеÑаÑÑ Ð±Ð»Ð¾ÑнÑе ÑлеменÑÑ Ð² ÑÑÑоке, поÑ
оже на display: inline-block:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
.gallery li {
float: left;
width: 130px;
list-style: none;
/* кÑаÑивоÑÑи */
border: 1px solid black;
text-align: center;
margin: 5px;
}
</style>
</head>
<body>
<ul class="gallery">
<li>
<img src="https://js.cx/carousel/1.png" width="130" height="130">
<div>ÐаÑÑинка 1</div>
</li>
<li>
<img src="https://js.cx/carousel/2.png" width="130" height="130">
<div>ÐаÑÑинка 2</div>
</li>
<li>
<img src="https://js.cx/carousel/3.png" width="130" height="130">
<div>ÐаÑÑинка 3</div>
</li>
<li>
<img src="https://js.cx/carousel/4.png" width="130" height="130">
<div>ÐаÑÑинка 4</div>
</li>
<li>
<img src="https://js.cx/carousel/5.png" width="130" height="130">
<div>ÐаÑÑинка 5</div>
</li>
<li>
<img src="https://js.cx/carousel/6.png" width="130" height="130">
<div>ÐаÑÑинка 6</div>
</li>
<li>
<img src="https://js.cx/carousel/7.png" width="130" height="130">
<div>ÐаÑÑинка 7</div>
</li>
<li>
<img src="https://js.cx/carousel/8.png" width="130" height="130">
<div>ÐаÑÑинка 8</div>
</li>
<li>
<img src="https://js.cx/carousel/9.png" width="130" height="130">
<div>ÐаÑÑинка 9</div>
</li>
</ul>
</body>
</html>СÑÐ¸Ð»Ñ Ð·Ð´ÐµÑÑ:
.gallery li {
float: left;
width: 130px;
list-style: none;
}
ÐлеменÑÑ float:left двигаÑÑÑÑ Ð²Ð»ÐµÐ²Ð¾, а еÑли ÑÑо невозможно, Ñо вниз, авÑомаÑиÑеÑки адапÑиÑÑÑÑÑ Ð¿Ð¾Ð´ ÑиÑÐ¸Ð½Ñ ÐºÐ¾Ð½ÑейнеÑа, полÑÑаеÑÑÑ ÑÑÑекÑ, аналогиÑнÑй display: inline-block, но Ñ Ð¾ÑобенноÑÑÑми float.
ÐÑÑÑÑка в неÑколÑко колонок
СвойÑÑво float позволÑÐµÑ Ð´ÐµÐ»Ð°ÑÑ Ð½ÐµÑколÑко веÑÑикалÑнÑÑ
колонок.
float:left + float:right
ÐапÑимеÑ, Ð´Ð»Ñ Ð²ÑÑÑÑки в две колонки можно ÑделаÑÑ Ð´Ð²Ð° <div>. ÐеÑÐ²Ð¾Ð¼Ñ ÑказаÑÑ float:left (Ð»ÐµÐ²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°), а вÑоÑÐ¾Ð¼Ñ â float:right (пÑÐ°Ð²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°).
ЧÑÐ¾Ð±Ñ Ð¾Ð½Ð¸ не ÑÑоÑилиÑÑ, каждой колонке нÑжно дополниÑелÑно ÑказаÑÑ ÑиÑинÑ:
<div>Шапка</div>
<div class="column-left">ÐÐµÐ²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°</div>
<div class="column-right">ÐÑÐ°Ð²Ð°Ñ ÐºÐ¾Ð»Ð¾Ð½ÐºÐ°</div>
<div class="footer">Ðиз</div>
СÑили:
.column-left {
float: left;
width: 30%;
}
.column-right {
float: left;
width: 70%;
}
.footer {
clear: both;
}
РезÑлÑÑÐ°Ñ (Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ ÐºÑаÑки):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body,
html {
margin: 0;
padding: 0;
}
.column-left {
float: left;
width: 30%;
}
.column-right {
float: left;
width: 70%;
overflow: auto;
/* ÑаÑÑиÑиÑÑÑÑ Ð²Ð½Ð¸Ð· заÑ
ваÑиÑÑ float'Ñ */
}
.footer {
clear: both;
}
.inner {
margin: 1em;
}
</style>
</head>
<body>
<div style="background:yellow">Шапка</div>
<div class="column-left" style="background:#aef">
<div class="inner">
<!-- див Ð´Ð»Ñ Ð¾ÑÑÑÑпа внÑÑÑи ÑиÑÐ¸Ð½Ñ ÑодиÑÐµÐ»Ñ -->
<h3>ÐеÑÑонажи:</h3>
<ul>
<li>Ðинни-ÐÑÑ
</li>
<li>ÐÑлик Ðа</li>
<li>Сова</li>
<li>ÐÑолик</li>
</ul>
</div>
</div>
<div class="column-right" style="background:tan">
<div class="inner">
<h3>Ðинни-ÐÑÑ
</h3>
<img src="https://js.cx/clipart/winnie-mult.jpg" style="float:left; margin: 0 1em .5em 0">
<p>ÐиÌнни-ÐÑÌÑ
(англ. Winnie-the-Pooh) â плÑÑевÑй миÑка, пеÑÑонаж повеÑÑей и ÑÑиÑ
ов Ðлана ÐлекÑандÑа Ðилна (Ñикл не Ð¸Ð¼ÐµÐµÑ Ð¾Ð±Ñего Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ обÑÑно Ñоже назÑваеÑÑÑ Â«Ðинни-ÐÑÑ
», по пеÑвой книге). Ðдин из ÑамÑÑ
извеÑÑнÑÑ
геÑоев деÑÑкой лиÑеÑаÑÑÑÑ XX века.</p>
<p>Ð 1960-еâ1970-е годÑ, благодаÑÑ Ð¿ÐµÑеÑÐºÐ°Ð·Ñ ÐоÑиÑа ÐаÑ
одеÑа «Ðинни-ÐÑÑ
и вÑе-вÑе-вÑе», а заÑем и ÑилÑмам ÑÑÑдии «СоÑзмÑлÑÑÑилÑм», где миÑÐºÑ Ð¾Ð·Ð²ÑÑивал Ðвгений Ðеонов, Ðинни-ÐÑÑ
ÑÑал оÑÐµÐ½Ñ Ð¿Ð¾Ð¿ÑлÑÑен и в СовеÑÑком СоÑзе.</p>
</div>
</div>
<div class="footer" style="background:yellow">Ðиз</div>
</body>
</html>Ð ÑÑÑ ÑÑÑÑкÑÑÑÑ Ð»ÐµÐ³ÐºÐ¾ добавиÑÑ Ð±Ð¾Ð»ÑÑе колонок Ñ Ñазной ÑиÑиной. ÐÑавой колонке можно бÑло Ð±Ñ ÑказаÑÑ Ð¸ float:right.
float + margin
ÐÑÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ â ÑделаÑÑ float Ð´Ð»Ñ Ð»ÐµÐ²Ð¾Ð¹ колонки, а пÑавÑÑ Ð¾ÑÑавиÑÑ Ð² поÑоке, но Ñ Ð¾Ñбивкой ÑеÑез margin:
.column-left {
float: left;
width: 30%;
}
.column-right {
margin-left: 30%;
}
.footer {
clear: both;
}
РезÑлÑÑÐ°Ñ (Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ ÐºÑаÑки):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body,
html {
margin: 0;
padding: 0;
}
.column-left {
float: left;
width: 30%;
}
.column-right {
margin-left: 30%;
width: 70%;
overflow: auto;
/* ÑаÑÑиÑиÑÑÑÑ Ð²Ð½Ð¸Ð· заÑ
ваÑиÑÑ float'Ñ */
}
.footer {
clear: both;
}
.inner {
margin: 1em;
}
</style>
</head>
<body>
<div style="background:yellow">Шапка</div>
<div class="column-left" style="background:#aef">
<div class="inner">
<!-- див Ð´Ð»Ñ Ð¾ÑÑÑÑпа внÑÑÑи ÑиÑÐ¸Ð½Ñ ÑодиÑÐµÐ»Ñ -->
<h3>ÐеÑÑонажи:</h3>
<ul>
<li>Ðинни-ÐÑÑ
</li>
<li>ÐÑлик Ðа</li>
<li>Сова</li>
<li>ÐÑолик</li>
</ul>
</div>
</div>
<div class="column-right" style="background:tan">
<div class="inner">
<h3>Ðинни-ÐÑÑ
</h3>
<img src="https://js.cx/clipart/winnie-mult.jpg" style="float:left; margin: 0 1em .5em 0">
<p>ÐиÌнни-ÐÑÌÑ
(англ. Winnie-the-Pooh) â плÑÑевÑй миÑка, пеÑÑонаж повеÑÑей и ÑÑиÑ
ов Ðлана ÐлекÑандÑа Ðилна (Ñикл не Ð¸Ð¼ÐµÐµÑ Ð¾Ð±Ñего Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¸ обÑÑно Ñоже назÑваеÑÑÑ Â«Ðинни-ÐÑÑ
», по пеÑвой книге). Ðдин из ÑамÑÑ
извеÑÑнÑÑ
геÑоев деÑÑкой лиÑеÑаÑÑÑÑ XX века.</p>
<p>Ð 1960-еâ1970-е годÑ, благодаÑÑ Ð¿ÐµÑеÑÐºÐ°Ð·Ñ ÐоÑиÑа ÐаÑ
одеÑа «Ðинни-ÐÑÑ
и вÑе-вÑе-вÑе», а заÑем и ÑилÑмам ÑÑÑдии «СоÑзмÑлÑÑÑилÑм», где миÑÐºÑ Ð¾Ð·Ð²ÑÑивал Ðвгений Ðеонов, Ðинни-ÐÑÑ
ÑÑал оÑÐµÐ½Ñ Ð¿Ð¾Ð¿ÑлÑÑен и в СовеÑÑком СоÑзе.</p>
</div>
</div>
<div class="footer" style="background:yellow">Ðиз</div>
</body>
</html>РпÑимеÑе вÑÑе â показана неболÑÑÐ°Ñ Ð¿Ñоблема. Ðолонки не ÑаÑÑÑгиваÑÑÑÑ Ð´Ð¾ одинаковой вÑÑоÑÑ. ÐонеÑно, ÑÑо не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑениÑ, еÑли Ñон одинаковÑй, но ÑÑо, еÑли он ÑазнÑй?
Ð ÑовÑеменнÑÑ Ð±ÑаÑзеÑÐ°Ñ (кÑоме IE10-) ÑÑÑ Ð¶Ðµ задаÑÑ Ð»ÑÑÑе ÑеÑÐ°ÐµÑ flexbox.
ÐÐ»Ñ ÑÑаÑÑÑ ÐµÑÑÑ ÑазлиÑнÑе Ð¾Ð±Ñ Ð¾Ð´Ñ Ð¸ ÑÑÑки, коÑоÑÑе позволÑÑÑ Ð¾Ð±Ð¾Ð¹Ñи пÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð² ÑÑде ÑиÑÑаÑий, но они вÑÑ Ð¾Ð´ÑÑ Ð·Ð° Ñамки наÑего обÑÑждениÑ.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)