Como subir um nível no caminho src de uma URL em HTML?


101

Estou armazenando folhas de estilo em {root} / styles enquanto imagens em {root} / images para um site. Como forneço o caminho nas folhas de estilo para procurar no diretório de imagens as imagens especificadas?

por exemplo em background-image: url('/images/bg.png');

Respostas:


184

Use ..para indicar o diretório pai:

background-image: url('../images/bg.png');

Eu li isso em outro lugar também - mas não funciona! (pelo menos no Chrome)
aateeque

27
É verdade. No entanto, observe que a localização é relativa à localização do arquivo CSS, não ao documento que incorpora o arquivo CSS.
ThiefMaster

1
@ThiefMaster Deve ser se estivermos usando apenas CSS inline
1000 Gbps,

57

Aqui está tudo o que você precisa saber sobre caminhos de arquivo relativos:

  • Começando com / retorna ao diretório raiz e começa aí

  • Começar com ../ move um diretório para trás e começa aí

  • Começar com ../../ move dois diretórios para trás e começa aí (e assim por diante ...)

  • Para avançar , basta começar com o primeiro subdiretório e continuar avançando.

Clique aqui para mais detalhes!


52

Use ../:

background-image: url('../images/bg.png');

Você pode usar isso quantas vezes quiser, por exemplo, ../../images/ou mesmo em posições diferentes, por exemplo ../images/../images/../images/(o mesmo que é ../images/claro)


9

No Chrome, quando você carrega um site de algum servidor HTTP, ambos os caminhos absolutos (por exemplo /images/sth.png) e os caminhos relativos para algum diretório de nível superior (por exemplo ../images/sth.png) funcionam.

Mas!

Quando você carrega (no Chrome!) Um documento HTML do sistema de arquivos local, você não pode acessar os diretórios acima do diretório atual. ../something/something.sthOu seja, você não pode acessar e mudar o caminho relativo para absoluto ou qualquer outra coisa não ajudará.


1
Ao verificar novamente, posso relatar que os caminhos relativos do sistema de arquivos local usando ../funcionam bem - ou pelo menos funcionam bem neste caso específico!
aateeque

1
Ele funciona em Linux e Windows, não em Mac (minha experiência)
gabn88

Os links não contam aqui, pois não há verificação da mesma origem para eles. Além disso, esta resposta tem 6 anos, então os navegadores podem ter mudado muito.
jaboja

1
Estou apenas confirmando para quem está vendo a resposta
Ajay

0

Suponha que você tenha a seguinte estrutura de arquivos:

-css
  --index.css
-images
  --image1.png
  --image2.png
  --image3.png

No CSS você pode acessar image1, por exemplo, usando a linha ../images/image1.png.

NOTA : Se você estiver usando o Chrome, ele pode não funcionar e você receberá uma mensagem de erro informando que o arquivo não foi encontrado. Eu tive o mesmo problema, então eu apaguei todo o histórico do cache do Chrome e funcionou.


0

Se você armazena folhas de estilo / imagens em uma pasta para que vários sites possam usá-los, ou se deseja reutilizar os mesmos arquivos em outro site no mesmo servidor, descobri que meu navegador / Apache não permite que eu vá para qualquer pasta pai acima do URL raiz do site. Isso parece óbvio por razões de segurança - não se deve conseguir navegar no servidor em qualquer lugar que não seja as pastas da web especificadas.

Por exemplo. não funciona: www.mywebsite.com/../images

Como solução alternativa, eu uso links simbólicos:

Vá para o diretório de www.mywebsite.com Execute o comando ln -s ../images images

Agora www.mywebsite.com/images irá apontar para www.mywebsite.com/../images

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.