По моему личному опыту, вы захотите использовать свойство CSS filter: grayscale(100%)
, чтобы миниатюры отображались без цвета. Существует множество способов реализовать это с одним и тем же конечным результатом, но здесь есть ссылка на скрипту js, которая демонстрирует концепцию:
https://jsfiddle.net/s3pLef9c/47/
Чтобы объяснить, что происходит в JS Fiddle:
В основном, эта демонстрация использует директиву ng-click
для добавления класса .image-active
к элементу с базовым классом .image
.
Вот как эти классы выглядят:
.image{
margin: 8px;
display: inline-block;
box-sizing: border-box;
width: 20%;
height: 100px;
border: 8px solid #2c2c2f;
background-color: #FEC10D; // change this to background-image or add an <img> tag inside the <div> tag and remove this line!
filter: grayscale(100%);
}
.image-active{
filter: grayscale(0%);
}
Базовый класс .image
использует filter: grayscale(100%)
, чтобы изначально настроить изображения на отсутствие цвета. Класс .image-active
добавляется к элементу, когда происходит событие щелчка, переопределяя фильтр оттенков серого на класс filter: grayscale(0%) and adding color. Then existing
.image-active`.
Я не был уверен, основываясь на вашем вопросе, хотите ли вы, чтобы первое изображение было активным по умолчанию, или если вы хотите, чтобы все они были серыми, чтобы начать, поэтому я взял на себя смелость, но я рад обновить это для вас .
Примечание. В этом примере не используются изображения, только теги <div>
с примененными цветами фона. Но если вы просто удалите цвет и добавите фоновые изображения, это должно работать для вас.
Чтобы объяснить дальше:
Добавить / удалить свойство или класс CSS намного проще и быстрее, чем заменить исходный файл изображения в зависимости от состояния приложения. Это становится еще проще при использовании директив ng-repeat
и ng-class
, предоставляемых angular, вот ссылка на документацию:
https://docs.angularjs.org/api/ng/directive/ngClass
Надеюсь, это поможет!