3
respostas

[Dúvida] Flex-Box e posicionamento

Dúvida sobre Flex-box e posicionamento de elementos no meu site (projeto para estudo)

Olá a todos! Ente um curso e outro, estou desenvolvendo um projeto pessoal com HTML, CSS e Flex-Box. Para contexto, esse projeto visa apenas colocar em prática o que aprendi nos cursos de programação iniciante, então é algo bem simples e apenas para praticar e compreender melhor o uso das funções que aprendi. Esse site que estou criando, é para organizar de maneira básica filmes/séries/animes que estou assistindo com a minha noiva. Cada um vai ter o seu próprio perfil. Até o momento, desenvolvi a página inicial e um pouco da página do meu perfil. E está assim:

Index da página do "gabs dri flix" com um título h1 "Quem vai escolher o filme hoje?", embaixo 2 imagens com 1 pessoa cada. Abaixo delas está escrito "Gabs" e "Dri", respectivamente

O destaque branco em volta da imagem e texto é causado pela função "hover" que coloquei.

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

Minha dúvida é a seguinte: No momento em que me encontro, estou organizando a primeira seção de filmes e até agora coloquei 2. Para posicionar eles, estou usando flex-box conforme esse código que desenvolvi:

HTML

<main class="profile__main">
        <section class="profile__main__watching">
            <h1 class="profile__main__watching__title">ASSISTINDO NO MOMENTO</h1>
            <div class="profile__main__watching__content">
                <a><img class="profile__main__watching__image" src="./assets/films/thebear.png" alt="capa da série The bear"><p class="profile__main__watching__image__paragraph">The Bear</p></a>
                <a><img class="profile__main__watching__image" src="./assets/films/onepiece.png" alt="capa do anime One Piece"><p class="profile__main__watching__image__paragraph"><p>One Piece</p></a>
            </div>
            <h1 class="profile__main__watching__title">FILMES PARA ASSISTIR</h1>
        </section>
    </main>

CSS

.profile__main {
    display: flex;
    align-items: center;
    padding-left: 5%;
    padding-right: 5%;
    margin-top: 2%;
}

.profile__main__watching {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.profile__main__watching__title {
    font-family: var(--primary-font);
    font-weight: 700;
    font-size: 1.5rem;
    color: var(--sextenary-color);
}

.profile__main__watching__content {
    display: flex;
    text-align: center;
    gap: 30px;
}

.profile__main__watching__image {
    width: 12rem;
}

Eu quero posicionar as minhas imagens sem usar a tag "< a >", porém quando tiro ela, isso acontece: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

De fato minhas imagens não são âncoras, pois elas não vão ser clicáveis, diferente da primeira página que mostrei com as 2 fotos de perfil. Eu queria entender o que posso fazer para melhorar os meus códigos e posicionar o texto para que ele fique embaixo da imagem. A única maneira que funciona é colocar a tag "< a >", assim que faço isso e salvo, os textos automaticamente já voltam a ficar corretamente posicionados da forma que eu quero. Já pensei em fazer essa descrição de outras maneiras, mas fiquei com isso na cabeça e quero descobrir se há alguma solução (espero que nada muito complexa) para o meu problema.

Se alguém quiser me ajudar, ficarei muito grato! Apesar de não saber muito como usar o GitHub, coloquei ele lá caso queiram acessa-lo.

https://github.com/eprahoje/DriGabsFlix

Obrigado pela atenção! Se faltou algo que gostariam que eu explicasse, deixem aqui nas respostas, por favor. Tenham uma ótima semana :))

3 respostas

Olá Gabriel, tudo bem?

Agradeço por compartilhar o código, isso nos ajuda a entender melhor o problema, e com ele em mãos posso dizer que está ficando incrível, adorei a proposta e aparência do site, ótimo!

Uma solução simples para isso seria usar a tag "<div>" para agrupar a imagem e o texto. Isso fará com que a imagem e o texto sejam tratados como um único bloco, semelhante ao que acontece quando você usa a tag "<a>".

Aqui está um exemplo de como você pode fazer isso:

HTML

<main class="profile__main">
    <section class="profile__main__watching">
        <h1 class="profile__main__watching__title">ASSISTINDO NO MOMENTO</h1>
        <div class="profile__main__watching__content">
            <div>
                <img class="profile__main__watching__image" src="./assets/films/thebear.png" alt="capa da série The bear">
                <p class="profile__main__watching__image__paragraph">The Bear</p>
            </div>
            <div>
                <img class="profile__main__watching__image" src="./assets/films/onepiece.png" alt="capa do anime One Piece">
                <p class="profile__main__watching__image__paragraph">One Piece</p>
            </div>
        </div>
        <h1 class="profile__main__watching__title">FILMES PARA ASSISTIR</h1>
    </section>
</main>

Isso deve resolver o seu problema.

Novamente quero lhe parabenizar pelo projeto, muito bacana mesmo!

Espero ter ajudado e reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá Victor! Tudo bem? Obrigado pela resposta e proposta de solução do problema :)) Testei tanto essa quanto a proposta que aprendi no curso de HTML e CSS da instrutora Monica, usando as tags "< ul >" e "< li >" e deu super certo! Decidi reescrever essa parte para melhor fixação das ideias que tive lendo as possíveis soluções para esta dúvida que tive.

Já vou reservar um tempo para abrir outro questionamento aqui no fórum referente a umas funções que gostaria de aplicar nessas imagens

Muito obrigado! Segue o código com a solução:

HTML

<main class="profile__main">
        <section class="profile__main__watching">
            <h1 class="profile__main__watching__title">ASSISTINDO NO MOMENTO</h1>
            <ul class="profile__main__watching__container">
                <li class="profile__main__watching__list"><img class="profile__main__watching__image" alt="Capa do filme The Bear" src="./assets/films/thebear.png"><p class="profile__main__watching__list__paragraph">The Bear</p></li>      
                <li class="profile__main__watching__list"><img class="profile__main__watching__image" alt="Capa do anime One Piece" src="./assets/films/onepiece.png"><p class="profile__main__watching__list__paragraph">One Piece</p></li>           
            </ul>
            <h1 class="profile__main__watching__title">FILMES PARA ASSISTIR</h1>
        </section>
    </main>

CSS

.profile__main {
    display: flex;
    align-items: center;
    padding-left: 5%;
    padding-right: 5%;
    margin-top: 2%;
}

.profile__main__watching {
    display: flex;
    flex-direction: column;
    gap: 30px;
}

.profile__main__watching__title {
    font-family: var(--primary-font);
    font-weight: 700;
    font-size: 1.5rem;
    color: var(--sextenary-color);
}

.profile__main__watching__container {
    display: flex;
    text-align: center;
    gap: 20px;
}

.profile__main__watching__list {
    list-style-type: none;
}

.profile__main__watching__image {
    width: 12rem;
}

.profile__main__watching__list__paragraph {
    font-family: var(--primary-font);
    font-size: 1rem;
    color: black;
}

Página de perfil do Gabs com a capa da série "The Bear" e do anime "One Piece"

Oi Gabriel!

Essa solução também é ótima. É ótimo ver você evoluindo e descobrindo novas maneiras de fazer algo. Isso é o poder dos estudos e da sua dedicação ao mesmo. Continue assim. Parabéns!

Desejo muito sucesso no seu projeto, tenho certeza vai ficar muito legal!

Em caso de dúvidas, sinta-se à vontade para compartilhar conosco. Ficaremos felizes em ajudar. Até mais!