Я хочу сделать игру памяти. Каков наилучший способ создания карт - PullRequest
0 голосов
/ 24 марта 2020

Итак, я хочу сделать игру на память с JS, HTML и CSS. Я хочу иметь возможность нажимать на карты, которые затем должны перевернуться с анимацией. Я не хочу создавать как 20 кнопок. Есть ли лучший способ создания карт с анимацией CSS. Я вроде умею создавать анимацию.

  .flip-card {
  background-color: transparent;
  width: 300px;
  height: 200px;
  border: 1px solid #f1f1f1;
  perspective: 1000px;
  /* Remove this if you don't want the 3D effect */
}


/* This container is needed to position the front and back side */

.flip-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  transition: transform 0.8s;
  transform-style: preserve-3d;
}


/* Do an horizontal flip when you move the mouse over the flip box container */

.flip-card:click .flip-card-inner {
  transform: rotateY(180deg);
}


/* Position the front and back side */

.flip-card-front,
.flip-card-back {
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backface-visibility: hidden;
  /* Safari */
  backface-visibility: hidden;
}


/* Style the front side (fallback if image is missing) */

.flip-card-front {
  background-color: #bbb;
  color: black;
}


/* Style the back side */

.flip-card-back {
  transform: rotateY(180deg);
<div class="flip-card">
  <div class="flip-card-inner">
    <div class="flip-card-front">
      <img src="frontpageofCard" alt="Avatar" style="width:300px;height:300px;">
    </div>
    <div class="flip-card-back">
      <img src="Backpage" alt="Avatar" style="width:300px;height:300px;">
    </div>
  </div>
</div>

Я хочу использовать JS для назначения случайных изображений на Backpage.

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вы можете создавать карты с JS, например:

var card = "<div class='flip-card'><div class='flip-card-inner'><div class='flip-card-front'><img src='frontpageofCard' alt='Avatar' style='width:300px;height:300px;'></div><div class='flip-card-back'><img src='Backpage' alt='Avatar' style='width:300px;height:300px;'></div></div></div>"

for (let i = 0; i < 20; i++) {
	document.querySelector("#container").innerHTML += card
}
 .flip-card {
  background-color: transparent;
  width: 300px;
  height: 200px;
  border: 1px solid #f1f1f1;
  perspective: 1000px;
  /* Remove this if you don't want the 3D effect */
}


/* This container is needed to position the front and back side */

.flip-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  transition: transform 0.8s;
  transform-style: preserve-3d;
}


/* Do an horizontal flip when you move the mouse over the flip box container */

.flip-card:click .flip-card-inner {
  transform: rotateY(180deg);
}


/* Position the front and back side */

.flip-card-front,
.flip-card-back {
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backface-visibility: hidden;
  /* Safari */
  backface-visibility: hidden;
}


/* Style the front side (fallback if image is missing) */

.flip-card-front {
  background-color: #bbb;
  color: black;
}


/* Style the back side */

.flip-card-back {
  transform: rotateY(180deg);
<div id="container">
</div>
1 голос
/ 26 марта 2020

Просто попробуйте использовать: активный псевдокласс вместо: нажмите

  .flip-card {
  background-color: transparent;
  width: 300px;
  height: 200px;
  border: 1px solid #f1f1f1;
  perspective: 1000px;
  /* Remove this if you don't want the 3D effect */
}


/* This container is needed to position the front and back side */

.flip-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  text-align: center;
  transition: transform 0.8s;
  transform-style: preserve-3d;
}


/* Do an horizontal flip when you move the mouse over the flip box container */

.flip-card:active .flip-card-inner {
  transform: rotateY(180deg);
}


/* Position the front and back side */

.flip-card-front,
.flip-card-back {
  position: absolute;
  width: 100%;
  height: 100%;
  -webkit-backface-visibility: hidden;
  /* Safari */
  backface-visibility: hidden;
}


/* Style the front side (fallback if image is missing) */

.flip-card-front {
  background-color: #bbb;
  color: black;
}


/* Style the back side */

.flip-card-back {
  transform: rotateY(180deg);
}
<div class="flip-card">
  <div class="flip-card-inner">
    <div class="flip-card-front">
      <img src="frontpageofCard" alt="Avatar-Front" style="width:300px;height:300px;">
    </div>
    <div class="flip-card-back">
      <img src="Backpage" alt="Avatar-Back" style="width:300px;height:300px;">
    </div>
  </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...