15
respostas

Aplicando Responsivo para Produtos

Sei que já houve pergunta parecida, mas não foi respondida e, como já faz tempo, o próprio site sugeriu criar nova demanda.

Não tive problemas para acertar o media da parte principal do site, como o prof ensinou na aula. Porém, no "dever de casa", de adequar também a seção Produtos para telas menores, não consigo.

O HTML está idêntico. O CSS tentei aplicar primeiro os mais "fáceis" - 'header' e 'footer', mas não deu certo. 1o tentei o texto igual ao prof, depois mexi para ver se conseguia: fui alterando width (auto, 100% etc.), position, display, margin, mas não adiantou.

Obs: no meu código, 'caixa' é 'box' e 'footer' é 'rodape'.

Segue a imagem da comparação: https://ibb.co/KD6BmCt

Se precisar de mais código, copio ele todo aqui.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Produtos - Barbearia Alura</title>
    <link rel="stylesheet" href="reset.css">
    <link rel="stylesheet" type="text/css" href="produtos.css">
</head>

<body>
    <header>
        <div class="box">
            <h1><img src="logo.png"></h1>

            <nav>
                <ul>
                    <li><a href="barbearia.html">Home</a></li>
                    <li><a href="produtos.html">Produtos</a></li>
                    <li><a href="contato.html">Contato</a></li>
                </ul>
            </nav>
        </div>
    </header>

CSS:
@media screen and (max-width: 480px){
    .box{
        width: 100%;
        display: flex;
        margin: 0 auto;
    }

    nav{
        position: static;
    }

    .rodape{
        width: auto;
        height: auto;
        margin: 0 auto;
    }
}

15 respostas

Olá Andrezza! Pelo print que você mandou, o problema está na estrutura do conteúdo do main. Não encontrei nenhum problema no header e no footer. Remove dois cards e dá uma olhada em como vai ficar teu header. Caso seja este o problema, tu só precisa encontrar uma forma de colocar um card abaixo do outro em telas menores, para eles se ajustarem.

Qualquer coisa volta aqui que eu te dou uma força, valeu!?

Boa sorte!

Olá Andrezza, tudo bem?

Complementando o que o Henrique disse,

Abri o HTML do curso e percebi que ao importar o css o professor nomeia o arquivo de style.css em

<link rel="stylesheet" href="style.css">

Dentro do head

<head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <title>Barbearia Alura</title>

        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="style.css">
        <link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet">
    </head>

Nos seus arquivos você chegou a chamar o arquivo css como produtos.css? Como observei esta diferença pensei que poderia não estar aplicando devido a isso

<link rel="stylesheet" type="text/css" href="produtos.css">

No head

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Produtos - Barbearia Alura</title>
    <link rel="stylesheet" href="reset.css">
    <link rel="stylesheet" type="text/css" href="produtos.css">
</head>

Até mais

Tive um filho de tanto mexer no CSS, mas acho que consegui: https://ibb.co/C01KmLy

@media screen and (max-width: 768px){
    .box{
        width: auto;
    }

    h1{
        text-align: center;
    }

    nav{
        position: static;
        text-align: center;
    }

    .produtos{
        text-align: center;
        width: auto;
        display: inline-block;
    }

    .produtos li{
        width: auto;
        text-align: center;
    }

Por alguma razão que ainda desconheço, ficou ótimo desde o 768px até menor, como iPhone.

Enfim, vou encarar mais aulas de HTML & CSS para ver se consigo entender melhor. Acabei de ler uns artigos a respeito (como o do Sérgio Lopes: http://sergiolopes.org/responsive-web-design/) e vi que essa questão não é tão simples.

Agradeço a rápida ajuda, @Gabriela e @Henrique. O main tava de boa mesmo, aparentemente. O link tava correto (desde o início eu tava referenciando como produtos.css, não vi necessidade de alterar).

Olá Andrezza e instrutores, aproveitando o embalo da pergunta, ao invés de abrir um novo tópico, aproveito este já que minha dúvida é quase igual. Estou tentando aplicar a responsividade para mobile para as outras telas que ficou, mas também não consegui. o estranho é que a centralização e a posição estática era para funcionar para todas as telas ao meu ver já que no @media screen está aplicado a centralização no h1 e a posição estática no elemento nav. Mas estranhamente só funciona na tela inicial home que é o index, já nos outros que tinha que funcionar também, como produtos e contato não conciona. Também tentei usar o código da Andrezza mas não surtiu efeito, talvez porque eu esteja usando o mesmo arquivo o style.css e lá já tenha um @media screen and (max-width: 480px) e colocar outro com 768px deve não funcionar, não sei. A questão é como fazer para aplicar para as outras telas também a responsividade?

Fala Fagner, coloca pra nós teu código no Codepen e compartilha conosco. O codepen é um app web bem legal, dá uma olhadinha. O melhor é você abrir um novo tópico. Como este já tem resposta, o pessoal geralmente não dá muita atenção. E infelizmente, só com estas infos eu não tenho a solução. Abraço

Olá Henrique tudo bem?

  • Bom eu não abri um novo tópico porque já tinha esse e ia ficar duplicado, então já aproveitei esse com a dúvida praticamente igual a minha.

Eu coloquei no codepen mas o código html apenas o arquivo da parte dos produtos, pois não sei como colocar os outros dois arquivos html, nem as imagens. Segue o link: https://codepen.io/fanig01/pen/OJRewde

Eu coloquei o código da Andrezza no style.css mas não funcionou, mas o estranho é que mesmo retirando a parte do código dela que é o @media screen and (max-width: 768px) e deixando apenas o que já estava que é o de 480px os elementos h1 e nav em que eles estão aplicando teria que valer para todas as páginas, mas não aplicam, aplica apenas para a página home que é o index. Como fazer para aplicar para todos e fazer para funcionar a responsividade para as outras páginas também?

Olá Fagner tudo bem?

Será que seria o caso de colocar um intervalo

Vi um post no Stack Overflow que fala sobre isso:

Aí no caso ficaria ao invés desse :


@media screen and (max-width: 768px) 

Este:

@media (min-width: 481px)  and (max-width: 768px) 

Espero ter ajudado

Até mais

Oi Gabriela, tudo jóia.

Eu tentei dessa forma mas não deu certo não. Ele simplesmente não aplica para a tela de produtos nem de contatos. Não sei o que fazer para que funcione para essas telas tbm.

Fagner tudo bem?

Eu olhei novamente seu codepen, pensei em testarmos o @media em todos pra ver se ele aplica nos produtos quando esta na (max-width: 768px)

Somente para testar, se ele consegue aplicar nesta tela maior, para todos e depois vemos os detalhes q são diferentes no nav?

@media (max-width: 768px)  {
  .caixa, .principal, .conteudo-beneficios, .mapa-conteudo, .video {
    width: auto;
  }

  h1 {
    text-align: center;
  }

  nav {
    position: static;
  }

  .lista-beneficios {
    width: 100%;
  }

  .imagem-beneficios {
    display: block;
    margin: auto;
    width: 90%;
  }

  .produtos {
    text-align: center;
    width: auto;
    display: inline-block;
  }

  .produtos li {
    width: auto;
    text-align: center;
  }
}

Até mais

Oi Gabriela, testei desse modo também colocando todo esse código testando para o produtos, mas não foi, ele não aplicou nada.

Detalhe é que colocando só esse @media screen (max-width: 768px) sem o 'and' ele virou uma bagunça lá no home, já quando coloca como @media screen and (max-width: 768px) ele volta a funcionar na home, mas não aplica nada nos produtos.

Eu vou abrir um novo tópico porque verifiquei que o problema é mais complexo, parece que não é apenas com o código em si. Obrigado pessoal.

Fagner tudo bem?

@Andrezza e @Henrique também

Eu encontrei a solução!

Depois de muito observar o código vi que no html do arquivo produtos.html faltou essa tag que faz toda a diferença na hora de aplicar a Responsividade!

<meta name="viewport" content="width=device-width">

Fagner coloque esta tag no seu head, assim como eu fiz no meu:

<head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width">
        <title>Produtos - Barbearia Alura</title>

        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="style.css" type="text/css">
    </head>
    <body>

No meu arquivo consegui aplicar a formatação teste do @media tranquilamente para os .produtos

Meu CSS ficou desta forma:

@media screen and (max-width: 768px) {
    .caixa {
      width: auto;
    }

    h1 {
      text-align: center;
    }

    nav {
      position: static;
      text-align: center;
    }

    .produtos {
      text-align: center;
      width: auto;
      display: inline-block;
    }

    .produtos li {
      width: auto;
      text-align: center;
    }

}

Qualquer coisa me manda, mas no meu arquivo aplicou a responsividade!

Até mais

Olá Gabriela,

Nooossa, matou essa!!! Caraca...

Era isso mesmo, agora tá aplicando todos os elementos do media para essas outras telas. Era isso, nas aulas passa batido e não é colocado isso nos outros arquivos e eu tbm não lembrei.

Eu cheguei a abrir outro tópico, mas qualquer coisa pode referenciar esse pra fechar. Vlw.

Obrigada Fagner!

Você pode colocar como solucionada no outro tópico?

Que bom que te ajudei!

Posso colocar sim, vlw.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software