CSS'de 'özellik: 0' veya 'özellik: 0px'?


88

Bu notasyonun çok kullanıldığını gördüm ve merak ediyordum, bu iki notasyon arasında kayda değer bir fark var mı?

element#id
{
  property: 0;
}

ve

element#id
{
  property: 0px;
}

Daha property: 0px;temiz görünen bulduğum için her zaman kullanırım , ancak tarayıcının bundan 0pxfarklı yorumlayıp yorumlamadığından emin değilim 0.

Hangisinin daha iyi veya doğru olduğunu bilen var mı?


1
Güzel soru ve bu olası kopyadan daha önce: stackoverflow.com/q/5359222/292060 , ancak teknik özellikleri belirterek daha iyi bir cevabı var.
goodeye

1
Hangisini kullanırsanız kullanın, tüm proje boyunca tutarlı kaldığınızdan emin olun.
PBwebD

Yanıtlar:


56

Birim tanıtıcılardır isteğe ama (sen her ne kadar hiçbir tanınmış bir performans artışı var olan iki karakter tasarruf).

CSS2 - Dan W3C CSS Syntax 2.1 Şartname ve temel veri türleri :

Bir uzunluk değerinin biçimi (bu belirtimde <uzunluk> ile gösterilir) bir <sayı> (ondalık nokta ile veya nokta olmadan) hemen ardından bir birim tanımlayıcı (ör. Px, em, vb.) Sıfır uzunluktan sonra, birim tanımlayıcı isteğe bağlıdır.

(Vurgu benim)

CSS3 - Dan W3C CSS Değerleri ve Birimler Modülü Seviye 3 (Şu içinde Aday Öneri bu yazının yazıldığı anda)

Sıfır uzunluklar için birim tanımlayıcı isteğe bağlıdır (yani sözdizimsel olarak 0 olarak temsil edilebilir).


1
GZIP sıkıştırması etkinken gerçekten 2 bayt tasarruf ettiğinizden şüpheliyim. Benim için neyle rahat hissettiğin önemli. Yine de bazı CSS Linters 0px'ten hoşlanmayabilir.
Manuel Arwed Schmidt

34

Değer olduğunda birim isteğe bağlı olsa da, değeri 0tıklayıp yukarı / aşağı ok tuşlarına basarak Chrome'un Geliştirici Araçları ile değerleri değiştirebileceğim için, onu içeride bırakma eğilimindeyim. Bir birim olmadan bu gerçekten mümkün değil.

Ayrıca, CSS küçültme araçları, birimleri yine de 0değerlerden çıkarır , böylece sonunda gerçekten önemli olmaz.


Minifider'ların bunu bildiğini ve onları dahil ederek elde edilecek işlevsellik olduğunu gözlemlemek için +1.
Graham P Heath

9
Tanımlayıcı olmadan bir 0 üzerinde yukarı / aşağı ok tuşlarına basarsanız, Chrome'un Geliştirici Araçları varsayılan olarak piksel olur. Ayrıca, Chrome'un Geliştirici Araçlarında, okunu 0'a indirirseniz, piksel tutar.
PBwebD

1
@test123: Bu cevabı yazdığım zaman öyle olduğunu sanmıyorum, ama bunu bilmek güzel.
Blender

Uygulamada birden çok yerde kullanılırlarsa 0 ve 0px ile ilgili yürütme süresi sorunları olur mu?
Kurkula

16

Onlar aynı. Tarayıcı her ikisini de 0 olarak yorumlar, bu yüzden sizin için daha okunaklı olanı kullanın.


'Doğru' veya standartlara uygun bir seçim var mı? border: 3 solidÜnite olmadığı için yazamayacağınızı biliyorum , ancak sıfırda herhangi bir web standardı var mı?
Blender

1
Cevabımda bahsettiğim gibi, hepsi aynı oldukları için: sıfır çarpı herhangi bir şey hala sıfırdır, ister bir pikselin boyutuyla, bir em ile, bir eski ile veya yüzdeyle çarpıyor olun.
AgentConundrum

Web standartları ile ne demek istediğinizden emin değilim, ancak "margin: 10px 0 0 10px" iyi çalışıyor, "border: 0" da "yok" un eşdeğeri olarak sıfırı kullanabileceğiniz anlamına geliyor.
Tom

1
@blender Belgelere bir bağlantı ile web standartları için aşağıdaki cevabımı kontrol edin.
Chris Bier

3
Herhangi bir referans, bağlantı veya gerekçe olmaksızın tartışılabilir içeriğe sahip bir cevap için -1. lütfen fikrinizi verilerle yedekleyin veya bunun gerçek bilgi değil, yalnızca sizin fikriniz olduğunu açıkça belirtin.

11

Sıfır, sıfırdır. 0px= 0%= 0em= 0pt=0

Çoğu insan üniteyi devre dışı bırakır çünkü bu sadece gereksiz bir dağınıklıktır.


1
Bir istisna süresi birimdir: 0değil geçerli bir alternatif 0s/0ms
Henrik Christensen

5

Bildiğim kadarıyla, o zamandan beri aralarında bir fark yok 0px = 0em = 0ex = 0% = 0. En çok neyi sevdiğinize karar vermek, geliştirici olarak tamamen size bağlıdır (tabi ki, uymanız gereken kurumsal kodlama standartlarınız yoksa).

Gördüğüm kod örneklerinin çoğundan, çoğu insan birimsiz sürümü kullanıyor. Bana göre sadece daha temiz görünüyor. Önemli miktarda veri aktarıyorsanız (örneğin, Google iseniz), bu iki bayt çok fazla bant genişliği ekleyebilir, özellikle de bunları stil sayfanızda birden çok kez tekrarlama olasılığınız oldukça yüksek olduğundan.


6
Önemli miktarda veri aktarıyorsanız (mesela Google iseniz), bunu sizin için yapan küçültme araçlarını kullanıyor olsanız iyi olur: p
John Kurlak

4

Sıfır piksel, sıfır inç ve sıfır metreye eşittir vb. 0tüm ihtiyacın olan.


Bir an için gönderinize oy verecektim çünkü 0 pikselinizin 0 inç'e eşit olduğu hakkındaki ifadenizin yanlış olduğunu düşünüyordum. :) Çünkü aklımda bu nasıl olabilir diye düşünüyordum. onlar farklı birimlerdir.
Web_Designer

2

Ben şahsen 0daha temiz buluyorum 0px. Bu, toplanabilecek iki ekstra karakter. Gerekmediğinde neden fazladan bayt eklemelisiniz? padding: 0px 0px 0px 0pxHangisinin padding: 0çok sık olarak kolayca ifade edilebileceğini gördüm .


1

Her ikisini de kullanabilirsiniz - en iyi tavsiyem çok fazla endişelenmemek ama bunu bir şekilde veya diğer şekilde yaparken tutarlı olmaktır. Şahsen aşağıdaki nedenlerden dolayı '0px' belirtmeyi tercih ediyorum:

  • 0px kullanmak, her şeyi belirttiğiniz diğer tüm 'piksel' boyutlarıyla daha tutarlı hale getirir
  • Aynı zamanda daha ayrıntılı ve 'bunu kapat' bayrağı yerine sıfır uzunluk ayarladığınızı çok açık hale getiriyor
  • Gerekirse başka bir değer yapmak için '0px' değerini değiştirmek biraz daha kolaydır

0

Diğerlerinin dediği gibi, 0 olup olmadığı gerçekten önemli değil, ancak ölçümleri tüm değerlerime eklemeyi seçiyorum, böylece CSS dosyalarıma bakan başka biri, başka yerlerde hangi ölçümlerle uğraşabileceklerini ölçebilir.


0

Bunu biliyorum hiçbir fark olmamalıdır arasında 0pxve 0ben tespit ettim ama bazen orada .

Bunun gibi bir nesneyi ortalamaya çalışıyordum:

position: absolute;
left: max(0px, calc((100vw - 400px)/2));
max-width: 400px;   

Çalışır ama yerine 0pxkoyarsanız 0işe yaramaz.

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.