Я использую значки jquery ui
на странице, однако мне было интересно, можно ли изменить цвет значков только с помощью css
, то есть: для изменения цвета значков jquery ui
необходимо изменить изображение, содержащее все значки, например :
Поэтому, чтобы избежать этого, я подумал, что могу изменить цвет значка на зеленый или любой другой цвет, который мне нужен. Так как если я меняю изображение, меняется цвет всех иконок, и мне нужно изменить только некоторые из них.
Я читал, что его можно использовать filter
в css
, но я не знаю, как изменить цвет так, как я упоминал выше.
img { display: block; width: 50%; }
img {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}
<img src="https://isstatic.aoverflow.com/fXKdt.png" alt="test">
Как я могу изменить цвет этих изображений с помощью CSS
?
1. Прямой ответ на ваш вопрос
Если вам интересно поиграться с фильтрами, то можете, хотя я рекомендую 2-й способ (ниже).
Чтобы изменить оттенок цветов с помощью фильтров, рекомендуется начать со сплошного цвета. Например, давайте используем 100% красный цвет в качестве исходного изображения .
Мы привыкли иметь дело с RGB, но для фильтров нам приходится использовать HSL (оттенок, насыщенность, яркость). Например:
HSL( 0°, 100%, 50%)
HSL( 120°, 100%, 50%)
А для CSS
filter
и propertiesbackdrop-filter
используются функции hue-rotate() , saturate() и яркости() соответственно.Код
Чтобы изменить цвет с красного на зеленый, нужно всего лишь повернуть угол отбрасываемого цвета на 120°.
Другой пример, для желтого мы должны изменить оттенок и яркость.
Для других цветов я бы рекомендовал использовать онлайн-инструменты, такие как http://www.rapidtables.com/convert/color/rgb-to-hsl.htm (или что вы предпочитаете).
2. Класс для определения цвета
Как вы упомянули в своем вопросе, вы можете изменить цвет всех значков, получив ресурс из:
Например для зеленого на 100%
И мы можем установить это в классе, который применяется только к нужным вам значкам.
Код
Мы определяем класс
.verde
и применяем его только во втором случае:Я бы предпочел сделать это таким образом и загрузить одно дополнительное изображение размером 4,4 КБ, а не применять фильтр к каждому значку в зависимости от рендеринга на стороне клиента. Фильтры очень дорогие. Я думаю, что лучше уже рассчитать цвет как изображение, доступное на вашем сервере.