Mevcut bir renk değerini alıp buna alfa kanalı uygulayamazsınız. Yani, #f0f0f0
alfa bileşeni vermek ve elde edilen değeri başka bir özellik ile kullanmak gibi mevcut bir onaltılık değeri alamazsınız .
Bununla birlikte, özel özellikler onaltılık değerinizi kullanmak için bir RGB üçlüsüne dönüştürmenize rgba()
, bu değeri özel mülkte (virgül dahil!) Depolamanıza, bu değeri kullanarak istediğiniz alfa değerine sahip var()
bir rgba()
işleve değiştirmenize olanak tanır. sadece iş:
:root {
/* #f0f0f0 in decimal RGB */
--color: 240, 240, 240;
}
body {
color: #000;
background-color: #000;
}
#element {
background-color: rgba(var(--color), 0.8);
}
<p id="element">If you can see this, your browser supports custom properties.</p>
Bu gerçek olamayacak kadar iyi görünüyor. 1 Nasıl çalışır?
Büyü, özel özelliklerin değerlerinin, bir özellik değerindeki başvurular değiştirilirken , o özelliğin değeri hesaplanmadan önce olduğu gibi değiştirilmesidir . Uzakta özel özellikleri ile ilgili olarak olarak, değeri, bu bu araç sizin örnekte hiç bir renk değeri değil dek bir ifadenin bir renk değeri (ve yalnızca bu bağlamda) beklediği bir yerlerde görünür. Gönderen bölüm 2.1 css-değişkenler Spec arasında:var()
--color
var(--color)
Özel özellikler için izin verilen sözdizimi son derece izin vericidir. <declaration-value> üretimi, dizi <bad-string-token>, <bad-url-token>, eşleşmemiş <) - jeton>, <] içermediği sürece bir veya daha fazla jetondan oluşan herhangi bir diziyle eşleşir. token> veya <} - token> veya üst düzey <semicolon-token> belirteçleri veya "!" değerine sahip <delim-token> belirteçleri.
Örneğin, aşağıdakiler geçerli bir özel özelliktir:
--foo: if(x > 5) this.width = 10;
Bu değer, herhangi bir normal mülkte geçersiz olacağı için değişken olarak açıkça işe yaramaz olsa da, JavaScript tarafından okunabilir ve üzerinde işlem yapılabilir.
Ve bölüm 3 :
Bir özellik bir veya daha fazla var () işlevi içeriyorsa ve bu işlevler sözdizimsel olarak geçerliyse, tüm özelliğin dilbilgisinin ayrıştırma zamanında geçerli olduğu varsayılmalıdır. Var () işlevleri değiştirildikten sonra yalnızca hesaplanmış değer zamanında sözdizimi denetlenir.
Bu, 240, 240, 240
yukarıda gördüğünüz değerin , bildirim hesaplanmadan önce doğrudan rgba()
işleve ikame edildiği anlamına gelir . Yani bu:
#element {
background-color: rgba(var(--color), 0.8);
}
rgba()
virgülle ayrılmış en az dört sayısal değer beklemediği için başlangıçta geçerli CSS gibi görünmüyor :
#element {
background-color: rgba(240, 240, 240, 0.8);
}
elbette, mükemmel bir şekilde geçerli olan CSS.
Bir adım ileri giderek, alfa bileşenini kendi özel özelliğinde saklayabilirsiniz:
:root {
--color: 240, 240, 240;
--alpha: 0.8;
}
ve aynı sonuçla değiştirin:
#element {
background-color: rgba(var(--color), var(--alpha));
}
Bu, hareket halindeyken değiştirebileceğiniz farklı alfa değerlerine sahip olmanızı sağlar.
1 Eh, kod snippet'ini özel özellikleri desteklemeyen bir tarayıcıda çalıştırıyorsanız.