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

Definição 'elemento pai'

Olá,

durante as aulas tenho ouvido muito falar de 'elemento pai', mas percebi que não conseguiria, por exemplo, definir do que se trata pra alguém que me perguntasse. Isso e outros detalhes me confundem na hora de entender as relações/possíveis conflitos entre padding, margin, float, position entre os elementos e na hora de entender as medidas relativas.

Alguém poderia me ajudar a entender de uma forma um pouco mais clara esse conceito (elemento pai) e as relações/possíveis conflitos entre as propriedades?

4 respostas
solução!

Opa. Fala aí, Renan! Beleza, cara? =)

Na minha cabeça, só faz sentido falar em "elemento pai", se você estiver falando de algum outro também, ou seja, é um conceito relativo... Dito isso, um elemento é considerado "pai" de outro, se o contiver... Exemplo:

<html>
  <head>
  </head>
  <body>
    <h1>Olá mundo!</h1>
  </body>
</html>

Repare que a própria indentação ajuda nesse caso! Observe, também, que o elemento <html> está envolta de todos os outros, mas diretamente, apenas de <head> e <body>... Conseguiu ver isso? Se você conseguiu, agora podemos concluir que o <html> é pai de <head> e <body>! E esses dois elementos, são pai de quem?

Se observamos o código novamente, veremos que não há nada dentro de <head>, então ele não é pai de ninguém, mas <body> é pai de <h1>, pois o contém, sacou? =)

Sobre as propriedades... Quando falamos de CSS, o próprio nome da linguagem já ajuda: Cascading Stylesheet, ou seja, folhas de estilo em cascata! Isso quer dizer, que as propriedades que você define para um elemento são transmitidas para os elementos filhos também! Isso fica mais fácil de visualizar quando você pensa nas propriedades tipográficas, como tamanho de fonte!

body {
  font-size: 12px;
}

div {
  font-size: 20px;
}

p {
  font-size: 15px;
}

Repare que eu defini três valores de tamanho de fontes distintos... Agora vamos usar o seguinte HTML:

<html>
  <body>
    Primeiro texto!

    <div>Segundo texto!</div>

    <p>Terceiro texto!</p>

    <ul>
      <li>Outro texto...</li>
    </ul>
  </body>
</html>

Se aplicarmos o CSS nesse HTML o que acontecerá?

Primeiro, a fonte padrão será 12px, pois definimos no body, então o "Primeiro texto!" aparecerá com esse tamanho... Se não tivéssemos definido um valor para a div, ela também teria 12px, mas, como definimos, ela terá 20px, sacou?

Além disso, também definimos para o p, então seu tamanho será de 15px!

Mas... E no caso do texto que está dentro da <li>? Como não definimos nada, ele terá o valor herdado do seu elemento pai, no caso, a <ul>... Mas também não definimos um valor para ela, então ela também herdará do seu elemento pai, o body... Ou seja, 12px, sacou? =)

A ideia é essa... Rs. Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui para que possamos ajudá-lo! =)

Abraço e bons estudos,

Fábio

Renan, o elemento pai (vou chamar agora de pai) de outro elemento (vou chamar de filho) é aquele que contém o filho.

Digamos que temos a seguinte estrutura:

<body>
    <main>
        <p></p>
        <img/>
        <section>
            <h1></h1>
            <span></span>
        </section>
    </main>
</body>
  1. O body não tem pai, pois nenhum elemento o contém. Porém, body tem um filho main.
  2. O main é filho do body, e tem como filhos os elementos p, img e section.
  3. h1 não é pai de nenhum elemento, mas é filho de section, que por sua vez é filho de main, sendo main filho de body.

A partir disso, precisamos considerar que alguns (nem todos!) atributos CSS são herdados do pai de um elemento.

Um exemplo é a cor de texto, a propriedade color:. No exemplo acima, se body tivesse color:red, h1teria color:red por padrão também, pois herdou de seu pai section, que herdou de main que por sua vez herdou de body.

Para ver se um atributo é herdado de pai para filho, pode consultar o atributo aqui: clique no atributo e confira se Inherited tem valor yes ou no.

https://developer.mozilla.org/en-US/docs/Web/CSS/Reference

Guai explicou bem melhor que eu =)

Muito claro nas duas respostas!

Muito bom saber também que nem todos os atributos são herdados, porque acho que foi isso que aconteceu comigo e achei que não tinha entendido bem o comportamento e os valores de algumas propriedades, por exemplo quando quero alterar text-decoration nos link que estão dentro de uma < ul > (uma barra de navegação); ou no caso dos floats, etc. Agora não tenho o caso especifico pra poder postar de forma ilustrativa, mas já clareou bastante!

Vou dar uma olhada no link Marcus.