Combinação de float e margin em CSS
Agora, nosso texto está alinhado à esquerda da imagem. Vamos tentar afastar um pouco esse texto. Para isso, vamos definir uma margin esquerda de 30px para os nossos parágrafos e uma borda vermelha para a div pai.
Inesperadamente, apenas o texto adjacente à div pai recuará para a direita, enquanto o texto adjacente à imagem não se afastará:
<div>
<img src="img.png" alt="">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
</p>
<p>
some long text
</p>
</div>
div {
width: 400px;
border: 1px solid red;
text-align: justify;
}
p {
margin-left: 30px;
}
img {
float: left;
}
:
Para entender por que isso acontece, vamos adicionar uma borda verde aos parágrafos:
<div>
<img src="img.png" alt="">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
</p>
<p>
some long text
</p>
</div>
div {
width: 400px;
border: 1px solid red;
text-align: justify;
}
p {
margin-left: 30px;
border: 1px solid green;
}
img {
float: left;
}
:
Como podemos ver, na verdade, os parágrafos estão se afastando da borda esquerda, mas não da imagem, e sim da div pai. Para examinar mais detalhadamente, vamos adicionar uma semi-transparência à imagem usando a propriedade opacity:
<div>
<img src="img.png" alt="">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
</p>
<p>
some long text
</p>
</div>
div {
width: 400px;
border: 1px solid red;
text-align: justify;
}
p {
margin-left: 30px;
border: 1px solid green;
}
img {
float: left;
opacity: 0.5;
}
:
Agora sim está claro que há uma reação ao margin-left, apenas que os parágrafos estão, na verdade, posicionados abaixo da imagem. Vamos remover a margin, mantendo a semi-transparência da imagem:
<div>
<img src="img.png" alt="">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
</p>
<p>
some long text
</p>
</div>
div {
width: 400px;
border: 1px solid red;
text-align: justify;
}
p {
border: 1px solid green;
}
img {
float: left;
opacity: 0.5;
}
:
É assim que nossos parágrafos realmente se parecem - seu texto é afastado pela imagem, mas fisicamente os parágrafos estão sob a imagem, isso é visível pela borda que começa na borda esquerda da div pai.
Vamos restaurar a margin e colocar a imagem dentro do primeiro parágrafo:
<div>
<p>
<img src="img.png" alt="">
Lorem ipsum dolor sit amet, consectetur adipiscing elitorire.
</p>
<p>
some long text
</p>
</div>
div {
width: 400px;
border: 1px solid red;
text-align: justify;
}
p {
margin-left: 30px;
border: 1px solid green;
}
img {
float: left;
opacity: 0.5;
}
:
Agora a imagem se move junto com os parágrafos!