Hola @antonio_bcn, entiendo perfectamente el problema del 'flicker' o falta de suavidad en la transición de filtros CSS. Esto es común en navegadores cuando el elemento no se promueve a su propia capa de renderizado GPU o cuando la transición es compleja.
El truco que menciona @alejandrolab de transform: translateZ(0); es muy efectivo para esto en PrestaShop 1.7 (y en general). Fuerza al navegador a renderizar el elemento en una capa separada, lo que optimiza las transiciones. También te recomiendo ajustar la curva de la transición con ease-in-out para un efecto más natural. Aquí tienes el código modificado que deberías añadir a tu themes/classic/assets/css/custom.css:
.brand-image img {
filter: grayscale(100%);
opacity: 0.7;
transition: filter 0.4s ease-in-out, opacity 0.4s ease-in-out;
transform: translateZ(0); /* Fuerza aceleración por hardware */
backface-visibility: hidden; /* Otro truco para evitar parpadeos */
}
.brand-image img:hover {
filter: grayscale(0%);
opacity: 1;
Con transform: translateZ(0); en ambos estados, te aseguras de que el elemento siempre esté en una capa acelerada por hardware, eliminando el 'parpadeo' y haciendo la transición mucho más suave. El backface-visibility: hidden; es un extra que a veces ayuda también.