Safari CSS проблема (Z-индекс? Преобразовать?) - PullRequest
1 голос
/ 09 мая 2020

Я борюсь с этим около недели, но не чувствую себя близким к тому, чтобы это исправить. Итак, я впервые прихожу к Stack Overflow, привет!

Я создал изящный маленький селектор суммы карты, который позволяет пользователям выбирать карту визуально. Если вы хотите увидеть его в действии, , пожалуйста, посмотрите мой CodePen!

Он отлично работает в Chrome, но когда я открываю его в Safari, анимация тени и z-index, кажется, нужно время, чтобы наверстать упущенное.

Я пробовал добавить ниже к CSS, но безрезультатно.

transform: translate3d(0, 0, 0);

-webkit-transform: translate3d(0, 0, 0);

Буду признателен за любую помощь!

ReactJS

const { useState } = React;

function CardAmount(props) {
  const cardAmounts = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  const [cardAmount, setCardAmount] = useState(1);

  function cardClick(e) {
    const amount = Number.parseInt(e.target.id) + 1;
    if (amount !== cardAmount) {
      setCardAmount(amount);
    }
  }

  function cardvCards(num) {
    if (num === 0) {
      return <p>card</p>;
    } else {
      return <p>cards</p>;
    }
  }

  function animateCard(cardNumber) {
    if (cardNumber < cardAmount) {
      return "FrontFacing";
    } else {
      return "BackFacing";
    }
  }

  //makeCards
  function makeCards() {
    return cardAmounts.map((d, i) => {
      return (
        <div className={animateCard(i)} key={"card_" + i}>
          <div className="cardFront" id={i} onMouseEnter={cardClick}>
            <div className="borderbox">
              <h1>{d}</h1>
              {cardvCards(i)}
            </div>
          </div>
          <div className="cardBack" id={i} onMouseEnter={cardClick}></div>
        </div>
      );
    });
  }

  return (
    <div className="CardChoice">
      <div className="cardAmountDisplay">{makeCards()}</div>
    </div>
  );
}

ReactDOM.render(<CardAmount />, document.getElementById("app"));

CSS

#app {
  background-color: rgb(85, 26, 122);
  width: 100vw;
  height: 100vh;
}
h1 {
  text-align: center;
}
p {
  text-align: center;
}
.CardChoice {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 180px;
}
.cardAmountDisplay {
  display: flex;
  position: relative;
}

.FrontFacing,
.BackFacing {
  position: absolute;
  background-color: white;
  border: 1px solid #d4af37;
  border-radius: 10px;
  margin: 5px;
  height: 165px;
  width: 115px;
  transition: 750ms;
  -webkit-transition: 750ms;
  -moz-transition: 750ms;
  -o-transition: 750ms;
  transform-style: preserve-3d;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -o-transform-style: preserve-3d;
  box-shadow: -8px 2px 8px rgba(0, 0, 0, 0.5);
  transform: translate3d(0, 0, 0);
  -webkit-transform: translate3d(0, 0, 0);
}

.BackFacing {
  transform: rotateY(-180deg);
  -webkit-transform: rotateY(-180deg);
  -moz-transform: rotateY(-180deg);
  -o-transform: rotateY(-180deg);
}

.cardFront,
.cardBack {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 10px;
  background-color: white;
  transform: translate3d(0, 0, 0);
  -webkit-transform: translate3d(0, 0, 0);
}

.cardFront {
  display: flex;
  justify-content: center;
  align-items: center;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -o-backface-visibility: hidden;
}

.borderbox {
  background-color: white;
  width: 95%;
  height: 95%;
  border: 1px solid #d4af37;
  border-radius: 10px;
  margin-left: 1px;
  pointer-events: none;
  transform: translate3d(0, 0, 0);
  -webkit-transform: translate3d(0, 0, 0);
}

.cardFront h1 {
  font-size: 80px;
  color: #d4af37;
  text-shadow: 1px 0px rgb(0, 0, 0), -1px 0px rgb(0, 0, 0), 0px 1px rgb(0, 0, 0),
    0px -1px rgb(0, 0, 0);
  margin-top: 15px;
  margin-bottom: 0px;
  pointer-events: none;
  transform: translate3d(0, 0, 0);
  -webkit-transform: translate3d(0, 0, 0);
}

.cardFront p {
  font-size: 16px;
  font-weight: 600;
  color: #d4af37;
  text-transform: uppercase;
  pointer-events: none;
  transform: translate3d(0, 0, 0);
  -webkit-transform: translate3d(0, 0, 0);
}

.cardBack {
  transform: rotateY(-180deg);
  -webkit-transform: rotateY(-180deg);
  -moz-transform: rotateY(-180deg);
  -o-transform: rotateY(-180deg);
}

.FrontFacing:nth-child(1) {
  margin-left: -280px;
  z-index: 1;
}

.FrontFacing:nth-child(2) {
  margin-left: -240px;
  z-index: 2;
}

.FrontFacing:nth-child(3) {
  margin-left: -200px;
  z-index: 3;
}

.FrontFacing:nth-child(4) {
  margin-left: -160px;
  z-index: 4;
}

.FrontFacing:nth-child(5) {
  margin-left: -120px;
  z-index: 5;
}

.FrontFacing:nth-child(6) {
  margin-left: -80px;
  z-index: 6;
}

.FrontFacing:nth-child(7) {
  margin-left: -40px;
  z-index: 7;
}

.FrontFacing:nth-child(8) {
  margin-left: 0px;
  z-index: 8;
}

.FrontFacing:nth-child(9) {
  margin-left: 40px;
  z-index: 9;
}

.FrontFacing:nth-child(10) {
  margin-left: 80px;
  z-index: 10;
}

.BackFacing:nth-child(2) {
  margin-left: -140px;
  z-index: 9;
}

.BackFacing:nth-child(3) {
  margin-left: -100px;
  z-index: 8;
}

.BackFacing:nth-child(4) {
  margin-left: -60px;
  z-index: 7;
}

.BackFacing:nth-child(5) {
  margin-left: -20px;
  z-index: 6;
}

.BackFacing:nth-child(6) {
  margin-left: 20px;
  z-index: 5;
}

.BackFacing:nth-child(7) {
  margin-left: 60px;
  z-index: 4;
}

.BackFacing:nth-child(8) {
  margin-left: 100px;
  z-index: 3;
}

.BackFacing:nth-child(9) {
  margin-left: 140px;
  z-index: 2;
}

.BackFacing:nth-child(10) {
  margin-left: 180px;
  z-index: 1;
}
...