Спалучэнне float і margin у CSS

Зараз наш тэкст прыціснуты да карцінкі з левага боку. Давайце паспрабуем крыху адсунуць гэты тэкст. Для гэтага зададзім нашым абзацам левы margin у 30px, а дыву-бацьку - чырвоную мяжу.

Нечакана направа адступіць толькі той тэкст, які прылягае да дыву-бацькі, а тэкст, які прылягае да карцінкі - не адсунецца:

html<div>
  <img src="img.png" alt="">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
  </p>
  <p>
    some long text
  </p>
</div>
cssdiv {
  width: 400px;
  border: 1px solid red;
  text-align: justify;
}
p {
  margin-left: 30px;
}
img {
  float: left;
}

Результат:

Каб зразумець, чаму гэта так, дадамо абзацам зялёную мяжу:

html<div>
  <img src="img.png" alt="">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
  </p>
  <p>
    some long text
  </p>
</div>
cssdiv {
  width: 400px;
  border: 1px solid red;
  text-align: justify;
}
p {
  margin-left: 30px;
  border: 1px solid green;
}
img {
  float: left;
}

Результат:

Як мы бачым, на самой справе абзацы адсуваюцца ад левага краю, але не ад карцінкі, а ад дыву-бацькі. Каб разгледзець падрабязней, давайце дадамо яшчэ і паўпразрыстасць карцінкі праз уласцівасць opacity:

html<div>
  <img src="img.png" alt="">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
  </p>
  <p>
    some long text
  </p>
</div>
cssdiv {
  width: 400px;
  border: 1px solid red;
  text-align: justify;
}
p {
  margin-left: 30px;
  border: 1px solid green;
}
img {
  float: left;
  opacity: 0.5;
}

Результат:

Вось цяпер дакладна відаць, што рэакцыя на margin-left ёсць, толькі абзацы на самой справе размешчаны пад карцінкай. Давайце прыбярэм водступ, пакінуўшы пры гэтым паўпразрыстасць карцінкі:

html<div>
  <img src="img.png" alt="">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
  </p>
  <p>
    some long text
  </p>
</div>
cssdiv {
  width: 400px;
  border: 1px solid red;
  text-align: justify;
}
p {
  border: 1px solid green;
}
img {
  float: left;
  opacity: 0.5;
}

Результат:

Вось так на самой справе выглядаюць нашы абзацы - іх тэкст адсунуты карцінкай, але фізічна абзацы ляжаць пад карцінкай, гэта відаць па мяжы, якая пачынаецца ад левага краю дыву-бацькі.

Давайце вернем margin і заштурхаем карцінку ў першы абзац:

html<div>
  <p>
    <img src="img.png" alt="">
    Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
  </p>
  <p>
    some long text
  </p>
</div>
cssdiv {
  width: 400px;
  border: 1px solid red;
  text-align: justify;
}
p {
  margin-left: 30px;
  border: 1px solid green;
}
img {
  float: left;
  opacity: 0.5;
}

Результат:

Цяпер карцінка рухаецца разам з абзацамі!