İki yöntemden hangisi W3C standartlarına uygundur? Her ikisi de tarayıcılarda beklendiği gibi mi davranıyor?
sınır: yok;
sınır: 0;
İki yöntemden hangisi W3C standartlarına uygundur? Her ikisi de tarayıcılarda beklendiği gibi mi davranıyor?
sınır: yok;
sınır: 0;
Yanıtlar:
Her ikisi de geçerlidir. Bu senin seçimin.
Tercih ederim border:0
çünkü daha kısa; Bunu okumayı daha kolay buluyorum. none
Daha okunaklı bulabilirsiniz . Çok yetenekli CSS son işlemcilerin olduğu bir dünyada yaşıyoruz, bu yüzden tercih ettiğiniz her şeyi kullanmanızı ve daha sonra bir "kompresör" ile çalıştırmanızı tavsiye ederim. Burada savaşmaya değer kutsal bir savaş yok.
Tüm bunlar, eğer tüm üretim CSS'nizi elle yazıyorsanız, yorumlardaki huysuzluğa rağmen, bant genişliği konusunda bilinçli olmanın acı çekmediğini söyledim. Kullanılması border:0
olacaktır bant genişliği sonsuzküçük miktarda kaydedin. Kendi başına çok az şey sayar, ancak her bayt sayısını yaparsanız, web sitenizi daha hızlı hale getireceksiniz.
CSS2 teknik özellikleri burada . Bunlar CSS3'te genişletilmiştir, ancak bununla hiçbir şekilde ilgili değildir.
'border'
Value: [ <border-width> || <border-style> || <'border-top-color'> ] | inherit
Initial: see individual properties
Applies to: all elements
Inherited: no
Percentages: N/A
Media: visual
Computed value: see individual properties
Genişlik, stil ve renk kombinasyonlarını kullanabilirsiniz.
Burada 0
genişliği, none
stili ayarlar . Aynı oluşturma sonucuna sahiptirler: hiçbir şey gösterilmez.
border:none
şekilde daha iyi olduğunu düşünmüyorum , ama bunu muhakemeniz olarak kullanmak hatalı.
Bunlar içinde eşdeğerdir etkisi , farklı kısayollar işaret :
border: 0;
//short for..
border-width: 0;
Ve diğer..
border: none;
//short for...
border-style: none;
Her ikisi de çalışır, sadece birini seç ve onunla git :)
border: 0;
geçerlidir.
border: 0
kısayol DEĞİLDİR border-width: 0
. Bunun yerine, kısa versiyon her zaman her üç özelliklerini ayarlar: border-color
, border-style
ve border-width
.
Diğerlerinin söylediği gibi her ikisi de geçerlidir ve hile yapacak. % 100 aynı olduklarına ikna olmadım. Eğer bazı stil basamakları varsa, teoride farklı değerleri etkili bir şekilde geçersiz kıldıkları için farklı sonuçlar üretebilirler.
Örneğin. "Border: none;" ve daha sonra sınır genişliğini ve stilini geçersiz kılan iki farklı stile sahip olursanız, biri bir şey yapar ve diğeri yapmaz.
Aşağıdaki örnekte hem IE hem de firefox'ta ilk iki test bölümü kenarlıksız çıkıyor. Bununla birlikte, ikinci ikisi, ikinci bloktaki birinci bölmenin düz olması ve ikinci bloktaki ikinci bölmenin, orta genişlikte kesik kenarlığa sahip olması ile farklıdır.
Bu yüzden ikisi de geçerli olsa da, çok basamaklı ve bence böyle bir tarzda yaparlarsa, tarzlarınıza göz kulak olmanız gerekebilir.
<html>
<head>
<style>
div {border: 1px solid black; margin: 1em;}
.zerotest div {border: 0;}
.nonetest div {border: none;}
div.setwidth {border-width: 3px;}
div.setstyle {border-style: dashed;}
</style>
</head>
<body>
<div class="zerotest">
<div class="setwidth">
"Border: 0" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: 0" and "border-style: dashed"
</div>
</div>
<div class="nonetest">
<div class="setwidth">
"Border: none" and "border-width: 3px"
</div>
<div class="setstyle">
"Border: none" and "border-style: dashed"
</div>
</div>
</body>
</html>
border: none
yerine kullanmak zorunda kaldım border: 0
.
(not: bu cevap daha ayrıntılı, daha doğru ve canlı bir demo eklemek için 2014-08-01 tarihinde güncellenmiştir )
Göre W3C CSS2.1 tarifnamede ( “atlanmış değerler başlangıç değerlerine ayarlanır” ), aşağıdaki özellikler eşdeğerdir:
border: hidden; border-style: hidden;
border-width: medium;
border-color: <the same as 'color' property>
border: none; border-style: none;
border-width: medium;
border-color: <the same as 'color' property>
border: 0; border-style: none;
border-width: 0;
border-color: <the same as 'color' property>
Bu kurallar bir öğenin kenarlıklarına uygulanan en belirgin kurallarsa, sıfır genişlik nedeniyle veya hidden
/ none
stil nedeniyle kenarlıklar gösterilmez . Yani, ilk bakışta, bu üç kural eşdeğer görünüyor. Bununla birlikte, diğer kurallarla birleştirildiğinde farklı şekillerde davranırlar.
Bir tablo kullanılarak oluşturulduğunda, oluşturulan border-collapse: collapse
her kenarlık birden çok öğe arasında paylaşılır (iç kenarlıklar komşu hücreler olarak paylaşılır; dış kenarlıklar hücreler ve tablonun kendisi arasında paylaşılır; ancak satırlar, satır grupları, sütunlar ve sütun grupları da sınırları paylaşır ). Spesifikasyon sınır çatışması çözümü için bazı kuralları tanımlar :
İle Sınırlar
border-style
arasındahidden
tüm diğer çakışan sınırları üzerinde öncelik taşır. [...]
none
En düşük önceliğe sahip stili olan kenarlıklar . [...]Stillerden hiçbiri yoksa
hidden
ve en az biri değilsenone
, dar sınırlar daha geniş olanların lehine atılır. [...]Kenarlık stilleri yalnızca renkte farklılık gösteriyorsa, […]
Yani, bir tablo bağlamında, border: hidden
(veya border-style: hidden
) en yüksek önceliğe sahip olacak ve ne olursa olsun, paylaşılan kenarlığı gizleyecektir.
Önceliklerin diğer ucunda border: none
(veya border-style: none
) en düşük önceliğe, ardından sıfır genişlik sınırına sahiptir (çünkü en dar sınırdır). Bu araç, bir o hesaplanan değer arasında border-style: none
ve hesaplanan değeri arasında border-width: 0
esas olarak aynıdır.
Yana none
ve 0
farklı özellikler (etkileyebilir border-style
ve border-width
), onlar davranacaktır farklı zaman daha spesifik kural tanımlar sadece stil ya da sadece genişliği. Örnek için Chris cevabına bakınız .
Tüm bu vakaları tek bir sayfada görmek ister misiniz? Canlı demosu açın !
kullanma
border: none;
IE'nin bazı sürümlerinde çalışmaz. IE9 gayet iyi ancak önceki sürümlerde stil "none" olsa bile kenarlığı gösteriyor. Giriş kutularında kenarlıklar istemediğim bir yazdırma stili sayfası kullanırken bunu yaşadım.
border: 0;
tüm tarayıcılarda iyi çalışıyor gibi görünüyor.
Her ikisini de Oli tarafından sağlanan spesifikasyona göre kullanabilirsiniz.
Ben her zaman kullanırım border:0 none;
.
Bunları ayrı ayrı belirtmenin bir zararı olmamasına rağmen, eski CSS1 özellik çağrılarını kullanırsanız bazı tarayıcılar CSS'yi daha hızlı ayrıştırır.
Gerçi border:0;
normalde sınır stil varsayılan olacaktır none
, ben ancak hangi can garip üzerine yazma varsayılan sınır stilini uygulayan bazı tarayıcılar fark etmiş border:0;
.
Kullanırım:
border: 0;
Gönderen CSS 2.1'de 8.5.4 :
'Sınır'
Değer: [<border-width> || <border-style> || <'kenarlık rengi'>] | kalıt
Yani yöntemlerinizden herhangi biri iyi görünüyor.
Eh, doğrusu arasındaki farkı görmek border: 0
ve border: none
bazı deneyler yapabilirsiniz.
İlk önce kenarlığı yalnızca genişliği sıfır olarak ayarlanarak devre dışı bırakılabilen üç bölme oluşturalım, ikincisi yalnızca stilini yok olarak ayarlayarak devre dışı bırakılabilir ve üçüncüsü ise yalnızca kenarlığı ayarlayarak "devre dışı bırakılabilen" şeffaf renk. O zaman etkisini deneyelim:
border: 0;
border: none;
border: transparent
sınır tarzı: katı! önemli; kenarlık rengi: kırmızı! önemli; sınır genişliği: 2 piksel! kenarlık rengi: kırmızı! önemli; sınır genişliği: 2 piksel! sınır tarzı: katı! önemli;
Sonuçlarım hem firefox hem de chrome'da aynıydı:
border: 0;
Kenarlık genişliğini 0
ve kenarlık stilini şu şekilde ayarlıyor gibi görünüyor none
, ancak kenarlık rengini değiştirmiyor;
border: none;
Sadece kenarlık stilini değiştirir (to none
);
border: transparent;
Kenarlık rengini transparent
ve kenarlık stilini none
;
Sonuçlar büyük olasılıkla aynı olsa da (kenarlık yok), 0 ve hiçbiri teknik olarak farklı şeyleri ele almıyor.
0 kenarlık genişliğini, hiçbiri kenarlık stilini ele almaz. Açıkçası, 0 genişlikli bir sınır mevcut değildir, bu nedenle bir tarzı olmayacaktır.
Bununla birlikte, daha sonra stil sayfanızda bunu geçersiz kılmak istiyorsanız, doğal olarak özellikle birini veya diğerini ele alırsınız. Şimdi 3 piksellik bir kenarlık isteseydim, genişlik açısından 0: 0'ı doğrudan geçersiz kılardı. Şimdi noktalı bir kenarlık isteseydim, bu doğrudan kenarlığı geçersiz kılardı: stil açısından hiçbiri.
SINIRI 0 KULLANMALIYIZ
Görüş ve tecrübelerime göre, lütfen Border: 0; Geçerli ve çok iyi bir sebep var çünkü sınır kullandığımızda: hiçbiri, işe yaradığını anlıyorum ama bir kenarlık, 1px, 2px, 3px vb. Kullandığımızı düşünüyoruz. / em / rem doğru, bu yüzden kenarlık kullanmalıyız: 0; arka plan kullandığımızda bildiğimiz gibi sınır değerini kaldırmak için: none; arka planı başka bir şey olmayan bir değer olmayan bir arka planı kaldırdığımız anlamına gelir.
Teşekkürler