TransWikia.com

Подмена цвета PNG при наведении мыши

Stack Overflow на русском Asked by Vadim Rudenko on December 6, 2020

Подскажите, как с помощью CSS, при наведении курсора, заменить цвет PNG-иконки (например, такой:
введите сюда описание изображения ) с серого на красный.

3 Answers

Поддержка браузерами: caniuse.com/#search=mask

div {
    -webkit-mask-size: contain;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-position: center;
    -webkit-mask-image: url('https://image.flaticon.com/icons/svg/1086/1086563.svg');
    width: 50px;
    height: 50px;
    display: inline-block;
    background-color: #000;
}

div:nth-child(1) { background: linear-gradient(#e74c3c, #f1c40f); }
div:nth-child(2) { background-color: #1842de; }
div:nth-child(3) { background-color: #ffff00; }
div:nth-child(4) { background-color: #3498db; }
div:nth-child(5) { background-color: #9b59b6; }
div:nth-child(6) { background-color: #2ecc71; }
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

Answered by MoloF on December 6, 2020

Подготовьте отдельный спрайт с иконками разных цветов (как показано ниже). В CSS-стилях зафиксируйте размеры блока. Задайте для блока фоновое изображение. У псевдокласса :hover пропишите смещение этого изображения равное высоте (или ширине) картинки. В результате получится элемент, который чуть-чуть изменяется при наведении указателя мыши.

спрайт с вертикально расположенными иконками

.i-folder {
  height: 42px;
  width: 57px;
  background: url(https://i.stack.imgur.com/jjpgK.png);
}
.i-folder:hover {
  background-position: 0px 42px;
}
<div class="i-folder"></div>

Answered by mymedia on December 6, 2020

В CSS3 это возможно с помощью свойства filter:

img:hover {
  -webkit-filter: sepia(1) hue-rotate(320deg) saturate(10);
  filter: sepia(1) hue-rotate(320deg) saturate(10);
}
<img src="https://i.stack.imgur.com/rbcA9.png">

Цепочка фильтров такова (порядок важен!):

  • sepia - по сути, делает изображение монохромным с рыжим оттенком;
  • hue-rotate - вращение цветового круга до нужного оттенка;
  • saturate - насыщенность цвета.

Источник


Чтобы какой-либо цвет превратить в белый:

body { background: #ccc; }

img:hover {
  -webkit-filter: grayscale(100) brightness(200);
  filter: grayscale(100) brightness(200);
}
<img src="https://i.stack.imgur.com/jjpgK.png">

Здесь цепочка следующая:

  • grayscale - обесцвечиваем изображение;
  • brightness - устанавливаем яркость с заведомо завышенным значением.

Answered by UModeL on December 6, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP