CSS – показать только два прямоугольника, маскируя все остальноеCSS

Разбираемся в CSS
Ответить
Anonymous
 CSS – показать только два прямоугольника, маскируя все остальное

Сообщение Anonymous »

Когда я хочу замаскировать все, кроме прямоугольного элемента div, я использую этот код JavaScript для создания динамического значения CSS-маски:

Код: Выделить всё

const top = rect.top;
const left = rect.left;
const width = rect.width;
const height = rect.height;

const right = left + width;
const bottom = top + height;

// Create a mask that’s black everywhere except for a transparent rectangle
this.maskValue = `
linear-gradient(to right, black ${left}px, transparent ${left}px, transparent ${right}px, black ${right}px),
linear-gradient(to bottom, black ${top}px, transparent ${top}px, transparent ${bottom}px, black ${bottom}px)
`);
Как мне сделать то же самое, если у меня есть два пересекающихся прямоугольника, как на моем рисунке? (Прямоугольник 1 больше; Прямоугольник 2 меньше по высоте, но шире и находится поверх первого прямоугольника.) Я хочу затемнить все, что находится за пределами этой фигуры:
Изображение
Когда я добавляю еще два линейных градиента к моему значению маски (для второго прямоугольника), это просто уменьшает всю прозрачную область.

Подробнее здесь: https://stackoverflow.com/questions/797 ... g-else-out
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «CSS»