Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I rotate element with javascript like flip card

I have a problem with css rotate element from front to back with javascript. But I can’t understand what is my mistake.

This is my basic HTML code. There is nothing wrong thing in here, but I don’t know how rotate element works.

I want to rotate from front to back but it doesn’t work. I want to create card that can rotate from front to back. When I want to click card, it should rotate around itself. But I can’t do it.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Code

const game = document.querySelector(".game");

const nums = [];

var generateNumber = () => {
  for (i = 1; i <= 16; i++) {
    nums.push(Math.floor(Math.random() * 10));
  }
}

function displayNumbers() {
  generateNumber();
  for (let i of nums) {
    const card = `<div class="card" onclick="flipCard(this)">
                    <div class="front">
                      <img src="/images/qmark.jpg" width="50px">
                    </div>
                    <div class="back">
                      <h2>${i}</h2>
                    </div>
                  </div>`
    game.insertAdjacentHTML("beforeend", card);
  }
}

displayNumbers();

function flipCard(elm) {
  elm.classList.toggle("card-flip")
}
.card {
  border: 1px solid black;
  width: 100px;
  height: 150px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  background-color: #444;
  transition: transform 0.8s;
  position: relative;
}

.card:hover {
  background-color: #777;
}

.card-flip {
  transition: 0.6s ease-in;
  transform: rotateY(180deg);
}

.back,
.front {
  position: absolute;
  backface-visibility: hidden;
}

.back {
  transform: rotateY(180deg);
}
<div class="contain">
  <header>
    <h1>Card Game</h1>
    <button type="button" id="reset">Reset</button>
  </header>
  <div class="game"></div>
</div>

>Solution :

You have to create the back and the front of the card, then flip the container

const button = document.querySelector(".btn-rotate");
const card = document.querySelector(".card");

button.addEventListener("click", function() {

if (card.className === "card back") {
        card.className = "card front";
  } else {
    card.className = "card back";
  }
});
.card {
  height: 160px;
  width: 100px;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 0.6s;
}

.card .front,
.card .back {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 1px solid black;
  border-radius: 8px;
  backface-visibility: hidden;
}

.card.back {
  transform: rotateY(180deg);
}

.card .back {
  transform: rotateY(180deg);
}

.card .front {
  background-color: black;
  color: white;
}

.card .back {
  background-color: white;
  color: black;
}
<div class="card front">
  <div class="front">Front</div>
  <div class="back">Back</div>
</div>

<br/>

<button class="btn-rotate">Flip</button>
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading