CSS

CSS opacity и filter — прозрачность и фильтры

opacity задаёт прозрачность всего элемента. filter применяет визуальные эффекты: размытие, яркость, контраст, оттенки. backdrop-filter — эффект матового стекла под элементом.

opacity — прозрачность элемента

/* 0 = полностью прозрачный, 1 = непрозрачный */
.invisible { opacity: 0; }     /* невидим, но место занимает */
.semi      { opacity: 0.5; }   /* 50% прозрачности */
.visible   { opacity: 1; }     /* полностью виден */

/* Плавное появление при hover */
.card img {
  opacity: 0.7;
  transition: opacity 0.3s ease;
}
.card:hover img {
  opacity: 1;
}

/* Отключённый элемент */
.btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* Важно: opacity влияет на ВЕСЬ элемент — текст, фон, дочерние элементы */
.parent { opacity: 0.5; }
/* .child тоже будет 50% прозрачным, даже если opacity: 1 */
Сравнение CSS opacity 0, 0.4, 0.7 и 1 на карточках с текстом
opacity управляет прозрачностью всего элемента целиком: при 0 элемент невидим, при 1 полностью виден.

opacity vs rgba — в чём разница

/* ❌ opacity — делает прозрачным ВСЁ включая текст */
.overlay-bad {
  background: black;
  opacity: 0.5;    /* и фон и текст 50% прозрачны */
  color: white;
}

/* ✅ rgba — только фон прозрачный, текст остаётся */
.overlay-good {
  background: rgba(0, 0, 0, 0.5);  /* только фон */
  color: white;  /* 100% непрозрачный */
}

/* Когда что использовать */

/* opacity — для анимаций появления/исчезания */
.modal {
  opacity: 0;
  transition: opacity 0.3s;
}
.modal.visible { opacity: 1; }

/* rgba/hsla — для полупрозрачных фонов */
.card {
  background: rgba(255, 255, 255, 0.9);  /* почти белый фон */
  color: #111;   /* текст непрозрачный */
}
Сравнение overlay с opacity и overlay с rgba где текст остаётся непрозрачным
Для полупрозрачного фона с читаемым текстом лучше использовать rgba или hsla, а не opacity на родителе.

CSS filter — визуальные фильтры

filter применяет графические эффекты к элементу (обычно изображению). Работает как фильтры в Photoshop — прямо в браузере.

/* blur — размытие */
img { filter: blur(4px); }   /* 4px размытия */
img { filter: blur(0); }     /* убрать размытие */

/* brightness — яркость */
img { filter: brightness(1.5); }  /* ярче */
img { filter: brightness(0.7); }  /* темнее */
img { filter: brightness(0); }    /* чёрный */

/* contrast — контраст */
img { filter: contrast(1.5); }  /* больше контраста */
img { filter: contrast(0.5); }  /* меньше */

/* grayscale — оттенки серого */
img { filter: grayscale(1); }    /* полностью чёрно-белый */
img { filter: grayscale(0.5); }  /* наполовину */

/* sepia — сепия */
img { filter: sepia(1); }    /* полная сепия */
img { filter: sepia(0.5); }  /* лёгкая сепия */

/* saturate — насыщенность цветов */
img { filter: saturate(2); }    /* вдвое ярче цвета */
img { filter: saturate(0.5); }  /* блёклые цвета */
img { filter: saturate(0); }    /* = grayscale(1) */

/* hue-rotate — поворот цветового тона */
img { filter: hue-rotate(90deg); }   /* сдвиг цветов на 90° */
img { filter: hue-rotate(180deg); }  /* противоположные цвета */

/* invert — инверсия */
img { filter: invert(1); }    /* инвертированные цвета */
img { filter: invert(0.5); }  /* частичная инверсия */

/* drop-shadow — тень по форме (не прямоугольная) */
img { filter: drop-shadow(4px 4px 8px rgba(0,0,0,0.3)); }
/* Для PNG с прозрачностью — тень повторяет контур */

/* opacity через filter */
img { filter: opacity(0.5); }  /* = opacity: 0.5 */
Галерея CSS filter с примерами blur brightness contrast grayscale sepia saturate hue-rotate invert
CSS filter работает как набор графических эффектов: один и тот же кадр можно быстро сделать ярче, контрастнее или чёрно-белым.

Несколько фильтров — через пробел

/* Комбинировать несколько фильтров через пробел */
.vintage {
  filter: sepia(0.5) contrast(1.2) brightness(0.9);
}

.dramatic {
  filter: contrast(1.5) saturate(1.3) brightness(0.95);
}

/* Hover — убрать фильтр плавно */
.card img {
  filter: grayscale(1) brightness(0.8);
  transition: filter 0.4s ease;
}
.card:hover img {
  filter: grayscale(0) brightness(1);  /* цвет возвращается */
}

/* Затемнение при загрузке */
.loading-img {
  filter: blur(20px) brightness(0.7);
  transition: filter 0.8s ease;
}
.loading-img.loaded {
  filter: none;
}
Примеры комбинированных CSS filters vintage dramatic hover grayscale loading blur
Несколько filter-функций комбинируются через пробел: так делают vintage-эффекты, hover-состояния и загрузочные blur-заглушки.

Таблица функций CSS filter

Функция Значение по умолчанию Описание
blur(px) 0 Гауссово размытие
brightness(n) 1 Яркость (>1 светлее, <1 темнее)
contrast(n) 1 Контраст
grayscale(n) 0 Оттенки серого (0–1)
sepia(n) 0 Эффект сепии (0–1)
saturate(n) 1 Насыщенность цветов
hue-rotate(deg) 0deg Поворот цветового тона
invert(n) 0 Инверсия цветов (0–1)
opacity(n) 1 Прозрачность (0–1)
drop-shadow() none Тень по контуру
Карта функций CSS filter blur brightness contrast grayscale sepia saturate hue rotate invert drop shadow opacity
CSS filter включает функции для размытия, яркости, контраста, цвета, инверсии, прозрачности и тени по контуру.

backdrop-filter — эффект матового стекла

backdrop-filter применяет фильтр к тому, что находится позади элемента. Создаёт эффект матового стекла (glassmorphism).

/* Классический glassmorphism */
.glass-card {
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);  /* обязательно для Safari */
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 16px;
  padding: 24px;
  color: white;
}

/* Тёмное стекло */
.dark-glass {
  background: rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(16px) brightness(0.9);
  -webkit-backdrop-filter: blur(16px) brightness(0.9);
}

/* Навбар с blur */
.navbar {
  position: fixed;
  top: 0; left: 0; right: 0;
  background: rgba(255, 255, 255, 0.8);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.3);
  z-index: 100;
}

/* Overlay модального окна */
.modal-backdrop {
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
Эффект матового стекла на CSS backdrop-filter blur с полупрозрачной карточкой поверх градиентного фона
backdrop-filter создаёт эффект матового стекла: карточка остаётся полупрозрачной, а фон позади неё размывается.

cursor — тип курсора мыши

/* Стандартные значения */
a, button    { cursor: pointer; }     /* рука — кликабельно */
input, textarea { cursor: text; }     /* I-beam — текст */
.draggable   { cursor: grab; }        /* захват */
.dragging    { cursor: grabbing; }    /* захватил */
.resize-n    { cursor: n-resize; }    /* изменение размера */
.loading     { cursor: wait; }        /* ожидание */
.disabled    { cursor: not-allowed; } /* запрет */
.help        { cursor: help; }        /* подсказка (?) */
.move        { cursor: move; }        /* перемещение */
.hidden-cur  { cursor: none; }        /* скрыть курсор */
.crosshair   { cursor: crosshair; }   /* прицел */
.zoom-in     { cursor: zoom-in; }     /* увеличить */
.zoom-out    { cursor: zoom-out; }    /* уменьшить */

/* По умолчанию */
div { cursor: default; }  /* стрелка */

/* Кастомный курсор */
.custom-cursor {
  cursor: url('/cursors/custom.png'), auto;
  /* url — путь к изображению (рекомендуется .cur или .png 32x32px) */
  /* auto — запасной вариант если файл не загрузился */
}
Галерея CSS cursor pointer text grab not-allowed wait help move zoom-in crosshair
cursor задаёт визуальную подсказку действия: pointer для клика, text для ввода, grab для перетаскивания, not-allowed для запрета.

Часто задаваемые вопросы

opacity vs rgba — что выбрать?

Правило простое: если нужен прозрачный фон при непрозрачном тексте — используй rgba(r, g, b, a) в свойстве background. Если нужно плавное появление/исчезание всего элемента целиком — opacity + transition. Если нужно скрыть элемент сохранив место в layout, но убрав события — opacity: 0 + pointer-events: none.

Практические примеры CSS opacity для modal fade disabled button pointer-events none
В интерфейсе opacity используют для плавного появления, disabled-состояний и скрытых элементов без удаления из layout.

Почему backdrop-filter не работает?

Три причины: 1) Отсутствует -webkit-backdrop-filter — в Safari нужен этот префикс. 2) Родительский элемент имеет overflow: hidden — это может блокировать backdrop-filter. 3) Нет ничего видимого позади — backdrop-filter работает с контентом НИЖЕ по z-index. Если фон белый или пустой, эффект не виден. Поместите карточку поверх изображения или градиента.

Три причины почему CSS backdrop-filter не работает: нет фона позади, нужен webkit prefix, overflow hidden
Если backdrop-filter не виден, проверь фон позади элемента, Safari-префикс и clipping через overflow.

Как сделать эффект матового стекла на CSS?

Четыре компонента glassmorphism: 1) background: rgba(255,255,255,0.15) — полупрозрачный белый фон. 2) backdrop-filter: blur(12px) + -webkit-backdrop-filter: blur(12px) — размытие фона. 3) border: 1px solid rgba(255,255,255,0.25) — слегка видимая рамка. 4) Позади должно быть что-то: изображение, градиент, другой контент. Без фонового контента эффект не виден.

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x