Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Dúvida!

Bom dia!

As imagens só apareceram depois de tirar o '/' por exemplo "banner.setAttribute('src', 'imagens/descanso-curto.png')" ?

const html = document.querySelector('html')
const focoBt = document.querySelector('.app__card-button--foco')
const curtoBt = document.querySelector('.app__card-button--curto')
const longoBt = document.querySelector('.app__card-button--longo')
const banner = document.querySelector('.app__image')

focoBt.addEventListener('click', () => {
    html.setAttribute('data-contexto', 'foco')
    banner.setAttribute('src', 'imagens/foco.png')   
})

curtoBt.addEventListener('click', () => {
    html.setAttribute('data-contexto', 'descanso-curto')
    banner.setAttribute('src', 'imagens/descanso-curto.png')
})

longoBt.addEventListener('click', () => {
    html.setAttribute('data-contexto', 'descanso-longo')
    banner.setAttribute('src', 'imagens/descanso-longo.png')
})
1 resposta

Oi, Girlan. Tudo bem com você?

A barra no início do caminho da imagem envolve diretamente como o navegador resolve caminhos relativos e absolutos no projeto. Quando você insere a barra / na frente, o navegador tenta buscar o arquivo a partir do diretório raiz do servidor web local. Sem essa barra inicial, a busca é feita como um caminho relativo, considerando a pasta onde o próprio documento HTML está rodando no momento.

Essa diferença é super relevante em projetos web, pois a estrutura de pastas e a forma como o servidor estático renderiza os arquivos mudam a resolução do src. Se o arquivo index.html e a pasta imagens estão no mesmo nível da diretório, usar imagens/nome-da-imagem.png ou ./imagens/nome-da-imagem.png garante que a navegação encontre a mídia sem tentar acessar a raiz absoluta do sistema de arquivos.

Por exemplo, se a sua aplicação estivesse hospedada dentro de um repositório como meu-usuario.github.io/projeto-fokus/, a busca com /imagens/foco.png tentaria encontrar a imagem em meu-usuario.github.io/imagens/foco.png, resultando num erro de carregamento (erro 404). Já o caminho relativo imagens/foco.png busca corretamente em meu-usuario.github.io/projeto-fokus/imagens/foco.png.

Você já reparou em alguma outra situação do seu dia a dia onde o caminho de um arquivo precisou ser ajustado dependendo de onde o projeto é executado?

Parabéns pelo excelente trabalho e por compartilhar o seu código aqui. O fórum está sempre à disposição para tirar qualquer dúvida.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!