Css URL'lerinde göreli / mutlak yollar nasıl kullanılır?


87

Bir üretim ve geliştirme sunucum var. Sorun dizin yapısıdır.

Geliştirme:

  • http://dev.com/subdir/images/image.jpg
  • http://dev.com/subdir/resources/css/style.css

Üretim:

  • http://live.com/images/image.jpg
  • http://live.com/resources/css/style.css

Her iki sunucuda da özellik için aynı yolu kullanan bir style.cssin cssklasörüne nasıl sahip olabilirim background: url? Göreli yollarla kullanabileceğim bir numara var mı?

Yanıtlar:


130

URL, CSS dosyasının konumuna bağlıdır , bu nedenle bu sizin için çalışmalıdır:

url('../../images/image.jpg')

Göreli URL iki klasör geri gider ve ardından imagesklasöre gider - yapı aynı olduğu sürece her iki durumda da çalışmalıdır.

Gönderen https://www.w3.org/TR/CSS1/#url :

Kısmi URL'ler, belgeye göre değil, stil sayfasının kaynağına göre yorumlanır


2 adım geri gitmem gerekirse (cevabı güncellediğim) url (../../ images / image.jpg) bu işe yarar mı?
johnlemon

@anothershrubery - üzgünüm ilk
örneğim kusurluydu

@danip - çalışmalı, ancak iki adımınız yok http://domain.com/css/style.css. Orada ne yapılabileceğinden emin değilim ... DÜZENLEME: - evet, güncellenmiş yapı ile çalışmalı, cevabı güncelledim (sadece bir tane ../görünüyor).
Kobi

9

Şahsen, bunu .htaccess dosyasında düzeltirdim. Buna erişimin olmalı.

CSS URL'nizi şu şekilde tanımlayın:

url(/image_dir/image.png);

.Htacess dosyanıza şunu koyun:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^image_dir/(.*) subdir/images/$1

veya

RewriteRule ^image_dir/(.*) images/$1

siteye bağlı olarak.


2

aynı problemi yaşadım ... css'imi her yayınlamak istediğimde .. bir arama / değiştirme yapmak zorunda kaldım .. ve göreceli yol benim için de işe yaramazdı çünkü göreli yollar geliştirmeden üretime farklıydı.

Sonunda arama / değiştirme yapmaktan bıkmıştım ve dinamik bir css oluşturdum (örneğin www.mysite.com/css.php), aynı şey ama şimdi css'de php sabitlerimi kullanabilirim. birşey gibi

.icon{
  background-image:url('<?php echo BASE_IMAGE;?>icon.png');
}

ve onu dinamik yapmak kötü bir fikir değil çünkü artık dev sunucumdaki orijinal formatı kaybetmeden YUI sıkıştırıcı kullanarak sıkıştırabiliyorum.

İyi şanslar!


13
phpSoru üzerinde etiket yok ! OP hiç php kullanmıyor olabilir.
Bazzz

6
sadece bir örnek .. php, asp, jsp kullanabilirsiniz .. fikir aynı
memnunum

6
statik de olabilir.
jcuenod

3
Ayrıca bu bir CSS dosyasındaysa, <?php **** ?> işlenmeyecek
JD Vangsness
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.