Таким образом, вы можете получить пикселизацию в CSS, выполнив следующие действия:
- Установите
background-image
на очень маленькое изображение (скажем, 50px или 100px).
- Установить
image-rendering: pixelated
на элемент.
Это даст вам пиксельный вид.
Теперь я хотел бы оживить это, заменив «очень маленькое изображение» большим изображением после завершения загрузки браузером:
let img = new Image()
img.src = largeVersion
img.onload = function(){
// set css background-image to the new image perhaps, not sure...
}
Проблема двоякая.
- Я хочу, чтобы
background-image
использовал background-size: cover
, чтобы он правильно заполнял элемент контейнера. Таким образом, вы не можете использовать фоновый размер в любой пиксельной анимации.
transform: scale(0.1)
(чтобы приблизиться к исходному размеру пикселизации) не работает, потому что масштабирует весь элемент.
Я хотел бы сделать что-то вроде этого: анимировать transform: scale(x)
, чтобы перейти от пиксельного изображения 50 пикселей к непиксельному изображению 2000 пикселей, за 0,3 или 0,5 секунды. Но это не работает. Я подумал, может быть, используя background-size, но это тоже не работает из-за ограничения.
Интересно, есть ли способ сделать это?
Я видел это , который делает пикселизацию с помощью canvas. Хотите знать, если нет другого решения, которое работает без использования JS / canvas.
<style>
div {
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
}
</style>
<div style='background-image: url(/100px.jpg)'></div>