【问题标题】:Rotate 'Card' 180deg along Y axis沿 Y 轴将“卡片”旋转 180 度
【发布时间】:2015-10-28 17:25:48
【问题描述】:

我大部分时间都在工作(请参阅https://jsfiddle.net/90ycrope/1/),但是第二个 div 中带有“后面”一词的内容始终可见。

我正在努力实现的两个目标是:

  1. 正确功能(后面内容可见后面,前面内容前面可见)

  2. 效率 - 我想代码有一个更简单的方法?

HTML:

<div class="box_holder">
<div class="front">Some content here</div>
<div class="back">Behind</div>
</div>

jQuery:

$(document).ready(function () {
  $('.box_holder').click(function () {
    $(this).toggleClass('show_info')
  });
});

CSS:

.box_holder {
    display: block;
    position: relative;
    float: left;
    left: 8px;
    top: 8px;
    width: 240px;
    height: 335px;
    text-align: center;
    font-family:'ProximaNova', 'Helvetica Neue', Helvetica, Arial, sans-serif;
    font-weight: normal;
    background: #C3C3C3;
    color: #3b3b3b;
    font-size: 1em;
    line-height: 1.32;
    margin-right: 16px;
    margin-bottom: 32px;
    transition: 1s;
}
.box_holder.show_info {
    -ms-transform: rotateY(180deg);
    -webkit-transform: rotateY(180deg);
    transform: rotateY(180deg);
}
.box_holder.show_info .front {
    -ms-transform: rotateY(180deg);
    -webkit-transform: rotateY(180deg);
    transform: rotateY(180deg);
}
.box_holder.show_info .back {
    -ms-transform: rotateY(180deg);
    -webkit-transform: rotateY(180deg);
    transform: rotateY(180deg);
}
.front {
    backface-visibility:hidden;
    transition:1s;
}
.back {
    transition:1s;
}
.show_info .back {
}

【问题讨论】:

    标签: jquery css css-transforms


    【解决方案1】:

    这里是翻转动画的简约和固定版本。以下是我所做的:

    • 仅将高度、宽度应用到容器并添加position: relative
    • 前后元素相对于 box_holder 容器绝对定位,背景、颜色应用于这些子元素。
    • 子元素的backface-visibility 设置为隐藏。这是关键属性,因为它可以防止元素的背面出现。
    • 最初,前部元素不旋转,但后部元素在 Y 轴上旋转了 180 度。这会将后面的元素发送到后面,并且由于上述设置而被隐藏。
    • 当单击元素并应用 show_info 类时,背面元素的旋转无效(旋转回 0 度),而正面则反向旋转 180 度。这两者一起使容器看起来好像被翻转了。

    $(document).ready(function() {
      $('.box_holder').click(function() {
        $(this).toggleClass('show_info')
      });
    });
    .box_holder {
      position: relative;
      width: 240px;
      height: 335px;
    }
    .box_holder .front, .box_holder .back {
      position: absolute;
      top: 0px;
      left: 0px;
      height: 100%;
      width: 100%;
      text-align: center;
      background: #C3C3C3;
      color: #3b3b3b;
      transition: 1s;
      backface-visibility: hidden;
    }
    .box_holder .back {
      transform: rotateY(180deg);
    }
    .box_holder.show_info .back {
      transform: rotateY(0deg);
    }
    .box_holder.show_info .front {
      transform: rotateY(-180deg);
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>
    <div class="box_holder">
      <div class="front">Some content here</div>
      <div class="back">Behind</div>
    </div>

    注意:使用无前缀库只是为了避免添加会导致代码膨胀的前缀版本。

    【讨论】:

    猜你喜欢
    • 2017-04-01
    • 2011-03-29
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多