【问题标题】:CSS transition and transform-style not working on mobileCSS 过渡和变换样式不适用于移动设备
【发布时间】:2019-12-23 03:44:51
【问题描述】:

我已经成功地让两个图像在悬停时像卡片一样翻转。使用过渡和变换样式。它适用于移动设备(iPhone;chrome 和 safari)。我究竟做错了什么?非常感谢任何指导。

我已经查看了 StackOverflow 上以前的帖子,但我发现的内容对我的情况没有帮助。

<div class="flip-box">
    <div class="flip-box-inner">
        <div class="flip-box-front">
            <img src="./resources/images/green.jpg" alt="" style="width:421px;height:552px">
        </div>
        <div class="flip-box-back">
            <img src="./resources/images/brown.jpg" alt="" style="width:421px;height:552px">
        </div>
    </div>
</div>
.flip-box {
  background-color: transparent;
  width: 421px;
  height: 552px;
  border: 0px;
  -webkit-perspective: 1000px;
  -moz-perspective: 1000px;
  -ms-perspective: 1000px;
  perspective: 1000px;
}

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

.flip-box:hover .flip-box-inner {
  -webkit-transform: rotateY(180deg);
  -moz-transform: rotateY(180deg);
  -o-transform: rotateY(180deg);
  -ms-transform: rotateY(180deg);
  transform: rotateY(180deg);
  transform-style: preserve-3d;
}

.flip-box-front, .flip-box-back {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  -moz-backface-visibility: hidden;
  -o-backface-visibility: hidden;
  -ms-backface-visibility: hidden;
}

.flip-box-front {
  transform-style: preserve-3d;
}

.flip-box-back {
  -webkit-transform: rotateY(180deg);
  -moz-transform: rotateY(180deg);
  -o-transform: rotateY(180deg);
  -ms-transform: rotateY(180deg);
  transform: rotateY(180deg);
  transform-style: preserve-3d;
}

我预计卡片会在移动设备上来回翻转,但它只转换一次。

【问题讨论】:

  • 您如何在移动设备上测试悬停?因为悬停标识鼠标悬停。在移动设备中,这种操作有更好的选择器
  • @AlyfMendonça 我正在手机上的浏览器中进行测试。我目前不知道其他选择器。你能建议从哪里开始吗?谢谢。
  • 当然。你什么时候想在手机上做动画?当用户点击卡片时?如果是这种情况,您也可以尝试使用:focus。这里有更多关于 css 选择器的内容。 w3schools.com/cssref/css_selectors.asp
  • 可能导致问题的另一件事是:在移动设备中,当您传递一个元素时,它只会在您单击另一个元素时失去悬停。在桌面上,当悬停被移除时更容易注意到。也许在这种情况下,理想的做法是将完整动画置于悬停状态(无需等待用户移动鼠标来取消点击卡片)
  • @AlyfMendonça 感谢您让我看到焦点选择器,让我更深入地挖掘。万事如意

标签: css transform transition


【解决方案1】:

不回答直接问题,但不妨试试DavidWalsh.name 的 CSS(带前缀)。

/* entire container, keeps perspective */
.flip-box {
  -webkit-perspective: 1000px;
          perspective: 1000px;
}
  /* flip the pane when hovered */
  .flip-box-inner:hover .flipper, .flip-box-inner.hover .flipper {
    -webkit-transform: rotateY(180deg);
            transform: rotateY(180deg);
  }

.flip-box, .flip-box-front, .flip-box-back {
  width: 421px;
  height: 552px;
}

/* flip speed goes here */
.flip-box-inner {
  -webkit-transition: 0.6s;
  transition: 0.6s;
  -webkit-transform-style: preserve-3d;
          transform-style: preserve-3d;

  position: relative;
}

/* hide back of pane during swap */
.flip-box-front, .flip-box-back {
  -webkit-backface-visibility: hidden;
          backface-visibility: hidden;

  position: absolute;
  top: 0;
  left: 0;
}

/* front pane, placed above back */
.flip-box-front {
  z-index: 2;
  /* for firefox 31 */
  -webkit-transform: rotateY(0deg);
          transform: rotateY(0deg);
}

/* back, initially hidden pane */
.flip-box-back {
  -webkit-transform: rotateY(180deg);
          transform: rotateY(180deg);
}

【讨论】:

  • 感谢分享克里斯。我更新了 CSS,它仍然只从 image1 转换到 image2 一次,然后卡在 image2 上。
  • 克里斯,您通过指向 David Walsh 帖子的链接引导了我。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-11-27
  • 2016-09-30
  • 2016-12-03
  • 2014-11-11
  • 2021-08-09
  • 1970-01-01
  • 2021-08-22
  • 2021-04-09
相关资源
最近更新 更多