background: none vs background: transparent fark nedir?


119

Bu iki CSS özelliği arasında bir fark var mı :

background: none;
background: transparent;
  1. İkisi de geçerli mi?
  2. Hangisi kullanılmalı ve neden?

Yanıtlar:


111

Aralarında hiçbir fark yok.

Yarım düzine özellikten herhangi backgroundbiri için kısaltma olan bir değer belirtmezseniz , varsayılan değerine ayarlanır. noneve transparentvarsayılanlardır.

Bir açıkça setleri background-imageiçin noneve dolaylı olarak ayarlar background-coloriçin transparent. Diğeri ise tam tersi.


2
@herman - Hayır, yapamazlar. Bu aynı background-color: transparent; background-image: none;. Bir kullanıcı stil sayfası bu değerlerden birini veya her ikisini geçersiz kılabilir, ancak bunu aynen background-color: transparent; background-image: none;açıkça yazılmış gibi yapacaktır .
Quentin

Yani, "ilk" özellik değerinin (belirtilmemiş özellikler için kullanılan) kullanıcı aracısı stil sayfalarını bile geçersiz kıldığını söylüyorsunuz? Referansınız var mı?
herman

Kullanıcı aracısı stil gibi özelliklerinin ilk özellik değerini tanımlar spec uygulanması transparentve none.
Quentin

63

@Quentin cevabına ek bilgi olarak ve haklı olarak söylediği gibi, backgroundCSS özelliğinin kendisi aşağıdakilerin kısaltmasıdır:

background-color
background-image
background-repeat
background-attachment
background-position

Yani, tüm stilleri tek bir grupta toplayabilirsiniz, örneğin:

background: red url(../img.jpg) 0 0 no-repeat fixed;

Bu (bu örnekte):

background-color: red;
background-image: url(../img.jpg);
background-repeat: no-repeat;
background-attachment: fixed;
background-position: 0 0;

Öyleyse ... ayarladığınızda: background:none;
tüm arka plan özelliklerinin hiçbiri olarak ayarlanmadığını
söylüyorsunuz ... Bunu background-image: none;ve tüm diğerlerini initialduruma söylüyorsunuz (beyan edilmedikleri için).
Yani background:none;:

background-color: initial;
background-image: none;
background-repeat: initial;
background-attachment: initial;
background-position: initial;

Şimdi, yalnızca rengi (sizin durumunuzda transparent) tanımladığınızda temelde şunu söylüyorsunuz:

background-color: transparent;
background-image: initial;
background-repeat: initial;
background-attachment: initial;
background-position: initial;

Tekrar ediyorum, @Quentin haklı olarak bu durumdadefault transparent ve nonedeğerlerin aynı olduğunu söylediği için , örneğinizde ve orijinal sorunuz için Hayır, aralarında bir fark yok.

Ama! .. Eğer background:noneVs derseniz background:redevet ... büyük bir fark var, dediğim gibi, birincisi tüm özellikleri ayarlayacak none/defaultve ikincisi sadece değişecek colorve gerisi onun defaultdurumunda kalacak .

Yani kısaca:

Kısa cevap : Hayır, hiçbir fark yok (örneğinizde ve asıl sorunuzda)
Uzun cevap : Evet, büyük bir fark var, ancak doğrudan özniteliğe verilen özelliklere bağlıdır.


Upd1: Başlangıç ​​değeri (aka default)

İlk değer, uzun el özelliklerinin başlangıç ​​değerlerinin birleştirilmesidir:

background-image: none
background-position: 0% 0%
background-size: auto auto
background-repeat: repeat
background-origin: padding-box
background-style: is itself a shorthand, its initial value is the concatenation of its own longhand properties
background-clip: border-box
background-color: transparent

Burada daha fazla backgroundaçıklama görün


Upd2: background:none;Spesifikasyonu daha iyi netleştirin .


cevap için teşekkürler arkaplan görüntüsü, arkaplan tekrarı ... için varsayılan değerler nelerdir? tarayıcıya bağlı mı? Açıklamanızı anlarsam, arka planı kullanmak daha iyidir: hiçbiri, yani değerlerden hiçbiri varsayılan olarak ayarlanmadı?
web-tiki

Ne gönderdiğini denedin mi? Tüm değerler sıfıra mı ayarlanmış? consoleBu demoyu kontrol edin jsfiddle.net/dnzy2/6
DaniP

ayarladığınızda: arka plan: yok; tüm arka plan özelliklerinin
sıfır olarak ayarlandığını

2
+1, Bu kabul edilen cevap olmalıdır (eğer doğruysa).
Pacerier

7

Diğer yanıtları tamamlamak için: başlangıçtaki değere tüm arka plan özelliklerini (ki içerir sıfırlamak istiyorsanız background-color: transparentve background-image: noneaçıkça gibi herhangi bir değer belirtmeden) transparentveya none, yazılı bunu yapabilirsiniz:

background: initial;

5
Dikkatli olun, IE desteklemiyor initial. bkz. Kullanabilir miyim ve MDN
chharvey
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.