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.