Url () değerini belirtmek gerçekten gerekli mi?


235

Stil sayfalarımda aşağıdakilerden hangisini kullanmalıyım?

/* Example #1: */ background-image: url(image.png);
/* Example #2: */ background-image: url("image.png");
/* Example #3: */ background-image: url('image.png');

W3C doğru yolu neyi belirtir ?


Yanıtlar:


243

W3C, tekliflerin isteğe bağlı olduğunu, üç yolunuzun da yasal olduğunu söylüyor.

Açılış ve kapanış teklifi sadece aynı karakter olmalıdır.

URL'nizde özel karakterler varsa, tırnak işareti kullanmalı veya karakterlerden kaçmalısınız (aşağıya bakın).

Sözdizimi ve temel veri türleri

Bir URI değerinin biçimi 'url (' ve ardından isteğe bağlı beyaz boşluk, ardından isteğe bağlı tek tırnak (') veya çift tırnak (") karakteri ve ardından URI'nin kendisidir, ardından isteğe bağlı tek tırnak (') veya çift tırnaktır (") karakterini, ardından isteğe bağlı beyaz alanı ve ardından ')' karakterini gösterir. İki tırnak karakteri aynı olmalıdır.

Kaçan özel karakterler:

Parantezler, boşluk karakterleri, tek tırnak işaretleri (') ve çift tırnak işaretleri (") gibi alıntılanmamış bir URI'da görünen bazı karakterlerin ters eğik çizgiden çıkması gerekir, böylece elde edilen URI değeri bir URI belirteci olur:' \ (', '\').


9
Bazı eski tarayıcılarda alıntılanmış URL'lerle ilgili IE Mac sorunları olabilir.
mveerman

5
Bic72'nin söylediklerine ek olarak, bazı eski tarayıcılar da CSS'de alıntılanmış URL'lerle karşılaştıklarında ikili istekler yaparlar, önce "myfile.png" sonra myfile.png isterler - bu yüzden bunları kullanmaktan kaçınmamın nedeni.
Pebbl

Bağlandığınız özellik, ikinci alıntıyı yayınladığınızdan beri yeniden yazılmış gibi görünüyor. Şimdi virgüllerin kaçması gerekmiyor.
Ben

@pebbl - Haklısınız ve eski tarayıcılar Mac'te Chrome'un en yeni sürümünü içerir.
Daniel Beardsley

7
CSS 3'ün son Editör'ün taslağı (Mayıs 2015) artık alıntılara izin vermiyor gibi görünüyor: mevcut aday tavsiyesi (Şubat 2014) şunları yaparken dev.w3.org/csswg/css-syntax ( url-tokendemiryolu şemasını kontrol edin ): w3.org/TR / css-syntax-3 Sanırım tırnak yerine kaçış dizisi kullanımını teşvik etmek istiyorlar
Simon Mourier

34

En yeni standart tarafından önerildiği ve daha az kenar durumu olduğu için tırnak işaretleri daha iyi kullanın.

En yeni Editörün Taslak CSS Değerleri ve Modülleri Seviye 3'e göre (18 Aralık 2015)

URL, bir kaynağa işaretçi ve ile gösterilen işlevsel bir gösterimdir <url>. A sözdizimi <url>:
<url> = url( <string> <url-modifier>* )

Tırnaksız sürüm yalnızca eski nedenlerle desteklenir ve özel ayrıştırma kurallarına (kaçış dizileri vb.) İhtiyaç duyar, bu nedenle hantal ve url değiştiricileri desteklemez.

Bu, url(...)sözdiziminin bir dize ve bir url değiştiricisini parametre olarak alan işlevsel bir gösterim olduğu varsayılır. (Bir dize belirteci üreten) alıntı gösterimini kullanmak daha standart uyumlu olacaktır ve daha az karmaşıklık getirecektir.

@ SimonMourier'in en iyi cevaptaki yorumu yanlış, çünkü yanlış spesifikasyonu aradı. url-tokenTürü sadece, eski özel ayrıştırma kuralları için tanıtıldı yüzden tırnak ile ilgisi yoktur neden en söyledi.


"Alıntı yapılmayan sürüm yalnızca eski nedenlerle desteklenir [..]" Kaynak?
Semmel

5
drafts.csswg.org/css-values-3/#ref-for-url-value-7 "Not: Eski tırnak işareti-daha az <url> sözdizimi için özel ayrıştırma kuralları şu anlama gelir…"
sodatea

Ben okudum ama bu kısmı kaçırmış olmalı - teşekkürler! Her iki durumda da - çok değerli tavsiye. Imho bu kabul edilen cevap olmalı!
Semmel

Başvurulan belgenin 2020 sürümü artık 'alıntılanmamış sürüm yalnızca eski nedenlerle desteklenmektedir' ifadesinden bahsetmiyor.
Jahmic

11

W3 CSS 2.1 spesifikasyonunun söyledikleri:

Bir URI değerinin biçimi 'url (' ve ardından isteğe bağlı beyaz boşluk, ardından isteğe bağlı tek tırnak (') veya çift tırnak (") karakteri ve ardından URI'nin kendisidir, ardından isteğe bağlı tek tırnak (') veya çift tırnaktır (") karakterini, ardından isteğe bağlı beyaz alanı ve ardından ')' karakterini gösterir. İki tırnak karakteri aynı olmalıdır.

Kaynak: http://www.w3.org/TR/CSS21/syndata.html#uri

Bu nedenle, önerdiğiniz 3 örneğin hepsi doğrudur, ancak seçeceğim ilk örnektir, çünkü daha az karakter kullanırsınız ve sonuç olarak ortaya çıkan CSS dosyası daha küçük olur, bu da daha az bant genişliği kullanımına neden olur.

Bu önemli değil gibi görünebilir, ancak yüksek trafikli web siteleri bant genişliğini ve çok sayıda css dosyasını kaydetmeyi tercih eder ve içlerindeki URL referansları, dosyayı daha küçük yapan seçeneği seçmek mantıklıdır ... Avantajı olmadığı için bile değil .

Not: URL'ler parantez, virgül, boşluk karakterleri, tek tırnak veya çift tırnak içeriyorsa karakterlerden kaçmanız gerekebilir. Bu, URL'yi yalnızca tırnak işareti kullanmaktan daha uzun sürebilir (daha az kaçış gerektirir). Bu nedenle, yalnızca kaçan ek yükü URL'yi yalnızca tırnak işareti kullanmaktan daha uzun yapmadığında (ki bu çok nadirdir), tırnak içermeyen URL'lerle bir Css dosyası sunmak isteyebilirsiniz.

Bununla birlikte, herhangi bir insanın bu uç durumları bile dikkate almasını beklemezdim ... Bir Css optimizer sizin için bunu halledecektir ... (ama aslında bir css optimizer yazıyorsanız tüm bunları bilmeniz gerekir: P)


5
Bunun neden aşağı oy aldığını bilmiyorum; yüksek trafikli bir site için, bunun gibi fikirler bir yıl boyunca büyük bir fark yaratır.
Joisey Mike

7
Really Gerçekten şüpheliyim. CSS başına kaç url var? Çok fazla değil. Ve her birinde sadece iki bayt (ascii veya utf-8'de) ayırdınız. Ayrıca, URL'yi aslında daha uzun hale getirebilirsiniz, çünkü ters eğik çizgi kullanmanız gerekebilir. Web'in boyutunu azaltmanın çok daha iyi yolları var ...
kralyk

1
Açıkçası bu bir tasarruf değil, ama Andrea ve Joisey hala doğru. Aşırı bir örnek olarak, Google'ın biraz bant genişliği kaydetmek için ana sayfalarından yalnızca bir bayt kaldırması gerekir;)
Pebbl

2
@kralyk ... Bu nedenle yapılacak en iyi şey, ihtiyaç duyulmadığında tırnak işareti kullanmak değildir ... Bu nedenle ikiden fazla parantez, virgül, boşluk karakteri, tek tırnak veya çift tırnak içeren bir URL'niz olduğunda tırnak işareti kullanmak daha iyidir. . Ancak bir Css dosyasında hiç karşılaşmadım ... Ve eminim ki asla yapmayacağım :) (cevabı güncelledi)
Andrea Zilio

18
Kaynak kodlarından bireysel karakterlerin optimizasyonu ile ilgilenen programcılar, tekneyi tamamen kaçırırlar - neredeyse hiçbir şeyi optimize etmezler. Her neyse, her zaman çift tırnak kullanıyorum. Ben tutarlı bir adamım.
ChaseMoskal

6

W3C'ye göre üç yol yasaldır. Adda (boşluk olarak) özel karakterler varsa, ikincisini veya üçüncüsünü kullanmalısınız.


3

Örnek 2 veya 3 en iyisidir:

W3C'den: Bir URI değerinin biçimi 'url (' ve ardından isteğe bağlı beyaz boşluk, ardından isteğe bağlı tek tırnak (') veya çift tırnak (") karakteri ve ardından URI'nin kendisidir, ardından isteğe bağlı tek tırnaktır ('). veya çift tırnak işareti (") ve ardından isteğe bağlı boşluk, ardından") ". İki tırnak karakteri aynı olmalıdır.

Aynı açıklamadan, uygun karakterlerden kaçılırsa Örnek 1 kabul edilebilir.


1

Sahiptim:

a.pic{
    background-image: url(images/img (1).jpg);
}

Dosya adı kapalı parantezinin kuralı ihlal ettiğini anlamak biraz zamanımı aldı.

Bu nedenle zorunlu değildir, ancak alıntılar eski tarayıcılar tarafından çok iyi anlaşılmasa bile, oldukça karmaşık dinamik olarak oluşturulmuş sayfalarda bazı baş ağrısından kurtarabilir.


0

Göre Google CSS Kodlama Stili

URI değerlerinde (url ()) tırnak işareti kullanmayın.

İstisna: @charset kuralını kullanmanız gerekiyorsa çift tırnak işareti kullanın; tek tırnak işaretlerine izin verilmez.


2
@ DávidHorváth: Yanlış olduğunu söylemiyorum, ama ne kötü sözleşmeler demek istiyorsun?
Sam Dutton
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.