CSS 翻转卡片 - Chrome 中的错误
CSS Flip Card - Bug in Chrome
我有一张CSS翻页卡,这里已经设置为jsFiddle:
https://jsfiddle.net/kwudsgfw/
这在 FireFox、MS Edge 甚至 IE 中都按预期工作,但在 Chrome(和基于 chrome 的浏览器,如 Opera)中存在问题。
在 Chrome 中,翻转卡片正面的显示似乎存在问题,直到用户将鼠标移出卡片,偶尔在将卡片翻转回正面未显示。
我应该提到的是,翻盖上的不透明度变化是作为解决上一个 Chrome 问题的解决方案添加的,其中翻盖正面的 Canvas 元素不符合"backface-visibility: hidden" 设置。
我在这里做错了什么,或者如果没有,有人知道解决方法吗?
为了完整起见,Fiddle 中的代码如下:
HTML
<div class="widget " style="height: 300px;">
<div class="flipper">
<div class="front anim">
<div style="width: 90%; margin: auto; position:relative;">
<div style="text-align: center; width: 100%;">
<h1>Front</h1>
<p>
Lorem Ipsum and all that jaz
</p>
</div>
</div>
</div>
<div class="back anim">
<div style="height: 299px; width: 100%; margin: auto;">
<div style="text-align: center; width: 100%;">
<h1>Back</h1>
</div>
<table>
<tbody>
<tr>
<th>Value 1</th>
<td>798</td>
</tr>
<tr>
<th>Value 2</th>
<td>663</td>
</tr>
<tr>
<th>Value 3</th>
<td>493</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
CSS
.flipper {
position: relative;
}
.anim {
width: 100%;
height: 100%;
transition: all .5s;
backface-visibility: hidden;
position: absolute;
top: 0px;
left: 0px;
}
.back {
transform: rotateY(-180deg);
}
.flipper-click .front {
opacity: 0;
transform: rotateY(-180deg);
}
.flipper-click .back {
z-index: 2;
transform: rotateY(0deg);
}
.widget {
width: 300px;
height: 0px;
overflow: hidden;
border: 1px solid white;
border-radius: 5px;
padding: 3px;
margin-left: auto;
margin-right: auto;
margin-top: 2px;
float: none;
color: #000;
background-color: #aaa;
}
.widget:hover {
background-color: #999;
}
JavaScript
$(".widget").click(function () {
var $flipper = $(this).find(".flipper");
$flipper.toggleClass("flipper-click");
});
也在 parent 上应用 backface-visibility:hidden
:
我有一张CSS翻页卡,这里已经设置为jsFiddle:
https://jsfiddle.net/kwudsgfw/
这在 FireFox、MS Edge 甚至 IE 中都按预期工作,但在 Chrome(和基于 chrome 的浏览器,如 Opera)中存在问题。
在 Chrome 中,翻转卡片正面的显示似乎存在问题,直到用户将鼠标移出卡片,偶尔在将卡片翻转回正面未显示。
我应该提到的是,翻盖上的不透明度变化是作为解决上一个 Chrome 问题的解决方案添加的,其中翻盖正面的 Canvas 元素不符合"backface-visibility: hidden" 设置。
我在这里做错了什么,或者如果没有,有人知道解决方法吗?
为了完整起见,Fiddle 中的代码如下:
HTML
<div class="widget " style="height: 300px;">
<div class="flipper">
<div class="front anim">
<div style="width: 90%; margin: auto; position:relative;">
<div style="text-align: center; width: 100%;">
<h1>Front</h1>
<p>
Lorem Ipsum and all that jaz
</p>
</div>
</div>
</div>
<div class="back anim">
<div style="height: 299px; width: 100%; margin: auto;">
<div style="text-align: center; width: 100%;">
<h1>Back</h1>
</div>
<table>
<tbody>
<tr>
<th>Value 1</th>
<td>798</td>
</tr>
<tr>
<th>Value 2</th>
<td>663</td>
</tr>
<tr>
<th>Value 3</th>
<td>493</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
CSS
.flipper {
position: relative;
}
.anim {
width: 100%;
height: 100%;
transition: all .5s;
backface-visibility: hidden;
position: absolute;
top: 0px;
left: 0px;
}
.back {
transform: rotateY(-180deg);
}
.flipper-click .front {
opacity: 0;
transform: rotateY(-180deg);
}
.flipper-click .back {
z-index: 2;
transform: rotateY(0deg);
}
.widget {
width: 300px;
height: 0px;
overflow: hidden;
border: 1px solid white;
border-radius: 5px;
padding: 3px;
margin-left: auto;
margin-right: auto;
margin-top: 2px;
float: none;
color: #000;
background-color: #aaa;
}
.widget:hover {
background-color: #999;
}
JavaScript
$(".widget").click(function () {
var $flipper = $(this).find(".flipper");
$flipper.toggleClass("flipper-click");
});
也在 parent 上应用 backface-visibility:hidden
: