CanvasRenderingContext2D: свойство shadowColor
Базовая линия Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Свойство CanvasRenderingContext2D.shadowColor API Canvas 2D задаёт цвет тени.
Обратите внимание, что непрозрачность отрисованной тени будет зависеть от непрозрачности цвета fillStyle при заливке и цвета strokeStyle при обводке.
Примечание: Тени рисуются только если свойство shadowColor установлено в значение, отличное от прозрачного. Также одно из свойств shadowBlur, shadowOffsetX или shadowOffsetY должно иметь ненулевое значение.
Значение
Строка, интерпретируемая как значение CSS <color>. Значение по умолчанию — полностью прозрачный чёрный.
Примеры
Добавление тени к фигурам
В этом примере добавляется тень к двум квадратам; первый — залитый, второй — обведённый. Свойство shadowColor задаёт цвет тени, а shadowOffsetX и shadowOffsetY — её позицию относительно фигур.
HTML
<canvas id="canvas"></canvas>
JavaScript
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// Shadow
ctx.shadowColor = "red";
ctx.shadowOffsetX = 10;
ctx.shadowOffsetY = 10;
// Filled rectangle
ctx.fillRect(20, 20, 100, 100);
// Stroked rectangle
ctx.lineWidth = 6;
ctx.strokeRect(170, 20, 100, 100);
Результат
Тени на полупрозрачных фигурах
Непрозрачность тени зависит от уровня прозрачности родительского объекта (даже если shadowColor задаёт полностью непрозрачное значение). В этом примере прямоугольник обводится и заливается полупрозрачными цветами.
HTML
<canvas id="canvas"></canvas>
JavaScript
Полученное альфа-значение тени заливки равно .8 * .2, или .16. Альфа-значение тени обводки равно .8 * .6, или .48.
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// Shadow
ctx.shadowColor = "rgb(255 0 0 / 80%)";
ctx.shadowBlur = 8;
ctx.shadowOffsetX = 30;
ctx.shadowOffsetY = 20;
// Filled rectangle
ctx.fillStyle = "rgb(0 255 0 / 20%)";
ctx.fillRect(10, 10, 150, 100);
// Stroked rectangle
ctx.lineWidth = 10;
ctx.strokeStyle = "rgb(0 0 255 / 60%)";
ctx.strokeRect(10, 10, 150, 100);
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-context-2d-shadowcolor-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
shadowColor |
1 | 12 | 1.5 | ≤12.1 | 2 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
Примечания для WebKit/Blink
В браузерах на основе WebKit и Blink помимо этого свойства реализован нестандартный и устаревший метод ctx.setShadow().
setShadow(width, height, blur, color, alpha); setShadow(width, height, blur, graylevel, alpha); setShadow(width, height, blur, r, g, b, a); setShadow(width, height, blur, c, m, y, k, a);
См. также
- Интерфейс, определяющий это свойство:
CanvasRenderingContext2D
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/shadowColor