CSS эффект пикселизации изображения
Для эффекта пикселизации нам понадобиться какое-нибудь изображение.
HTML разметка и позиционирование
Итак, у нас есть изображение female.jpg, размером 600x400 пикселей. Чтобы получить его десятикратно уменьшенную копию, откроем эту картинку в родном редакторе Windows, двойным нажатием на мышку. Затем изменим ее размер до 60x40 пикселей (Resize --> Define custom dimensions) и сохраним под новым именем female_pixel.jpg.
<div class="box">
<img src="female.jpg">
</div>
<div class="box pixel">
<img src="female_pixel.jpg">
</div>
*{
margin: 0;/*обнуление отступов*/
padding: 0;/*обнуление полей*/
box-sizing: border-box;
}
body{
display: flex;/*flexbox контейнер*/
justify-content: center;/*горизонтальное выравнивание*/
align-items: center;/*вертикальное выравнивание*/
min-height: 100vh;/*на всю высоту видимой области*/
}
Растяжение маленькой картинки
Теперь нам нужно растянуть маленькую картинку на реальную ширину и высоту большой. В результате мы получим изображение очень плохого качества. Так и должно быть, именно этого мы и добиваемся.
.box {
position: relative;/*относительное позиционирование*/
width: 600px;/*ширина*/
height: 400px;/*высота*/
margin: 10px;
background: #000;/*цвет фона*/
}
.box img {
position: absolute;/*абсолютное позиционирование*/
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;/*точно подогнать сохраняя пропорции*/
}
Пикселизация
Свойство image-rendering сообщает браузеру, что при увеличении картинки следует сохранять ее контраст и контуры, не допуская их размытия.
.box.pixel img {
image-rendering: pixelated;/*четкие контуры*/
filter: contrast(1.4);/*сила контраста*/
}
Усилим эффект пикселизации, наложив сверху псевдоэлемент before с линейным градиентом.
.box.pixel::before {
content: '';
position: absolute;
width: 100%;
height: 100%;
z-index: 1000;/*на верхнем слое*/
background: repeating-linear-gradient(0deg,#0006 0%, #0006 4%, transparent 4%, transparent 96%, #0006 96%, #0006 100%),repeating-linear-gradient(90deg,#0006 0%, #0006 4%, transparent 4%, transparent 96%, #0006 96%, #0006 100%);
background-size: 10px 10px;
}
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.