沿Y轴旋转'Card' 180度
Rotate 'Card' 180deg along Y axis
我已经完成了大部分工作(请参阅 https://jsfiddle.net/90ycrope/1/),但是第二个 div 中带有单词 'behind' 的内容始终可见。
我要实现的两个目标是:
正确的功能(后面的内容在后面可见,前面的内容在前面可见)
效率 - 我想代码有更简单的方法?
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 {
}
这是翻转动画的简约固定版本。以下是我所做的:
- 仅将高度、宽度应用于容器并向其添加
position: relative
。
- 前后元素相对于 box_holder 容器绝对定位,背景、颜色应用于这些子元素。
- 子元素的
backface-visibility
设置为隐藏。这是 键 属性 因为它防止元素的背面出现。
- 一开始前面的元素没有旋转但是后面的元素在Y轴上旋转了180度。这会将后面的元素发送到后面,并且由于上面提到的设置而变得隐藏。
- 当点击元素并应用 show_info class 时,背面元素的旋转无效(旋转回 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>
注意:使用无前缀库只是为了避免添加使代码膨胀的前缀版本。
我已经完成了大部分工作(请参阅 https://jsfiddle.net/90ycrope/1/),但是第二个 div 中带有单词 'behind' 的内容始终可见。
我要实现的两个目标是:
正确的功能(后面的内容在后面可见,前面的内容在前面可见)
效率 - 我想代码有更简单的方法?
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 {
}
这是翻转动画的简约固定版本。以下是我所做的:
- 仅将高度、宽度应用于容器并向其添加
position: relative
。 - 前后元素相对于 box_holder 容器绝对定位,背景、颜色应用于这些子元素。
- 子元素的
backface-visibility
设置为隐藏。这是 键 属性 因为它防止元素的背面出现。 - 一开始前面的元素没有旋转但是后面的元素在Y轴上旋转了180度。这会将后面的元素发送到后面,并且由于上面提到的设置而变得隐藏。
- 当点击元素并应用 show_info class 时,背面元素的旋转无效(旋转回 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>
注意:使用无前缀库只是为了避免添加使代码膨胀的前缀版本。