Подскажите алгоритм, как делается такая
фильтрация. Без анимации, позиционирования и прочего, просто отображение/скрытие элементов несколькими фильтрами одновременно.
Попробую объяснить, как я пытался сделать и почему не получилось:
всем элементам добавил data-* атрибуты color, size, shape с соответствующими значениями. При переключении фильтра проходил циклом по всем элементам, и сравнивал значение data-атрибута элемента и кнопки. Если они не совпадают, то применяется display: none, в противном случае display: block.
Но этот подход не правильно работает, потому что при выборе значения фильтра "any" показываются абсолютно все элементы, даже если они до этого быть скрыты другими фильтрами.
Еще придумал вариант, когда каждый фильтр ставит/убирает свой уникальный класс для скрытия элемента, вместо установки инлайнового display. Это работает, но количество классов растет пропорционально количеству фильтров.