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

Solução alinhamento dos elementos.

Opa, beleza

Então, tive um problema com o alinhamento dos "Produtos" na pagina, o item "Cabelo + Barba" acabava sempre quebrando linha e ficando abaixo dos outros itens, mesmo seguindo a risca o código da aula (exemplo em imagem abaixo, não deixe de reparar que quando seleciono tudo na pagina tem um espaço invisível marcado também). Quebrei a cabeça com isso, revisei o código uma dezena de vezes, percebi que quando na classe .produtos li eu diminuía o "margin: 0 1.5%" para "margin 0 1.48%" o problema era "resolvido", porém não era o bastante, por quê meu código teria de ficar diferente do código do professor? Qual é a pulguinha? Fiz uma varredura no "developer tools" do navegador e encontrei espaços em branco na página, espaços mesmo! Como os espaços entre uma palavra e outra, como se tivesse sido inserido manualmente por mim no código, o que não era o caso! Então descobri no Stack Overflow que: Este espaçamento ocorre porque os elementos com inline-block faz com que espaçamentos de quebra de linhas ou espaços normais afetem a renderização, já que este é o efeito esperado da propriedades que usam inline (como inline-block e inline-table), e uma possível solução (que funcionou bem neste caso em específico) seria no .produtos que é a classe no css que corresponde ao elemento < ul > no html, adicionar o font-size como zero, o que tornaria o caractere de espaço com tamanho zero e não afetaria o espaço disponível para a lista de produtos ficar perfeitamente alinhada na pagina. O trecho de código: codigo corrigido com a adição do "font-size: 0; o problema solucionado agora a questão que fica pra mim é: Porque com o professor isso não aconteceu e provavelmente com a maioria dos alunos também não, ja que não vi nada nos forums? Bom, vai ficar esse mistério, e se alguem aí tiver passado por isso, ta aqui minha contribuição. Abç.

6 respostas

testei no meu e todas as letras sumiram hahahhaha

.produtos {
    width: 940px;
    margin: 0 auto;
    padding: 5px 0;
}

.produtos li {
    display: inline-block;
    width: 30%;
    margin: 0 1.5%;
    text-align:center;
}

ESSE é o css que consegui deixar o meu alinhado

É que no caso eu quis seguir ao máximo o código do professor, deixar tudo nas mesmas medidas, e o atributo de fonte size zero dentro de .produtos que se refere à tag < ul > não deveria afetar o conteúdo que está inserido dentro da tag < l i >, mas isso é o que eu acho . Meu css neste trecho de código está assim:

.produtos {
    font-size: 0;
    width: 940px;
    margin: 0 auto;
    padding: 50px 0;
}

.produtos li {
    display: inline-block;
    text-align: center;
    width: 30%;
    vertical-align: top;
    margin: 0 1.5%;
    padding: 30px 20px;
    box-sizing: border-box;
    border: 2px solid #000000;
    border-radius: 10px;
}

dessa forma consegui deixar igual ao código do professor, só tendo que adicionar o font-size: 0 pra me livrar do espaço em branco que foi causado pela tag < ul >. É bom quando acontece um comportamento inesperado mesmo seguindo o código do professor porque abre janelas para novos pedaços de conhecimento. Abraço tmj

Fiz esta aula e meu codigo ficou igual ao do professor. Nao precesei colocar esse font size:0. Sera que vc nao se esqueceu de adicionar o css reset? ele tira todos as configurações padrao da página

Tenha essa formatção tira meu

todo e cola esse.
  • Cabelo

    Na tesoura ou máquina, como o cliente preferir

    R$ 25,00

  • Barba

    Corte e desenho profissional de barba

    R$ 18,00

  • Cabelo + Barba

    Pacote completo de cabelo e barba

    R$ 35,00

solução!

Não não mateus, eu revisei por um tempão o código e tava tudo igual ao do professor. A questão é que por algum motivo surgiu um caractere em branco entre os itens da minha ul, que diminuiu a área disponível para os itens ficaram centralizados lado a lado na tela, repare na primeira imagem que tem algo invisivel marcado em azul pela seleção do mouse, entre os itens cabelo e barba. Aquilo ali me tirou espaço, pelas pesquisas que fiz aquilo ali acontece porque é uma característica de elementos inline-block, e da pra resolver com font-size zero ou usando float: ; ou clear: ; com o pseudo-elemento ::after. um link sobre isso no stackOverflow https://pt.stackoverflow.com/questions/172075/remover-espa%C3%A7o-entre-item-de-lista-html