В этой статье мы познакомим вас с небольшой хитростью, позволяющей получить цвет темы изображения с помощью CSS. Давайте посмотрим вместе~
задний план
Причина в том, что одноклассник в технологической группе WeChat спросил, есть ли способ получить основной цвет картинки? Есть картинка, получаем его основной цвет:
Используйте полученное значение цвета для достижения такой функции — в контейнере есть изображение, и я надеюсь, что цвет фона может соответствовать основному цвету изображения, например:
Все вносили предложения, некоторые говорили, что используют Canvas для расчета, а некоторые рекомендовали специальные библиотеки с открытым исходным кодом, и все они были хороши.
Итак, можно ли реализовать эту функцию с помощью CSS?
Звучит как мечта, CSS все еще может добиться такого эффекта? Эмм, с помощью CSS действительно можно аппроксимировать основной цвет картинки умным способом. Если требования к основному цвету не особо точны, это метод. Давайте исследуем его вместе.
Используйте filter: blur() и transform: sacle(), чтобы получить цвет темы изображения.
Здесь мы используем фильтр размытия и эффект увеличения, чтобы приблизиться к цвету темы изображения.
Предположим, у нас есть такая картина:
<div></div>
Примените фильтр размытия к изображению:
div {
background: url("https://i0.wp.com/airlinkalaska.com/wp-content/uploads//aurora-2.jpg?resize=1024%2C683&ssl=1");
background-size: cover;
filter: blur(50px);
}
Взгляните на эффект, мы применяем относительно большой фильтр размытия к изображению.blur(50px)
, размытое изображение немного похоже на это, но есть некоторые размытые края, попробуйте использоватьoverflow
обрезать.
Далее нам нужно удалить размытые края, аtransform: scale()
Увеличить эффект, снова фокусируйте цвет и немного измените код:
div {
position: relative;
width: 320px;
height: 200px;
overflow: hidden;
}
div::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url("https://i0.wp.com/airlinkalaska.com/wp-content/uploads//aurora-2.jpg?resize=1024%2C683&ssl=1");
background-size: cover;
// 核心代码:
filter: blur(50px);
transform: scale(3);
}
Результат выглядит следующим образом:
Таким образом, мы используем CSS, чтобы получить основной цвет изображения, и эффект все еще хорош!
Вы можете нажать здесь для получения полного кода:CodePen Demo -- Get the main color of the image by filter and scale
недостаточность
Конечно, у этого решения есть небольшие проблемы:
- Вы можете получить основной цвет картины только приблизительно, он не может быть очень точным, и
filter: blur(50px)
это50px
Требуется некоторая отладка - Фильтр размытия сам по себе требует больших затрат производительности. Если на странице есть несколько фонов, полученных этим методом, это может оказать определенное влияние на производительность. В реальных условиях требуются определенные компромиссы.
наконец
Что ж, это конец этой статьи, представляющий небольшой трюк с использованием CSS для получения цвета темы изображения, надеюсь, он вам поможет :)
Спасибо одноклассникам, предложившим статью, знакомящую с этим методом --XboxYan, группа iCSS WeChat очень активна и собрала группу крупных шишек CSS.Студенты, которые хотят присоединиться к группе для обсуждения технологий, могут добавить меня в WeChatcoco1s(Поскольку в группе более 200 человек, вы не можете отсканировать код для входа в группу, вы можете только пригласить)
Если вы хотите получить самую интересную информацию о CSS, не пропустите мой официальный аккаунт --Интересные факты о внешнем интерфейсе iCSS😄
Другие замечательные технические статьи по CSS собраны в моемGithub -- iCSS, продолжайте обновлять, добро пожаловать, нажмите звездочку, чтобы подписаться на коллекцию.
Если у вас есть какие-либо вопросы или предложения, вы можете общаться больше.Оригинальные статьи ограничены в написании и знаниях.Если в статье есть какие-либо неточности, пожалуйста, дайте мне знать.