Witam!
Mam problem z wykonaniem fragmentu kodu CSS dla hover poprzez JS.
Chciałbym, żeby transform: rotate (zaznaczyłem na zielono w kodzie) dla psedoelementu ::after i ::before wykonywane były przez kliknięciu w inny element zamiast podczas hover.
Kod CSS działa bez zarzutów - podczas hover pseudoelementy obracją się i pokazana jest druga strona elementu flip-card. W JS niestety zastosowanie rotate nie daje takiego samego efektu.
.flip-card {
width: 550px;
height: 400px;
border-radius: 6px;
margin: 20% auto;
position: relative;
-webkit-perspective: 800px;
perspective: 800px;
}
.flip-card::before,
.flip-card::after {
content: "";
width: 100%;
height: 100%;
position: absolute;
background-color: transparent;
border-radius: 6px;
-webkit-box-sizing: border-box;
box-sizing: border-box;
border: 3px solid #171212;
-webkit-transition: .6s transform linear;
transition: .6s transform linear;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.flip-card::after {
background-image: url("../img/dominar-red.jpg");
background-size: cover;
-webkit-filter: brightness(40%);
filter: brightness(40%);
z-index: -1;
}
.flip-card:hover::after {
-webkit-transform: rotateY(180deg);
transform: rotateY(180deg);
}
.flip-card:hover .modelName p {
display: none;
}
.flip-card::before {
-webkit-transform: rotateY(180deg);
transform: rotateY(180deg);
}
.flip-card:hover::before {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
z-index: 100;
}
Kod JS:
let modelName = document.querySelector(".middle");
let flipCardAfter = document.querySelector(".flip-card", ":after");
let flipCardBefore = document.querySelector(".flip-card", ":before");
modelName.addEventListener("click", function () {
flipCardAfter.style.webkitTransform = "rotateY(180deg)";
flipCardBefore.style.webkitTransform = "rotate(360deg)";
});