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

Seguindo os passos do instrutor, não alcanço o mesmo resultado no cursos-link

Boa tarde,

Ao repetir os passos do instrutor não consegui alcançar o mesmo resultado. O conteúdo do cursos-link ficava todo sobreposto num mesmo local da página a direita. Observando o arquivo style.css notei que estavam sendo aplicados os códigos de position tanto na classe conteudoPrincipal-cursos-link como na conteudoPrincipal-cursos-link a, sendo estes relative e absolute, respectivamente. Ao remover esses valores, pude alcançar o resultado final do instrutor.

Estou inseguro pois não tenho certeza se meu raciocínio foi correto ou se foi um golpe de sorte. De qualquer forma, gostaria de um posicionamento de alguém da Alura para me certificar se é um engano meu ou se o material de aula necessita correções.

8 respostas

Fala Rafael, tudo bem contigo?

Sou aluno aqui da Alura e também estou fazendo o mesmo curso. Talvez o que eu vou falar aqui possa ti ajudar.

Pelo que entendi, você está desenvolvendo o grid da parte do conteúdo principal onde mostra os cursos. O professor Yuri vai mostrando no vídeo como usar o display flex para desenvolver.

Tem uma propriedade no CSS que se chama float. Ela serve para "levantar" o container que você aplica ela, ou seja, ela vai fazer com que o container sobreponha ou que outros elementos fiquem em cima dele, dependendo da hierarquia de pais e filhos no CSS que você desenvolve.

No que você explicou os elementos ficaram todos concentrados a direita. Caso a classe .conteudoPrincipal-cursos tenha lá no seu CSS a propriedade float: right, isso vai acontecer!

Dá uma olhada depois na documentação do float presente na MDN que lá vai estar bem mais detalhado do que eu comentei.

Bom, pelo que entendi seria isso - rsrs.

Se mesmo assim a dúvida persistir, posta aqui o código que tá bugado pra gente dar uma olhada e ver o que está acontecendo.

Espero poder ter ti ajudado. :)

Oi Dudu, tudo bem sim, e com você??

Primeiramente, obrigado pela tua resposta e solicitude. Respondendo ao teu comentário, infelizmente não há qualquer menção do float em nenhum dos arquivos CSS.

Vou tentar postar os códigos na sequência devido a limitação de caracteres

HTMLL - Arquivo padrão da aula, em que exclui as linhas 52 e 53 pois eram duplicatas da linha 51 (

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Alurinha | Cursos online</title>
    <link rel="stylesheet" href="css/reset.css">
    <link rel="stylesheet" href="css/style.css">
    <link rel="stylesheet" href="css/flexbox.css">
</head>
<body>

    <header class="cabecalhoPrincipal">
        <div class="container">
            <h1 class="cabecalhoPrincipal-titulo">
                <a href="#">Alurinha</a>
            </h1>

            <nav class="cabecalhoPrincipal-nav">
                <a class="cabecalhoPrincipal-nav-link" href="#">Home</a>
                <a class="cabecalhoPrincipal-nav-link" href="#">Cursos</a>
                <a class="cabecalhoPrincipal-nav-link" href="#">Sobre nós</a>
                <a class="cabecalhoPrincipal-nav-link" href="#">Contato</a>
                <a class="cabecalhoPrincipal-nav-link cabecalhoPrincipal-nav-link-app" href="#">Nosso APP</a>
            </nav>
        </div>

    </header>

    <main class="conteudoPrincipal">
        <div class="container">
            <h2 class="subtitulo">Nossos cursos</h2>

            <nav>
                <ul class="conteudoPrincipal-cursos">
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Java</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">PHP</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Ruby on Rails</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">.NET</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Pascal</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Flexbox</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Desenvolvimento Web</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Java Web</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Javascript</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">AngularJS</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">TDD com C</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Redes de computadores</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">MySQL</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">MariaDB</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Postegres</a></li>
                    <li class="conteudoPrincipal-cursos-link"><a href="#">Lógica de programação</a></li>
                </ul>
            </nav>
        </div>

        <section class="videoSobre">
            <div class="container">
                <iframe class="videoSobre-video" width="560" height="315" src="https://www.youtube.com/embed/bIlOsJzBVaY?list=PLh2Y_pKOa4UcF1BYPJR3EIMRi3nWAUxIp" frameborder="0" allowfullscreen></iframe>

                <div class="videoSobre-sobre">
                    <h2 class="videoSobre-sobre-title">Vantagens do Alurinha</h2>
                    <ul class="videoSobre-sobre-list">
                        <li class="videoSobre-sobre-item">Estude onde quiser</li>
                        <li class="videoSobre-sobre-item">Novos cursos todos os meses</li>
                        <li class="videoSobre-sobre-item">Cursos compatíveis com o mercado</li>
                    </ul>
                    <button class="videoSobre-button">Cadastre-se já</button>
                </div>
            </div>
        </section>

    </main>

HTML pt II

    <footer class="rodapePrincipal">
        <div class="container">

            <section class="rodapePrincipal-navMap">
                <h3 class="subtitulo">Mapa de cursos</h3>
                <nav class="rodapePrincipal-navMap-list">

                    <h4 class="navmap-list-title navmap-list-title-backend">Linguagens Backend</h4>
                    <a class="rodapePrincipal-navMap-link" href="#">Java</a>
                    <a class="rodapePrincipal-navMap-link" href="#">PHP</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Pascal</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Scala</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Python</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Java Web</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Assembly</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Lógica de programação</a>

                    <h4 class="navmap-list-title navmap-list-title-frontend">Linguagens Frontend</h4>
                    <a class="rodapePrincipal-navMap-link" href="#">Flexbox</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Desenvolvimento Web</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Javascript</a>
                    <a class="rodapePrincipal-navMap-link" href="#">AngularJS</a>
                    <a class="rodapePrincipal-navMap-link" href="#">ReactJS</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Polymer</a>

                    <h4 class="navmap-list-title navmap-list-title-framework">Frameworks</h4>
                    <a class="rodapePrincipal-navMap-link" href="#">Ruby on Rails</a>
                    <a class="rodapePrincipal-navMap-link" href="#">VRaptor</a>
                    <a class="rodapePrincipal-navMap-link" href="#">SpringMVC</a>
                    <a class="rodapePrincipal-navMap-link" href="#">NodeJS</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Django</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Bootstrap3</a>

                    <h4 class="navmap-list-title navmap-list-title-bancoDeDados">Banco de dados</h4>
                    <a class="rodapePrincipal-navMap-link" href="#">MySQL</a>
                    <a class="rodapePrincipal-navMap-link" href="#">MariaDB</a>
                    <a class="rodapePrincipal-navMap-link" href="#">Postegres</a>

                </nav>
            </section>

        </div>

        <section class="rodapePrincipal-patrocinadores">
            <div class="container">
                <ul class="rodapePrincipal-patrocinadores-list">
                    <li>
                        <a class="rodapePrincipal-patrocinadores-list-link patrocinadores-list-link-alura" href="#">
                            <img src="img/logos/alura.svg" alt="Logo da Alura">
                        </a>
                    </li>
                    <li>
                        <a class="rodapePrincipal-patrocinadores-list-link patrocinadores-list-link-caelum" href="#">
                            <img src="img/logos/caelum.svg" alt="Logo da Caelum">
                        </a>
                    </li>
                    <li>
                        <a class="rodapePrincipal-patrocinadores-list-link patrocinadores-list-link-casaDoCodigo" href="#">
                            <img src="img/logos/cdc.svg" alt="Logo da Casa do Código">
                        </a>
                    </li>
                </ul>
                <form class="rodapePrincipal-contatoForm" action="#">
                    <fieldset>
                        <legend class="rodapePrincipal-contatoForm-legend" for="email-contato">Entre em contato conosco</legend>
                        <div class="rodapePrincipal-contatoForm-fieldset"> 
                            <input class="rodapePrincipal-contatoForm-emailInput" type="email" name="email-contato" id="email-contato">
                            <button class="rodapePrincipal-contatoForm-submit" type="submit">Enviar</button>
                        </div>
                    </fieldset>
                </form>
            </div>
        </section>
    </footer>

</body>
</html>

Este é o meu código do flexbox.css, ao qual foi preenchido seguindo os passos das aulas:

.container {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.cabecalhoPrincipal-nav {
    display: flex;
}

.rodapePrincipal-patrocinadores .container {
    display: flex;
    justify-content: space-between;
}

.rodapePrincipal-patrocinadores-list {
    display: flex;
    justify-content: space-around;
    justify-items: center;
    width: 70%;
    margin-right: 5%;
}

.rodapePrincipal-contatoForm {
    width: 25%;
}

.rodapePrincipal-contatoForm-fieldset {
    display: flex;
}

.rodapePrincipal-navMap-list {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    height: 260px;
}

.conteudoPrincipal-cursos {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
}

.conteudoPrincipal-cursos-link {
    width: 23%;
    margin-bottom: 1%;
}

.conteudoPrincipal-cursos-link:nth-child(4n) {
    margin-right: 0;
}

.conteudoPrincipal-cursos-link:nth-child(4n+1) {
    margin-left: 0;
}

Este é o código style.css, que veio por padrão, sem qualquer alteração:

body {
    background-color: #F2F5F7;
    font-family: 'Open Sans',Arial,sans-serif;
}
.container {
    width: 94%;
    margin: 0 auto;
}
.cabecalhoPrincipal {
    background-color: #FFF;
    padding: 20px 0;
}
.cabecalhoPrincipal-titulo {
    font-weight: bold;
    font-size: 2em;
    margin-bottom: 20px;
}
.cabecalhoPrincipal-titulo a {
    text-decoration: none;
    color: inherit;
}
.cabecalhoPrincipal-nav-link {
    padding: 10px;
    margin-bottom: 10px;
    color: #9799A6;
    background-color: #FFF;
    text-decoration: none;
    transition: .5s;
    display: block;
    border-bottom: 1px solid #9799A6;
}
.conteudoPrincipal {
    margin-top: 20px;
    margin-bottom: 20px;
}
.subtitulo {
    font-weight: bold;
    font-size: 32px;
    margin-bottom: 10px;
    text-align: center;
}
.conteudoPrincipal-cursos-link {
    height: 100px;
    background-color: #FFF;
    text-align: center;
    margin: 1%;
    transition: .3s;
    box-shadow: 2px 2px 2px #CCC;
    position: relative
}
.conteudoPrincipal-cursos-link a {
    text-decoration: none;
    color: #000;
    font-weight: bold;
    display: block;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    position: absolute
}
.conteudoPrincipal-cursos-link:hover {
    box-shadow: 4px 4px 4px #CCC;
}
.conteudoPrincipal-cursos-link a:before {
    content: '';
    display: block;
    width: 50px;
    height: 50px;
    margin: 10px auto;
}
.conteudoPrincipal-cursos-link:nth-child(even) a:before {
    background: url(../img/background1.svg) no-repeat;    
}
.conteudoPrincipal-cursos-link:nth-child(odd) a:before {
    background: url(../img/background2.svg) no-repeat;
}
.rodapePrincipal {
    background-color: #324C64;
    padding-top: 20px;
}
.rodapePrincipal .subtitulo {
    color: #FFF;
}
.rodapePrincipal-navMap-link {
    text-decoration: none;
    color: #FFF;
    margin-top: 10px;
}
.rodapePrincipal-navMap-link {
    font-size: .9em;
}
.navmap-list-title {
    font-weight: 700;
    font-size: 1.3em;
    margin: .9em 0;
    padding-left: .3em;
    padding-top: .2em;
    padding-bottom: .2em;
}
.navmap-list-title + .rodapePrincipal-navMap-link {
    margin-top: 0;
}
.navmap-list-title-bancoDeDados { color: #EC6E5A; border-left: 4px solid #EC6E5A; }
.navmap-list-title-framework { color: #AD85BF; border-left: 4px solid #AD85BF; }
.navmap-list-title-frontend { color: #5EC6F3; border-left: 4px solid #5EC6F3; }
.navmap-list-title-backend { color: #25D285; border-left: 4px solid #25D285; }
.rodapePrincipal-patrocinadores {
    margin-top: 30px;
    background: #F2F5F7;
    padding: 20px 0;
}
.rodapePrincipal-contatoForm {
    margin-top: 20px;
    text-align: center;
}
.rodapePrincipal-contatoForm label[for=email-contato] {
    font-weight: bold;
    font-size: 14px;
    color: #000;
    margin-bottom: 5px;
    display: block;
}
.rodapePrincipal-contatoForm-emailInput {
    border-top-left-radius: 5px;
    border-bottom-left-radius: 5px;
    padding: 10px;
}
.rodapePrincipal-contatoForm-submit {
    border-top-right-radius: 5px;
    border-bottom-right-radius: 5px;
    background-color: #4DBA7A;
    color: #FFF;
    cursor: pointer;
    }
.rodapePrincipal-contatoForm-submit,
.rodapePrincipal-contatoForm-emailInput {
    outline: 0;
    border: 1px solid #4DBA7A;
    box-sizing: border-box;
    font-size: 16px;
}
.videoSobre {
    background-color: #5E9EDC;
    padding: 25px 0;
}
.videoSobre-video {
    max-width: 100%;
}
.videoSobre .container {
    color: #FFF;
}

.videoSobre-sobre-title {
    font-size: 1.2em;
    font-weight: bolder;
}

.videoSobre-sobre {
    font-size: 1.3em;
    line-height: 2;
}

.videoSobre-button {
    border-radius: 8px;
    background-color: #ec6e5a;
    display: block;
    color: #FFF;
    border: none;
    height: 50px;
    font-size: .8em;
    outline: none;
}

.rodapePrincipal-contatoForm-legend {
    margin-bottom: 10px;
}

@media(min-width: 769px) {

    .container {
        width: 85%;    
    }

    .subtitulo {
        text-align: left;
    }

    .cabecalhoPrincipal-nav-link {
        border-radius: 5px;
        border: 1px solid #9799A6;
    }

    .cabecalhoPrincipal-nav-link:hover {
        color: #FFF;
        background-color: #9799A6;
    }

    .cabecalhoPrincipal-titulo {
        margin: 0;
    }

    .cabecalhoPrincipal-nav {
        width: auto;
    }

    .cabecalhoPrincipal-nav-link {
        width: auto;
        margin: 0 0 0 10px;
    }

    .rodapePrincipal-contatoForm {
        margin-top: 0;
        text-align: left;
    }

    .conteudoPrincipal-cursos-link:nth-child(3n) {
        margin-right: 0;
    }

    .conteudoPrincipal-cursos-link:nth-child(3n+1) {
        margin-left: 0;
    }

}

@media(min-width: 1000px) {
    .conteudoPrincipal-cursos-link {
        margin: 1.333%;
    }

    .conteudoPrincipal-cursos-link:nth-child(3n) {
        margin-right: 1.33%;
    }

    .conteudoPrincipal-cursos-link:nth-child(3n+1) {
        margin-left: 1.333%;
    }

    .conteudoPrincipal-cursos-link:nth-child(4n) {
        margin-right: 0;
    }

    .conteudoPrincipal-cursos-link:nth-child(4n+1) {
        margin-left: 0;
    }

    .videoSobre-sobre {
        margin-left: 1.5em;
    }

}
solução!

Joia! Vamos lá!

Eu peguei o seu código CSS e joguei aqui no projeto da minha pasta. Ao abrir o Inspecionar do navegador eu percebi que no início do seu arquivo flexbox.css tem lá a classe .container, logo no começo.

Durante as aulas e até o momento em que eu vi do curso, ainda estou fazendo, o professor tem colocado a classe .container como uma classe modificada para cada classe pai dela, tipo desse jeito, por exemplo:

.cabecalhoPrincipal .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

No seu caso, como você definiu algumas propriedades no começo do código CSS e no decorrer você foi modificando para cada seção da página, ela foi herdando. Acredito que isso tenha dado esse bug de juntar tudo no canto da página.

Inclusive, até o arquivo original que o professor deixou no projeto ele tá usando a classe .container, logo no começo, mas ele não definiu a propriedade display nela. Ele só usa a width e margin, porque ela vai receber outras propriedades que serão diferentes para cada seção da página.

Tenta abrir o Inspecionar do seu navegador, localiza o grid dos cursos e, na parte de estilos do Inspecionar, ache a classe .container e desative o display: flex. Ou então comente lá no arquivo CSS no primeiro bloco de código que é a classe .container a propriedade display: flex. Acho isso que vai tirar as suas dúvidas. ;)

Olha só como ficou o meu com o display: flex desativado na classe .container:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Testa ai e comenta aqui qualquer dúvida.

Olá, muito obrigado pela tua resposta! De fato, ao retirar o display flex tudo se ajeita. Entretanto, ao ler seu código e comparar com o meu, me dei conta de que não declarei a classe .cabecalhoPrincipal com as mesmas propriedades da .container. Ao realizar este ajuste, a página também se adequou conforme deveria.

Confesso que ainda não entendi a razão de ao desativar o display flex, como na sua solução, trouxe um comportamento correto para a sessão de nossos cursos, bem como minha solução de retirar o position das classes .conteudoPrincipal-cursos-link e .conteudoPrincipal-cursos-link a, mas vou me empenhar por aqui em pesquisar para consolidar esses conhecimentos da minha parte.

No mais, te agradeço muito pela contribuição, fico muito feliz de ter colegas assim dividindo a plataforma. Muito obrigado e uma ótima tarde!