CSS-функция `alpha()`
Baseline Ограниченная доступность
Эта функция не входит в Baseline, поскольку она не работает в некоторых наиболее широко используемых браузерах.
alpha() CSS-функция принимает исходный color и возвращает тот же цвет с изменённым альфа-каналом (прозрачностью). Цветовые компоненты исходного цвета остаются неизменными. Результат представлен в том же цветовом пространстве, что и исходный цвет.
Синтаксис
/* Replace alpha with a fixed value */ alpha(from red / 50%) alpha(from var(--my-color) / 80%) /* Derive alpha relative to the origin color's alpha */ alpha(from var(--my-color) / calc(alpha * 0.5))
Параметры
-
from <color> - Ключевое слово синтаксиса относительного цвета
from, за которым следует любое допустимое значениеcolor, определяющее исходный цвет. Цветовые компоненты исходного цвета переносятся в результат без изменений; меняется только альфа-канал. -
/ <alpha-value> <alpha-value>, задающее альфа-канал результирующего цвета. Это может быть<number>в диапазоне от0до1,<percentage>в диапазоне от0%до100%или выражениеcalc(). В этом значении можно использовать ключевое словоalpha, чтобы обратиться к альфа-каналу исходного цвета как к<number>(где1.0эквивалентно100%).
Возвращаемое значение
Значение цвета в том же цветовом пространстве, что и исходный цвет, с идентичными цветовыми компонентами и изменённым значением альфа-канала, как указано.
Описание
Функция alpha() — это функция относительного цвета, позволяющая изменять прозрачность любого цвета, не переписывая его остальные компоненты. Это особенно полезно, когда нужен полупрозрачный вариант цветового токена или цвета пользовательского свойства и требуется автоматически получить его на основе исходного цвета, а не поддерживать отдельное значение.
В аргументе альфа-значения ключевое слово компонента alpha соответствует альфа-каналу исходного цвета в виде <number> в диапазоне [0, 1]. Это позволяет задавать альфа-канал результата относительно входного значения, например уменьшать его вдвое с помощью calc(alpha * 0.5) или ограничивать с помощью clamp(0.2, alpha, 0.8).
В отличие от общего синтаксиса относительных цветов (например, oklch(from ...)), функция alpha() не предоставляет доступ к ключевым словам отдельных цветовых каналов исходного цветового пространства. Она работает только с альфа-каналом, оставляя остальные компоненты цвета без изменений.
Возвращаемое значение всегда представлено в том же цветовом пространстве, что и исходный цвет. Например, если исходный цвет задан в формате oklch(), результат также будет представлен в OKLCh с теми же светлотой, цветностью и тоном.
Формальный синтаксис
<alpha()> = alpha( from <color> / [ <alpha-value> | none ] ) <color> = <color-base> | currentColor | <system-color> | <light-dark()> | <deprecated-system-color> <alpha-value> = <number> | <percentage> <color-base> = <hex-color> | <color-function> | <named-color> | <color-mix()> | transparent <system-color> = AccentColor | AccentColorText | ActiveText | ButtonBorder | ButtonFace | ButtonText | Canvas | CanvasText | Field | FieldText | GrayText | Highlight | HighlightText | LinkText | Mark | MarkText | SelectedItem | SelectedItemText | VisitedText <light-dark()> = light-dark( <color>, <color> ) <deprecated-system-color> = ActiveBorder | ActiveCaption | AppWorkspace | Background | ButtonHighlight | ButtonShadow | CaptionText | InactiveBorder | InactiveCaption | InactiveCaptionText | InfoBackground | InfoText | Menu | MenuText | Scrollbar | ThreeDDarkShadow | ThreeDFace | ThreeDHighlight | ThreeDLightShadow | ThreeDShadow | Window | WindowFrame | WindowText <color-function> = <rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()> <named-color> = aliceblue | antiquewhite | aqua | aquamarine | azure | beige | bisque | black | blanchedalmond | blue | blueviolet | brown | burlywood | cadetblue | chartreuse | chocolate | coral | cornflowerblue | cornsilk | crimson | cyan | darkblue | darkcyan | darkgoldenrod | darkgray | darkgreen | darkgrey | darkkhaki | darkmagenta | darkolivegreen | darkorange | darkorchid | darkred | darksalmon | darkseagreen | darkslateblue | darkslategray | darkslategrey | darkturquoise | darkviolet | deeppink | deepskyblue | dimgray | dimgrey | dodgerblue | firebrick | floralwhite | forestgreen | fuchsia | gainsboro | ghostwhite | gold | goldenrod | gray | green | greenyellow | grey | honeydew | hotpink | indianred | indigo | ivory | khaki | lavender | lavenderblush | lawngreen | lemonchiffon | lightblue | lightcoral | lightcyan | lightgoldenrodyellow | lightgray | lightgreen | lightgrey | lightpink | lightsalmon | lightseagreen | lightskyblue | lightslategray | lightslategrey | lightsteelblue | lightyellow | lime | limegreen | linen | magenta | maroon | mediumaquamarine | mediumblue | mediumorchid | mediumpurple | mediumseagreen | mediumslateblue | mediumspringgreen | mediumturquoise | mediumvioletred | midnightblue | mintcream | mistyrose | moccasin | navajowhite | navy | oldlace | olive | olivedrab | orange | orangered | orchid | palegoldenrod | palegreen | paleturquoise | palevioletred | papayawhip | peachpuff | peru | pink | plum | powderblue | purple | rebeccapurple | red | rosybrown | royalblue | saddlebrown | salmon | sandybrown | seagreen | seashell | sienna | silver | skyblue | slateblue | slategray | slategrey | snow | springgreen | steelblue | tan | teal | thistle | tomato | turquoise | violet | wheat | white | whitesmoke | yellow | yellowgreen <color-mix()> = color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2}) <rgb()> = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? ) | rgb( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? ) <rgba()> = rgba( <percentage>#{3} , <alpha-value>? ) | rgba( <number>#{3} , <alpha-value>? ) | rgba( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? ) <hsl()> = hsl( <hue>, <percentage>, <percentage>, <alpha-value>? ) | hsl( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? ) <hsla()> = hsla( <hue>, <percentage>, <percentage>, <alpha-value>? ) | hsla( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? ) <hwb()> = hwb( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? ) <lab()> = lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? ) <lch()> = lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? ) <oklab()> = oklab( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? ) <oklch()> = oklch( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? ) <color()> = color( [ from <color> ]? <colorspace-params> [ / [ <alpha-value> | none ] ]? ) <color-interpolation-method> = in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ] <hue> = <number> | <angle> <colorspace-params> = [<custom-params> | <predefined-rgb-params> | <xyz-params>] <rectangular-color-space> = srgb | srgb-linear | display-p3 | display-p3-linear | a98-rgb | prophoto-rgb | rec2020 | lab | oklab | xyz | xyz-d50 | xyz-d65 <polar-color-space> = hsl | hwb | lch | oklch <hue-interpolation-method> = [ shorter | longer | increasing | decreasing ] hue <custom-color-space> = <dashed-ident> <custom-params> = <dashed-ident> [ <number> | <percentage> | none ]+ <predefined-rgb-params> = <predefined-rgb> [ <number> | <percentage> | none ]{3} <xyz-params> = <xyz> [ <number> | <percentage> | none ]{3} <predefined-rgb> = srgb | srgb-linear | display-p3 | display-p3-linear | a98-rgb | prophoto-rgb | rec2020 <xyz> = xyz | xyz-d50 | xyz-d65
Примеры
Замена альфа-канала цвета
В этом примере задаются два цвета. Второй цвет определяется передачей первого цвета в функцию alpha() с установкой его альфа-канала в фиксированное значение 80%. Эти два цвета задаются как background-color двух элементов <div>, чтобы продемонстрировать разницу.
<div class="box1">Original</div> <div class="box2">Fixed 80% alpha</div>
:root {
--my-color: oklch(60% 0.25 315 / 0.3);
/* Same color, but with alpha set to 80% */
--my-color-80: alpha(from var(--my-color) / 80%);
}
.box1 {
background-color: var(--my-color);
}
.box2 {
background-color: var(--my-color-80);
}
body {
font-family: sans-serif;
display: flex;
gap: 10%;
justify-content: center;
}
div {
width: 40%;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
}
Создание полупрозрачного варианта
Этот пример очень похож на предыдущий, но на этот раз альфа-канал второго цвета вычисляется как половина альфа-канала первого цвета с помощью ключевого слова компонента alpha внутри выражения calc().
<div class="box1">Original</div> <div class="box2">Derived 50% alpha</div>
:root {
--my-color: oklch(60% 0.25 315 / 0.8);
/* Half the opacity of --my-color */
--my-color-half-opacity: alpha(from var(--my-color) / calc(alpha * 0.5));
}
.box1 {
background-color: var(--my-color);
}
.box2 {
background-color: var(--my-color-half-opacity);
}
Изменение прозрачности цвета при наведении
В этом примере фон элемента становится прозрачным на 40% при :hover, а сам цвет остаётся неизменным.
<button class="card">Hover over me</button>
:root {
--brand: oklch(55% 0.22 270);
}
.card {
background-color: var(--brand);
color: white;
padding: 1rem 2rem;
border: none;
border-radius: 0.5rem;
font-size: 1.1rem;
cursor: pointer;
transition: background-color 0.3s;
}
.card:hover {
background-color: alpha(from var(--brand) / 40%);
}
body {
padding: 2rem;
}
@supports not (color: alpha(from red / 50%)) {
body::before {
font-family: sans-serif;
content: "Your browser does not support the CSS alpha() function.";
background-color: wheat;
padding: 1rem 0;
text-align: center;
z-index: 1;
position: fixed;
inset: 30% 0 auto;
}
}
Спецификации
| Спецификация |
|---|
| Модуль CSS Color уровня 5 # relative-alpha |
Совместимость с браузерами
| Настольные | Мобильные | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | WebView на iOS | |
alpha |
151 |
151 |
155 |
135 |
27 |
151 |
155 |
101 |
27 |
Нет |
151 |
27 |
См. также
-
тип данных
color -
тип данных
<alpha-value> - Синтаксис относительных цветов
- модуль CSS Colors
-
Пользовательские свойства CSS и
var()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color_value/alpha