如何在浏览器中一致地进行div翻转?

时间:2013-01-28 21:15:38

标签: javascript css flip

我正在尝试使用css和JQuery在水平面上进行div翻转。我在JSFiddle上发现了一些非常巧妙的代码,但我无法理解为什么它不适用于Firefox,但适用于Chrome和Safari(我目前只在OSX上测试过它)。

http://jsfiddle.net/TLCqu/2/

css如下:

body {
    background: #ccc;
}
.flip {
    -webkit-perspective: 800;
    width: 400px;
    height: 200px;
    position: relative;
    margin: 50px auto;
}
.flip .card.flipped {
    -webkit-transform: rotatey(-180deg);
}
.flip .card {
    width: 100%;
    height: 100%;
    -webkit-transform-style: preserve-3d;
    -webkit-transition: 0.5s;
}
.flip .card .face {
    width: 100%;
    height: 100%;
    position: absolute;
    -webkit-backface-visibility: hidden;
    z-index: 2;
    font-family: Georgia;
    font-size: 3em;
    text-align: center;
    line-height: 200px;
}
.flip .card .front {
    position: absolute;
    z-index: 1;
    background: black;
    color: white;
    cursor: pointer;
}
.flip .card .back {
    -webkit-transform: rotatey(-180deg);
    background: blue;
    background: white;
    color: black;
    cursor: pointer;
}

我在使用-moz-transform: rotateY(-180deg);之后添加了-webkit-transform:。这有使文本反转的奇怪效果,但不是div。我不确定webkit中有什么用,或者我应该改变什么。

2 个答案:

答案 0 :(得分:1)

对于mozilla,您需要使用-moz-。这是CSS的更新版本:

body {
    background: #ccc;
}
.flip {
    -webkit-perspective: 800;
    -moz-perspective: 800;
    width: 400px;
    height: 200px;
    position: relative;
    margin: 50px auto;
}
.flip .card.flipped {
    -webkit-transform: rotatey(-180deg);
    -moz-transform: rotatey(-180deg);
}
.flip .card {
    width: 100%;
    height: 100%;
    -webkit-transform-style: preserve-3d;
    -webkit-transition: 0.5s;
    -moz-transform-style: preserve-3d;
    -moz-transition: 0.5s;
}
.flip .card .face {
    width: 100%;
    height: 100%;
    position: absolute;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    z-index: 2;
    font-family: Georgia;
    font-size: 3em;
    text-align: center;
    line-height: 200px;
}
.flip .card .front {
    position: absolute;
    z-index: 1;
    background: black;
    color: white;
    cursor: pointer;
}
.flip .card .back {
    -webkit-transform: rotatey(-180deg);
    -moz-transform: rotatey(-180deg);
    background: blue;
    background: white;
    color: black;
    cursor: pointer;
}

样本: http://jsfiddle.net/TLCqu/3/

希望这有帮助!

答案 1 :(得分:0)

它不适用于Firefox,因为-webkit仅适用于webkit浏览器。 Firefox使用gecko,你需要为mozilla支持添加-mozilla前缀。

查看caniuse.com以获取您正在使用的功能的浏览器支持列表。许多CSS 3d变换仍然是非常实验性的。