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

Utilizar tag header ao invés de h1 para o cabeçalho. Problema com float

Eu fiz o exercício conforme proposto, porém depois quis dar mais sentido para o meu html e decidi tirar o h1 de dentro do main e colocar fora dentro de uma tag header . Porém quando aplico os floats, a imagem e o menu de navegação não conseguem ficar lado a lado com o header. O que eu fiz de errado?

html

<!DOCTYPE html>
<html>
  <head>
    <title>Biografia: João da Silva</title>
    <meta charset="utf-8">
    <link rel="icon" href="favicon.png">
    <link rel="stylesheet" type="text/css" href="reset.css">
    <link rel="stylesheet" type="text/css" href="site.css">
    <link href="https://fonts.googleapis.com/css?family=Crimson+Text:400,400italic,600|Open+Sans+Condensed:700" rel="stylesheet">
  </head>
  <body>
    <header class="cabecalho">
      <h1>Sobre mim</h1>
    </header>
    <main>
      <div class="conteudo">
        <p>Moro em São Paulo mas atendo clientes do mundo todo. Sou conhecido por fazer produtos de <em>qualidade</em>, durabilidade e que agregam valor para meus clientes.</p>

        <p>Trabalho usando a web como plataforma, ou seja, respiro HTML5, CSS3 e JavaScript (ou melhor: ECMASCript). Crio sites para todos, seguindo as principais diretivas de acessibilidade, responsividade e web semântica, sem descuidar da <strong>qualidade de código</strong>.</p>

        <h2>Como trabalho</h2>

        <blockquote class="recomendacoes fiat">
          <p>João é o melhor desenvolvedor front-end com quem já trabalhei. Muito eficiente e muito capaz. Recomendo sem dúvidas!</p>
          <cite>José Souza, Fiat</cite>
        </blockquote>

        <p>Satisfazer meus clientes é <em>prioridade</em>. Para isso, garanto um processo de desenvolvimento altamente interativo, baseado em feedback contínuo. Não trabalho com escopo fechado: o cliente é que decide quando o produto está pronto.</p>

        <p>Também não trabalho com prazos fechados: qualidade é <strong>importante demais</strong> para ser sacrificada.</p>

        <h2>Experiência</h2>

        <blockquote class="recomendacoes petrobras">
          <p>João domina as tecnologias como ninguém. Eu apresentava um problema, ele tinha na ponta da língua a solução mais adequada com as tecnologias mais recentes.</p>
          <cite>Manoel Santos, Petrobrás</cite>
        </blockquote>

        <p>Já desenvolvi projetos para grandes empresas como <a href="http://www.bmw.com">BMW</a>, <a href="http://www.uol.com.br">UOL</a> e <a href="http://www.ibm.com">IBM</a>. Neles, o foco principal era <em>entregar uma experiência imersiva</em> e impactante para o usuário final sem descuidar do desempenho e da acessibilidade da página.</p>

        <p>Também já fui contratado para transformar grandes portais, como <a href="http://www.terra.com.br">Terra</a> e <a href="http://g1.globo.com">G1</a>, em páginas responsivas. Fui responsável por renovar o layout, reorganizar o conteúdo e re-escrever o código de forma mais <strong>reaproveitável</strong>.</p>

        <h2>Comunidade</h2>

        <p>Procuro repassar meu conhecimento para a comunidade. Para isso, já dei <a href="portifolio.html">diversas palestras</a> e mantenho um <a href="blog.html">blog</a>.</p>
      </div>
    </main>
    <img src="eu.jpg" alt="Foto do João da Silva">
    <aside class="navegacao-site">
      <h1>João da Silva</h1>
      <nav>
        <ul>
          <li><a href="index.html">Home</a></li>
          <li><a href="portifolio.html">Portifólio</a></li>
          <li><a href="bio.html">Sobre mim</a></li>
          <li><a href="blog.html">Blog</a></li>
          <li><a href="contato.html">Contato</a></li>
        </ul>
        <ul class="icones-sociais">
          <li>
            <a href="https://github.com/dgois" class="github">
              Github
            </a>
          </li>
          <li>
            <a href="https://twitter.com/denisdwtg" class="twitter">
              Twitter
            </a>
          </li>
          <li>
            <a href="https://br.linkedin.com/in/denisgois" class="linkedin">
              Linkedin
            </a>
          </li>
        </ul>
      </nav>
    </aside>
    <footer class="footer">
      &copy; João da Silva 2014
    </footer>
  </body>
</html>

css

body {
  font-family: "Crimson Text", "Times New Roman", serif;
  background-color: #F2FFFC;
  font-size: 120%;
  line-height: 1.5;
}

h1, h2 {
  font-family: "Open Sans Condensed", "Arial", sans-serif;
}

p {
  text-align: justify;
  margin: 20px 0;
}

strong {
  font-weight: bold;
}

em {
  font-style: italic;
}

h2 {
  font-size: 30px;
  clear: both;
}

.cabecalho {
  text-align: center;
  color: #FFF;
  background-color: #851944;
  padding: 25px;
  border-bottom: 10px solid #000;
  margin: 0px;
  font-size: 60px;
  text-transform: uppercase;
}

.conteudo {
  width: 720px;
  margin: auto;
  padding: 30px 0;
}

.conteudo a {
  color: #851944;
}

.recomendacoes {
  background-color: #D9E5E3;
  border: 10px solid #C2CCCA;
  margin: 0px;
  width: 250px;
  box-sizing: border-box;
  margin: 20px 40px;
}

.fiat {
  float: right;
}

.petrobras {
  float: left;
}

blockquote, .navegacao-site, footer {
    padding: 20px;
}

.navegacao-site {
  background-color: #3C1D3D;
  color: #F2FFFC;
  font-family: "Open Sans Condensed", sans-serif;
  text-align: center;
  text-transform: lowercase;
}

.navegacao-site a {
  color: inherit; 
  font-family: inherit;
}

.navegacao-site h1 {
  font-size: 30px;
  margin-bottom: 25px;
}

.icones-sociais li {
  display: inline-block;
}

.icones-sociais a {
  width: 40px;
  height: 40px;
  display: block;
  text-indent: -9999px;
}

.github {
  background-image: url(github.png);
}

.twitter {
  background-image: url(twitter.png);
}

.linkedin {
  background-image: url(linkedin.png);
}

.footer {
  background-color: #000;
  color: #F2FFFC;
} 

article {
  padding-bottom: 30px;
  border-bottom: 1px solid #CCC;
  margin-bottom: 30px;
}

.leia-mais {
  font-size: 24px;
  padding: 8px;
  margin: 16px;
  display: block;
  background-color: #E6E7E8;
  text-align: center;
}

cite {
  font-style: italic;
  float:right;
}

img, aside {
  float: right;
  width: 15%;
}

aside {
  clear: right;
  box-sizing: border-box;
}

main, header{
  float: left;
  width: 85%;
}

header {
  box-sizing: border-box;
  display: inline;
}

.footer {
  clear: both;
}
4 respostas

Olá, Denis! Tudo certo, cara? =)

Quando você for aplicar o float, você vai ter que considerar a ordem das coisas... No caso, sua <img> e <aside> devem estar logo após o <header>, assim:

<body>
  <header>
     <h1>...</h1>
  </header>
  <img ...>
  <aside>
    <nav>
      <!-- Restante do código -->
    </nav>
  </aside>
</body>

E nesse caso, você vai ver que quase funciona. O problema agora é o tamanho da imagem e do menu lateral. Recomendo que você faça um teste mudando só isso para ver se você conseguirá entender o resultado final...

Depois disso, basta mudar o tamanho da fonte ou da imagem... Uma solução é alterar o font-size do .titulo-principal de 60px para 69px (cheguei nesse número por tentativa e erro, para ser sincero).

Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui para podermos ajudá-lo! =)

Abraço e bons estudos,

Fábio

Obrigado por responder tão prontamente Fábio! A minha dúvida está mais relacionada, eu acho, em por que a imagem não conseguiu assumir aquele espaço vazio deixado pelo header e pelo main, é como se a imagem ficasse alinhada com o elemento main.

Tentei separar um pouco as coisas do exercício e simular de outra forma o mesmo comportamento, veja por exemplo:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <style type="text/css">
  .square1 {
    width: 30px;
    height: 30px;
    padding: 30px;
    background-color: red;
    display: block;
    float: left;
  }

  .square2 {
    width: 30px;
    height: 30px;
    padding: 30px;
    background-color: blue;
    display: block;
    float: left;
    clear: left;
  }

  .square3 {
    padding: 30px;
    width: 30px;
    height: 30px;
    background-color: green;
    display: block;
    float: right;
  }

  .square4 {
    padding: 30px;
    width: 30px;
    height: 30px;
    background-color: orange;
    display: block;
    float: right;
    clear: right;
  }

  </style>
</head>
<body>
  <header>
      <span class="square1">1</span>
      <span class="square2">2</span>
      <span class="square3">3</span>
      <span class="square4">4</span>
  </header>
</body>
</html>

Nesse caso acima, por que o square3 não conseguiu ocupar o espaço deixado pelo square1, já que o float do square1 e 2 está a esquerda e o float do square 3 e 4 está a direita.

Aparentemente o square3 está alinhado com o square2.

solução!

Denis,

Agora entendi melhor sua dúvida! =)

O terceiro quadrado não está ocupando a primeira linha, do primeiro quadrado, devido à ordem dos elementos no HTML. O fluxo desses elementos só pode ser alterado por elementos que vêm imediatamente antes deles no HTML... Ou seja, o quadrado 2 só pode ser alterado pelo primeiro. O terceiro só pode ser alterado pelo segundo, e assim por diante.

Quando você colocou o clear: left no segundo quadrado, você impediu ele de ficar na mesma linha do primeiro. E, ao fazer isso, você impediu que qualquer outro que venha em sequência possa estar lá, entendeu?

É por isso que eu havia sugerido fazer a mudança na ordem do código original, ou seja, jogar a <img ...> e o <aside>...</aside> para antes do <main>, sacou? =)

Espero ter ajudado,

Fábio

Muito obrigado Fábio, ajudou sim!