Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Personalizando <p> ao lado de imagem float

Neste ponto do curso quis começar a brincar mais com o CSS da minha home, e pensei em colocar o texto da missão dentro de um box colorido. O texto está do lado de uma imagem "float: left".

O resultado ficou assim, com o fundo passando por trás da imagem também, não apenas em volta do texto: https://i.imgur.com/g9IXx1m.png

Tentei mudar o display do bloco de texto para "inline" e "inline-block" mas nenhum funciona como eu queria também. Tentei até meter um "float:right" no bloco de texto para ver se ele ficava flutuando ao lado da imagem mas não rolou tbm rs.

Pelo que pesquisei acho que dá pra resolver mudando um pouco a estrutura para tudo isso ficar em uma div com "display: flex", mas queria saber se existe alguma alternativa para resolver isso mantendo a imagem como "float", sem precisar criar mais divs e tals.

Segue os códigos:

<img class="imagem-sobre" src="utensilios.jpg" alt="Utensílios de barbeiro">

<p>A <strong>Barbearia Alura</strong> traz para o mercado o que há de melhor para o seu cabelo e barba. Fundada em 2019, a Barbearia Alura já é destaque na cidade e conquista novos clientes a cada dia.</p>

<p class="missao">Nossa missão é: <strong>"Proporcionar auto-estima e qualidade de vida aos nossos clientes"</strong>.</p>
.imagem-sobre {
    border-radius: 50%;
    float: left;
    margin: 0 30px 20px 0;
    width: 120px;
}

.missao {
    background: #a1873d;
    border-radius: 10px;
    color: #ffffff;
    font-size: 1.4em;
    padding: 1em;
}
4 respostas

Olá Fabio, tudo bem?

Poderia enviar o código HTML e CSS completo, para que eu possa verificar quais propriedades estão sendo aplicadas ao pai desses elementos?

Fico no aguardo, abraços.

solução!

Opa, Fábio.

Pelo que entendi, o resultado que você deseja é que a imagem esteja flutuando na esquerda do texto missão, sem que o background desse texto fique passando por trás da imagem também. Correto?

Dessa forma:

resultadoesperado

Mesmo que a imagem esteja configurada com a propriedade float: left, o fundo da <p class="missao"> assumirá a largura do pai <div class="caixa">, fazendo com que esse fundo fique passando por trás da imagem.

Nesse caso em específico, é coerente uma nova div ser criada e a forma que você encontrou ao pesquisar a solução é a mais adequada, visto que esse fato só ocorre devido todos os elementos estarem dentro da mesma caixa.

Caso ainda não saiba muito bem como colocar em prática essa solução, veja o passo a passo a seguir:

Teremos que criar uma nova div que contenha apenas a imagem e o texto da missão.

  • O código no HTML ficará assim:
<div class="caixa-missao">
    <img class="imagem-sobre" src="imagens/utensilios.jpg" alt="Utensílios de barbeiro">
    <p class="missao">Nossa missão é: <strong>"Proporcionar auto-estima e qualidade de vida aos nossos clientes"</strong>.</p>
</div>

Aplicaremos a propriedade display:flex na <div class="caixa-missao"> , que tem como padrão o flex-direction: row, que faz com que os elementos fiquem dispostos em uma linha. Sem odisplay:flex, o texto ficaria abaixo da imagem.

  • O código no CSS ficará assim:
.caixa-missao{
    display: flex;
}

Agora, a imagem estar com o float: left ou não, não fará diferença no aspecto visual, pois o display:flex acaba "substituindo" o resultado dessa propriedade.

Se tiver mais alguma dúvida fique a vontade para perguntar, bons estudos!

Entendi. É esse resultado que eu queria mesmo, muito obrigado!