Если изображение стоит тысячи слов, то смешение двух изображений вместе должно стоить много раз.
Когда вы слышите CSS Blend Modes о котором говорят, волнение действительно связано с тем, что вы видите, что возможности дизайна, которые открываются с наличием режимов смешивания в CSS, намного больше, чем вы понимаете. три новых свойства CSS, которые получили довольно хорошую поддержку в современных браузерах.
Эти свойства включают в себя:
-
background-blend-mode
для смешивания фона элемента изображения, градиенты и фоновые цвета -
mix-blend-mode
для смешивания элементов над другими элементами и, наконец, -
изоляции
меньшей используемое в смешанном режиме для хранения элементов от смешивания.
Однако в этой статье основное внимание будет уделено background-blend-mode
свойство с наиболее распространенным поддержки и того, как вы можете использовать его сегодня для создания привлекательных фонов и
Содержание статьи
- 1 Объединение градиентов CSS с фоном-blend-mode
- 2 Spectrum background
- 3 Plaid background
- 4 Фон кругов
- 5 Больше фона
- 6 Фотоэффекты с фоном-blend-mode
- 7 Эффект эскиза карандаша
- 8 Эффект доски
- 9 Эффект ночного видения
- 10 Дополнительные фотоэффекты
- 11 Поддержка браузера и грациозная деградация
- 12 Ресурсы
Объединение градиентов CSS с фоном-blend-mode
Свойство background
— это свойство фотоизображений для вашего сайта, которое когда-то было возможно только в Photoshop. где мы можем использовать градиенты CSS. Такие функции, как linear-gradient ()
radial-gradient ()
и повторяющийся-линейный градиент ()
и повторяющийся радиальный градиент ()
разновидности этих двух имеют широкую поддержку и более критично, стандартизованный синтаксис в браузерах.
Но свойство background
также может принимать более одного градиента, отображаемого поверх каждого другие, причем каждая функция разделяется запятой. Lea Verou продемонстрировал впечатляющие модели, которые могут быть созданы с помощью этой техники: от шахматных досок, до кирпичей, до звезд.
Но теперь, когда у нас есть свойство background-blend-mode
мы можем создать еще более новые градиенты и рисунки.
Spectrum background
Давайте наложим три градиента, чтобы создать фон с почти полным спектром цветов, который можно отобразить на мониторе.
.spectrum-background {
фон:
линейный градиент (красный, прозрачный),
линейный градиент (вверху слева, известь, прозрачный),
линейный градиент (вверху
background-blend-mode: screen
}
Эффект, использованный ранее, был возможен только с изображением, весом в несколько десятков килобайт , Но мы только что воспроизвели эффект с CSS менее чем за 200 байт, не говоря уже о сохранении HTTP-запроса.
Plaid background
Мы также можем создать некоторые интересные плед-шаблоны с градиентами background-blend-mode
.
.plaid-background {
фон:
повторяющийся линейный градиент (
-45deg,
прозрачный 0,
прозрачный 25%,
dodgerblue 0,
dodgerblue 50%
),
повторяющийся линейный градиент (
45deg,
прозрачный 0,
прозрачный 25% ,
томат 0,
томат 50%
),
повторяющийся линейный градиент (
прозрачный 0,
прозрачный 25%,
золото 0,
золото 50%
), белый,
background-blend-mode: multiply;
background-size: 100px 100px;
}
Фон кругов
Как насчет еще одного, на этот раз с ra
.circles-background {
фон:
радиальный градиент (
хаки 40px,
прозрачный 0,
прозрачный 100%
),
радиальный градиент (
skyblue 40px,
прозрачный 0,
прозрачный 100%
),
радиальный градиент (
розовый 40px,
прозрачный 0,
] прозрачный 100%
), снег;
background-blend-mode: multiply;
background-size: 100px 100px;
background-position: 0 0, 33px 33px, -33px -33px;
}
Больше фона
С помощью Yoksel и Una Kravets я подготовил сборник из 24 дополнительных градиентов режима смешивания, чтобы сделать ваш сайт быстрым и привлекательным
Фотоэффекты с фоном-blend-mode
В то время как background-image
позволяет нам устанавливать несколько градиентов на элементе, один трюк заключается в том, что мы можем также установите мульти Несколько изображений с синтаксисом url ()
аналогичным образом. Когда мы объединим это с background-blend-mode
и такими свойствами, как фильтр
вот что может стать действительно интересным.
Эффект эскиза карандаша
Мы можем использовать CSS, чтобы сделать фотографию слева, как будто она была нарисована карандашом и бумагой. Нет Photoshop, нет холста HTML5, нет WebGL, нет библиотек JavaScript. Пять свойств CSS — это все, что нам нужно.
Хотя мы можем использовать другие элементы блочного уровня, такие как
вот HTML, который мы будем использовать для начала.
Давайте начнем стилизацию. Замените chapel.jpg
с URL-адресом изображения, которое вы используете.
.pencil-effect {
background:
url (chapel.jpg),
url (chapel.jpg)
background-size: cover;
}
Ниже в первом квадрате есть результат нашего первого шага:
Теперь добавим режим смешивания:
background-blend-mode: difference;
О нет, где все прошло? У нас остался совершенно черный квадрат. Режим разностной смеси берет два фонов и вычитает пиксель за пикселем более темный цвет одного фона из более светлого цвета другого фона.
Если это путает то, что здесь происходит, давайте посмотрим, что произойдет (19459011) и calc ()
.
background-position:
calc (50% - 1px) (50% - 1px),
calc (50% + 1px) calc (50% + 1px);
Используя запятую, мы устанавливаем две позиции фона, каждая из которых соответствует одной копии фонового изображения. Первое изображение, мы перемещаемся от центра по оси х влево на один пиксель и от центра по оси Y вверх вверх по пикселю.
. Мы остаемся с двумя фоновыми изображениями, которые слегка смещены, но вся картина по-прежнему сосредоточена в нашем элементе , Теперь, когда режим разностной смеси обнаруживает различия между двумя изображениями, он показывает края на фотографии.
Наконец, мы будем использовать свойство filter
чтобы инвертировать фотографию и сделать ее полутоновой.
фильтр: яркость (3) инвертировать (1) оттенки серого ( 1),
Для этой конкретной фотографии мы также увеличим яркость, которая имеет вторичный эффект увеличения контрастности линий.
Вот наш окончательный фрагмент CSS для этого эффекта:
.pencil-effect {
background:
url (photo.jpg),
url (photo.jpg);
background-size: cover;
background- blend-mode: difference;
background-position:
calc (50% - 1px) calc (50% - 1px),
calc (50% + 1px) calc (50% + 1px);
фильтр: яркость (3) инвертировать (1) оттенки серого (1);
}
Эффект доски
Мы можем воссоздать эффект доски, шаги для эффекта эскиза карандаша, опуская инверсию (1)
на последнем шаге.
Эффект ночного видения
Давайте попробуем воссоздать еще один эффект с режимами наложения CSS и сделать снимок, как будто мы просматриваем его через объектив ночных очков.
На нашем фоне есть три части, которые мы будем смешивать с режимом наложения наложения
. Этот режим смешивания осветляет и затемняет фон и работает как комбинация двух других режимов смешивания, multiply
и screen
.
Сначала мы настроим фоновое изображение, [1945903]
фон: url (moose.jpg);
background-size: cover;
background-position: center;
Теперь давайте добавим в режиме градиента и фона.
фон:
url (moose.jpg),
радиальный градиент (
rgba (0,255,0, .8) )
черный
);
background-blend-mode: overlay;
Не так уж плохо, может быть, мы хотим остановиться там. У меня есть еще одна идея, которая могла бы сделать эффект более аутентичным, и это добавить некоторые линии искусственного сканирования на задний план с повторяющимся градиентом фона.
фон:
url (moose.jpg),
радиальный градиент (
rgba (0,255,0, .8),
черный
),
повторяющийся линейный градиент (
прозрачный 0,
rgba (0 , 0,0, .2) 3px,
transparent 6px
),
И для его завершения полный CSS использовался для этого эффекта:
. эффект ночного видения
фон:
url (moose.jpg),
радиальный градиент (
rgba (0,255,0, .8),
черный
),
повторительно-линейный градиент (
прозрачный 0,
rgba (0,0,0, .2) 3px,
прозрачный 6px
),
background-blend-mode:
background-size: cover;
}
Дополнительные фотоэффекты
Я создал галерею из 20 эффектов изображения CSS, которые вы можете
Поддержка браузера и грациозная деградация
Хорошей новостью является то, что свойство background-blend-mode
имеет полную поддержку в Firefox, Chrome , и Opera.
. Несколько хороших новостей является то, что у нее достаточно поддержки в Safari для поддержки всех эффектов, которые мы рассмотрели здесь, в то время как Safari в настоящее время не имеет поддержки для насыщения
цвет
и светимость
.
Плохая новость заключается в том, что Internet Explorer и IE Edge не поддерживают каких-либо свойств режима смешивания CSS
Это означает, что нам нужно планировать будущее для браузеров, которые еще не поддерживают background-blend-mode
. Правильное правило CSS @supports
делает это довольно простым. Вот два примера.
В первом примере мы возьмем наш спектр фонового градиента и обеспечим резервную ошибку, если свойство background-blend-mode
не поддерживается. Мы используем background: gray,
для этого примера как резерв, но любой его CSS можно использовать на его месте.
.spectrum-background {
background: gray;
]
@supports (background-blend-mode: screen) {
background:
линейный градиент (красный, прозрачный),
линейный градиент (вверху слева, лайм, прозрачный),
}
}
И вот эффект эскиза карандаша с отступлением. Мы тестируем два важных свойства, для которых нам нужна поддержка эффекта: фильтр
и background-blend-mode
. Если браузер пользователя не поддерживает их (или если браузер не поддерживает CSS @supports
), мы вернемся к простой оригинальной фотографии.
.pencil- Эффект {
background-image: url (photo.jpg);
background-size: cover;
@supports (background-blend-mode: разница) и (фильтр: инвертировать (1) ) [
background-image:
url (photo.jpg),
url (photo.jpg);
background-blend-mode: difference;
background-position:
calc (50% - 1px) calc (50% - 1px),
calc (50% + 1px) calc (50% + 1px),
фильтр: яркость (3) инвертировать (1) оттенки серого (1)
}
}
Ресурсы
Режимы смешивания, демистифицированные Джастином Макдауэлем
Основы режимов наложения CSS Крисом Койером
Шаблоны CSS3 Галерея от Lea Verou
6-секционная серия эффектов изображения Una Kravets
Могу ли я использовать … Поддержка фона-blend-mode
Эффекты изображения с CSS by Bennett Feely
Новые возможности CSS-градиента с использованием свойства background-blend-mode by Bennett Feely
Экспериментальный полиполк для фонового смешения-моды Рика Кабанье
Композиция и смешение уровня 1 Спецификация W3C