【问题标题】:Card flip not showing back. Front stays visible when flipped卡片翻转没有显示回来。翻转时正面保持可见
【发布时间】:2022-02-01 01:35:11
【问题描述】:

我正在尝试创建一个翻转卡片以最大化网页上的空间。当我切换 FlipCard 功能时,卡片会翻转但不显示背面,而正面仍然可见但被镜像。有谁知道为什么会这样?卡片正面由标题组成,背面是 UL。

感谢您的帮助和您的时间!

const card = document.getElementById("card")

card.addEventListener("click", flipCard);

function flipCard() {
  card.classList.toggle("flipCard");
}
.cards {
    background: linear-gradient(
    to bottom,
    rgba(52, 52, 52, 0.4),
    rgba(52, 52, 52, 0.1));
    backdrop-filter: blur(10px);
    border-radius: 10px;
    box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
    position: relative;
    transform-style: preserve-3d;
    transition: all 0.8s ease;
    z-index: 10;
    perspective: 1000px;
    width: 400px;
}


.card-front {
    position: absolute;
    width: 100%;
    height: 100%;
    text-align: center;
    backface-visibility: hidden;
    z-index: 0;
}

.card-back {
    position: absolute;
    width: 100%;
    height: 100%;
    transform: rotateY(180deg);
    backface-visibility: hidden;
    z-index: 0;
}

.flipCard {
    transform: rotateY(180deg);
}

.card.b {
    flex-direction: column;
}

.ul-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    font-size: 12px;
    align-items: center;
    justify-content: center;
    text-align: center;
    line-height: 1.2;
    padding: 3px;
    grid-gap: 0.5rem;
    position: relative;
}

.d {
    grid-column: 2;
    grid-row: 6;
    padding: 0 2rem;
}

.d li {
    font-family: 'Oswald', sans-serif;
    font-size: 1rem;
}
<div id="card" class="cards d">
            <div class="card-front">
                <h1>
                    This is the front!
                </h1>
            </div>
            <div class="card-back ul-grid">
                <ul><span class="text-secondary">SM.PINKY</span>
                <li><span class="text-alt">(1)</span> $1.50</li>
                <li><span class="text-alt">(6)</span> $8.50</li>
                <li><span class="text-alt">(12)</span> $16</li>
                </ul>
                <ul><span class="text-secondary">PINKY</span>
                <li><span class="text-alt">(1)</span> $1.50 </li>
                <li><span class="text-alt">(6)</span> $8.50 </li>
                <li><span class="text-alt">(12)</span> $16 </li>
                </ul>
                <ul><span class="text-secondary">FUZZY</span>
                <li><span class="text-alt">(1)</span> $2.00 </li>
                <li><span class="text-alt">(6)</span> $11.50</li>
                <li><span class="text-alt">(12)</span> $22</li>
                </ul>
                <ul><span class="text-secondary">HOPPER</span>
                <li><span class="text-alt">(1)</span> $2.50 </li>
                <li><span class="text-alt">(6)</span> $14.50</li>
                <li><span class="text-alt">(12)</span> $28</li>
                </ul>
                <ul><span class="text-secondary">SMALL</span>
                <li><span class="text-alt">(1)</span> $3.00 </li>
                <li><span class="text-alt">(6)</span> $17.50</li>
                <li><span class="text-alt">(12)</span> $34</li>
                </ul>
                <ul><span class="text-secondary">MEDIUM</span>
                <li><span class="text-alt">(1)</span> $3.50 </li>
                <li><span class="text-alt">(6)</span> $20.50</li>
                <li><span class="text-alt">(12)</span> $40</li>
                </ul>
                <ul><span class="text-secondary">LARGE</span>
                <li><span class="text-alt">(1)</span> $4.00 </li>
                <li><span class="text-alt">(6)</span> $23.50</li>
                <li><span class="text-alt">(12)</span> $46</li>
                </ul>
                <ul><span class="text-secondary">JUMBO</span>
                <li><span class="text-alt">(1)</span> $4.50 </li>
                <li><span class="text-alt">(6)</span> $26.50</li>
                <li><span class="text-alt">(12)</span> $52</li>
                </ul>  
            </div>
        </div>

【问题讨论】:

    标签: javascript html css


    【解决方案1】:

    我不知道为什么,但删除 backdrop-filter 使其工作。

    请阅读更多关于这个问题from this post

    您可以使用-webkit-backdrop-filter: blur(10px); 作为解决方法, 我已经更新了代码...

    const card = document.getElementById("card")
    
    card.addEventListener("click", flipCard);
    
    function flipCard() {
      card.classList.toggle("flipCard");
    }
    .cards {
        background: linear-gradient(
        to bottom,
        rgba(52, 52, 52, 0.4),
        rgba(52, 52, 52, 0.1));
        /*backdrop-filter: blur(10px);*/
        -webkit-backdrop-filter: blur(10px);
        border-radius: 10px;
        box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
        position: relative;
        transform-style: preserve-3d;
        transition: all 0.8s ease;
        z-index: 10;
        perspective: 1000px;
        width: 400px;
    }
    
    
    .card-front {
        position: absolute;
        width: 100%;
        height: 100%;
        text-align: center;
        backface-visibility: hidden;
        z-index: 0;
    }
    
    .card-back {
        position: absolute;
        width: 100%;
        height: 100%;
        transform: rotateY(180deg);
        backface-visibility: hidden;
        z-index: 0;
    }
    
    .flipCard {
        transform: rotateY(180deg);
    }
    
    .card.b {
        flex-direction: column;
    }
    
    .ul-grid {
        display: grid;
        grid-template-columns: repeat(4, 1fr);
        font-size: 12px;
        align-items: center;
        justify-content: center;
        text-align: center;
        line-height: 1.2;
        padding: 3px;
        grid-gap: 0.5rem;
        position: relative;
    }
    
    .d {
        grid-column: 2;
        grid-row: 6;
        padding: 0 2rem;
    }
    
    .d li {
        font-family: 'Oswald', sans-serif;
        font-size: 1rem;
    }
    <div id="card" class="cards d">
                <div class="card-front">
                    <h1>
                        This is the front!
                    </h1>
                </div>
                <div class="card-back ul-grid">
                    <ul><span class="text-secondary">SM.PINKY</span>
                    <li><span class="text-alt">(1)</span> $1.50</li>
                    <li><span class="text-alt">(6)</span> $8.50</li>
                    <li><span class="text-alt">(12)</span> $16</li>
                    </ul>
                    <ul><span class="text-secondary">PINKY</span>
                    <li><span class="text-alt">(1)</span> $1.50 </li>
                    <li><span class="text-alt">(6)</span> $8.50 </li>
                    <li><span class="text-alt">(12)</span> $16 </li>
                    </ul>
                    <ul><span class="text-secondary">FUZZY</span>
                    <li><span class="text-alt">(1)</span> $2.00 </li>
                    <li><span class="text-alt">(6)</span> $11.50</li>
                    <li><span class="text-alt">(12)</span> $22</li>
                    </ul>
                    <ul><span class="text-secondary">HOPPER</span>
                    <li><span class="text-alt">(1)</span> $2.50 </li>
                    <li><span class="text-alt">(6)</span> $14.50</li>
                    <li><span class="text-alt">(12)</span> $28</li>
                    </ul>
                    <ul><span class="text-secondary">SMALL</span>
                    <li><span class="text-alt">(1)</span> $3.00 </li>
                    <li><span class="text-alt">(6)</span> $17.50</li>
                    <li><span class="text-alt">(12)</span> $34</li>
                    </ul>
                    <ul><span class="text-secondary">MEDIUM</span>
                    <li><span class="text-alt">(1)</span> $3.50 </li>
                    <li><span class="text-alt">(6)</span> $20.50</li>
                    <li><span class="text-alt">(12)</span> $40</li>
                    </ul>
                    <ul><span class="text-secondary">LARGE</span>
                    <li><span class="text-alt">(1)</span> $4.00 </li>
                    <li><span class="text-alt">(6)</span> $23.50</li>
                    <li><span class="text-alt">(12)</span> $46</li>
                    </ul>
                    <ul><span class="text-secondary">JUMBO</span>
                    <li><span class="text-alt">(1)</span> $4.50 </li>
                    <li><span class="text-alt">(6)</span> $26.50</li>
                    <li><span class="text-alt">(12)</span> $52</li>
                    </ul>  
                </div>
            </div>

    【讨论】:

    • 就是这样!我很欣赏有关该问题的帖子的链接!
    • ???? 非常欢迎。
    【解决方案2】:

    可能不是 100% 有效,但这符合您的描述

    const card = document.getElementById("card")
    
    card.addEventListener("click", flipCard);
    
    function flipCard() {
      let cInner = card.querySelector('.card-flip-inner');
      let cfront = card.querySelector('.card-front');
      let cback = card.querySelector('.card-back');
      cInner.classList.toggle("flipped");
      cfront.classList.toggle("hidden-card");
      cback.classList.toggle("shown-card");
    }
    .cards {
      background: linear-gradient( to bottom, rgba(52, 52, 52, 0.4), rgba(52, 52, 52, 0.1));
      backdrop-filter: blur(10px);
      border-radius: 10px;
      box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
      transform-style: preserve-3d;
      z-index: 10;
      perspective: 1000px;
      width: 400px;
    }
    
    .card-flip-inner {
      position: relative;
      width: 100%;
      height: 100%;
      text-align: center;
      transition: all 0.8s ease;
      /*transition: transform 0.8s;*/
      transform-style: preserve-3d;
    }
    
    .flipped {
      transform: rotateY(180deg);
    }
    
    .card-front {
      position: absolute;
      width: 100%;
      height: 100%;
      text-align: center;
      backface-visibility: hidden;
      z-index: 0;
    }
    
    .card-back {
      position: absolute;
      width: 100%;
      height: 100%;
      transform: rotateY(180deg);
      backface-visibility: hidden;
      z-index: 0;
    }
    
    .flipCard {
      transform: rotateY(180deg);
    }
    
    .card.b {
      flex-direction: column;
    }
    
    .ul-grid {
      display: grid;
      grid-template-columns: repeat(4, 1fr);
      font-size: 12px;
      align-items: center;
      justify-content: center;
      text-align: center;
      line-height: 1.2;
      padding: 3px;
      grid-gap: 0.5rem;
      position: relative;
    }
    
    .d {
      grid-column: 2;
      grid-row: 6;
      padding: 0 2rem;
    }
    
    .d li {
      font-family: 'Oswald', sans-serif;
      font-size: 1rem;
    }
    
    .shown-card {
      visibiiity: visible;
      backface-visibility: hidden;
    }
    
    .hidden-card {
      visibiiity: visible;
      backface-visibility: hidden;
    }
    <div id="card" class="cards d">
      <div class="card-flip-inner">
        <div class="card-front shown-card">
          <h1>
            This is the front!
          </h1>
        </div>
        <div class="card-back ul-grid hidden-card">
          <ul><span class="text-secondary">SM.PINKY</span>
            <li><span class="text-alt">(1)</span> $1.50</li>
            <li><span class="text-alt">(6)</span> $8.50</li>
            <li><span class="text-alt">(12)</span> $16</li>
          </ul>
          <ul><span class="text-secondary">PINKY</span>
            <li><span class="text-alt">(1)</span> $1.50 </li>
            <li><span class="text-alt">(6)</span> $8.50 </li>
            <li><span class="text-alt">(12)</span> $16 </li>
          </ul>
          <ul><span class="text-secondary">FUZZY</span>
            <li><span class="text-alt">(1)</span> $2.00 </li>
            <li><span class="text-alt">(6)</span> $11.50</li>
            <li><span class="text-alt">(12)</span> $22</li>
          </ul>
          <ul><span class="text-secondary">HOPPER</span>
            <li><span class="text-alt">(1)</span> $2.50 </li>
            <li><span class="text-alt">(6)</span> $14.50</li>
            <li><span class="text-alt">(12)</span> $28</li>
          </ul>
          <ul><span class="text-secondary">SMALL</span>
            <li><span class="text-alt">(1)</span> $3.00 </li>
            <li><span class="text-alt">(6)</span> $17.50</li>
            <li><span class="text-alt">(12)</span> $34</li>
          </ul>
          <ul><span class="text-secondary">MEDIUM</span>
            <li><span class="text-alt">(1)</span> $3.50 </li>
            <li><span class="text-alt">(6)</span> $20.50</li>
            <li><span class="text-alt">(12)</span> $40</li>
          </ul>
          <ul><span class="text-secondary">LARGE</span>
            <li><span class="text-alt">(1)</span> $4.00 </li>
            <li><span class="text-alt">(6)</span> $23.50</li>
            <li><span class="text-alt">(12)</span> $46</li>
          </ul>
          <ul><span class="text-secondary">JUMBO</span>
            <li><span class="text-alt">(1)</span> $4.50 </li>
            <li><span class="text-alt">(6)</span> $26.50</li>
            <li><span class="text-alt">(12)</span> $52</li>
          </ul>
        </div>
      </div>
    </div>

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 2017-04-03
      • 1970-01-01
      • 2021-01-07
      • 2022-08-14
      • 2020-07-25
      • 2019-12-02
      • 1970-01-01
      • 2018-08-08
      相关资源
      最近更新 更多