Wiem, że możesz pisać ...
background-color: #ff0000;
... jeśli chcesz czegoś, co jest czerwone.
I możesz pisać ...
background-color: rgba(255, 0, 0, 0.5);
... jeśli chcesz czegoś czerwonego i półprzezroczystego.
Czy istnieje jakiś zwięzły sposób zapisywania częściowo przezroczystych kolorów w systemie szesnastkowym? Chcę coś takiego:
background-color: #ff000088; <--- the 88 is the alpha
... lub ...
background-color: #ff0000 50%;
Dostaję wszystkie moje kolory w systemie szesnastkowym, a konwersja ich wszystkich na dziesiętną skalę 0–255 jest denerwująca.
rgb(0xff,\x80,#44)
zadziwiająco reprezentacja Octal wydają Jorku trochęrgb(0100, 0200,0300)
jest#4080C0
background-color: opacify(#ff0000, 0.5);
lubbackground-color: transparentize(#ff0000, 0.5);
Możesz podać zmienne heksadecymalne Sass również do tych funkcji Sass.Odpowiedzi:
Moduł kolorów CSS poziom 4 prawdopodobnie będzie obsługiwał 4 i 8 cyfr szesnastkową notację RGBA!
Trzy tygodnie temu (18 grudnia 2014 r.) Szkic edytora CSS Color Module poziomu 4 został przesłany do grupy roboczej CSS W3C. Chociaż w stanie, który jest bardzo podatny na zmiany, obecna wersja dokumentu sugeruje, że w nieco niedalekiej przyszłości CSS będzie obsługiwał zarówno 4, jak i 8-cyfrowy szesnastkowy zapis RGBA.
Uwaga: w poniższym cytacie wycięto niepotrzebne fragmenty, a źródło mogło być mocno zmodyfikowane do czasu, gdy to czytasz (jak wspomniano powyżej, jest to szkic redaktora, a nie sfinalizowany dokument).
Jeśli coś się bardzo zmieniło, zostaw komentarz, aby poinformować mnie, żebym mógł zaktualizować tę odpowiedź!
Co to oznacza dla przyszłości kolorów CSS?
Oznacza to, że zakładając, że nie zostanie to całkowicie usunięte z dokumentu poziomu 4, wkrótce będziemy mogli zdefiniować nasze kolory RGBA (lub kolory HSLA, jeśli jesteś jednym z nich ) w formacie szesnastkowym w przeglądarkach obsługujących kolor Składnia modułu poziomu 4.
Przykład
Kiedy będę mógł użyć tego w moich produktach skierowanych do klientów?
Wszystkie dowcipy na bok: to dopiero początek 2015 roku, więc nie będą one jeszcze obsługiwane w żadnej przeglądarce przez dłuższy czas - nawet jeśli twój produkt jest zaprojektowany tylko do pracy z najnowszymi przeglądarkami, prawdopodobnie będziesz nie zobaczymy tego w akcji w przeglądarce produkcyjnej w najbliższym czasie.
Zobacz bieżącą obsługę przeglądarki dla notacji kolorów #RRGGBBAA
Jednak powiedziawszy, sposób działania CSS oznacza, że możemy zacząć korzystać z nich już dziś! Jeśli naprawdę chcesz zacząć z nich korzystać teraz, o ile dodasz awarię, wszelkie nieobsługiwane przeglądarki po prostu zignorują nowe właściwości, dopóki nie zostaną uznane za ważne:
Tak długo, jak przeglądasz tę odpowiedź w przeglądarce, która obsługuje CSS
background
icolor
właściwości,<figure>
element wyniku powyższego fragmentu będzie wyglądał bardzo podobnie do tego:Korzystając z najnowszej wersji Chrome na Windows (v39.0.2171), aby sprawdzić nasz
<figure>
element, zobaczymy:Sześciocyfrowe cofanie szesnastkowe jest zastępowane przez
rgba()
wartości, a nasze 8-cyfrowe wartości szesnastkowe są ignorowane, ponieważ obecnie są analizowane przez parser CSS Chrome. Gdy tylko nasza przeglądarka obsługuje te 8-cyfrowe wartości, zastąpią onergba()
te.AKTUALIZACJA 2018-07-04: Firefox, Chrome i Safari obsługują teraz tę notację, Edge wciąż brakuje, ale prawdopodobnie nastąpi ( https://caniuse.com/#feat=css-rrggbbaa ).
źródło
/* Fall... foward? */
»Proponuję przeskoczyć do przodu. Powrót i skok do przodu: ^ pZnalazłem odpowiedź po opublikowaniu rozszerzenia do pytania. Przepraszam!
MS Excel pomógł!
po prostu dodaj prefiks Szesnastkowy do wartości koloru heksadecymalnego, aby dodać alfa, które ma krycie równoważne jak wartość%.
(w rbga procentowe krycie jest wyrażone w postaci dziesiętnej, jak wspomniano powyżej)
źródło
#FF00000C
to, że jest równoważnergba(255,0,0,0.05)
?#000000
staje#7F000000
.źródło
var rgb = '#ffabcd'; var a = '0.5'; var matches = rgb.match(/#([\da-f]{2})([\da-f]{2})([\da-f]{2})/i); var rgba = 'rgba(' + matches.slice(1).map(function(m) { return parseInt(m, 16); }).concat(a) + ')';
<div style={ { backgroundColor: `rgba(${ parseInt(color.substring(1,3),16) }, ${ parseInt(color.substring(3,5),16) }, ${ parseInt(color.substring(5,7),16) }, 0.5)` } }></div>
Zobacz tutaj http://www.w3.org/TR/css3-color/#rgba-color
Nie jest to możliwe, prawdopodobnie dlatego, że 0xFFFFFFFF jest większa niż maksymalna wartość dla 32-bitowych liczb całkowitych
źródło
#ffffff
(sześć cyfr szesnastkowych) jest w rzeczywistości 24-bitową wartością koloru; 0xFFFFFFFF ma w rzeczywistości 2³² − 1 i może być reprezentowany jako 32-bitowa liczba całkowita bez znaku . Myślę, że powodem, dla którego#ffffffff
(osiem cyfr szesnastkowych) nie podano, jest zarówno to, że kolory CSS są zakorzenione w przestrzeni kolorów sRGB, jak i to, że ośmiocyfrowa notacja byłaby niejednoznaczna z urządzeniem wyświetlającym, które obsługuje głębię kolorów 32-bitową. Pamiętaj, że nadal jest#fff
tak, że oznacza torgb(100%, 100%, 100%)
- biały - zarówno z głębią kolorów 8 bitów (256 kolorów), jak i 16 bitów (65536 lub 64K kolorów).Chrome 52+ obsługuje alpha hex:
źródło
¯\_(ツ)_/¯
Zastosowanie
red
,green
,blue
konwertować do RGBA:źródło
Obawiam się, że to niemożliwe.
rgba
Format wiesz, jest tylko jeden.źródło
Jeśli możesz użyć opcji LESS, dostępna jest funkcja przenikania.
źródło
rgba(base-color, 0.5)
Czarujący Książę:
Tylko przeglądarka internetowa zezwala na 4-bajtowy kolor heksadecymalny w formacie ARGB, gdzie A jest kanałem alfa. Może być stosowany na przykład w filtrach gradientowych:
Gdzie katalog może być: 1 (poziomy) lub 0 (pionowy), a ciągi kolorów mogą być kolorami szesnastkowymi (# FFAAD3) lub kolorami szesnastkowymi argb (# 88FFAAD3).
źródło
Cóż, musisz się nauczyć różnych oznaczeń kolorów.
Kuler daje większą szansę na znalezienie koloru i wielu notatek.
Hex nie różni się od RGB, FF = 255 i 00 = 0, ale to wiesz. W pewnym sensie musisz to sobie wyobrazić.
Używam Hex, RGBA i RGB. O ile nie jest wymagana konwersja masy, ręczne wykonanie tej czynności pomoże zapamiętać 100 dziwnych kolorów i ich kodów.
Do masowej konwersji napisz jakiś skrypt jak ten podany przez Alarie. Baw się dobrze z kolorami.
źródło
W Sass możemy napisać:
jak sugerowano w reprezentacji szesnastkowej koloru z kanałem alfa?
źródło
dlaczego nie użyć
background-color: #ff0000; opacity: 0.5; filter: alpha(opacity=50); /* in IE */
jeśli celujesz w kolor tekstu lub prawdopodobnie elementu, powinno to być o wiele łatwiejsze.
źródło
opacity
właściwości css.