[data-hover] .ct-image-container img { transition: opacity 0.5s ease, transform 0.5s ease; } [data-hover="zoom-in"] { @media (hover: hover) { > *:hover .ct-image-container img { transform: scale(1.1); } } } [data-hover="zoom-out"] { .ct-image-container img { transform: scale(1.1); } @media (hover: hover) { > *:hover .ct-image-container img { transform: scale(1.0); } } } [data-hover="swap"] { .ct-swap { position: absolute; top: 0; left: 0; right: 0; bottom: 0; opacity: 0; } @media (hover: hover) { >*:hover { .ct-swap { opacity: 1; + img { opacity: 0; } } } } }