gpt4 book ai didi

html - 立方体旋转与CSS

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:29 25 4
gpt4 key购买 nike

我在旋转立方体时遇到一点问题。我想让它跨浏览器,所以我正在改变立方体的每一面。当我从左到右旋转时,边在所有浏览器 Chrome、Firefox 和 IE 上都完美对齐,但是当立方体从上到下旋转时,边仅在 Chrome 上对齐(如果我在 Chrome 上使动画变慢,则边是与其他浏览器一样损坏,所以我认为正常工作是一个错误 :D)。我在 jsfiddle 上提供了一个示例:

http://jsfiddle.net/0n9bnxe5/

HTML:

<div class="flip-card-content">
<div class="flip-card-side-a" style="background:red">
FRONT
</div>
<div class="flip-card-side-b" style="background:green">
BACK
</div>
<div class="flip-card-side-c" style="background:aqua">
LEFT
</div>
</div>
<button id="button">Flip-top</button>
<button id="button2">Filp-right</button>

CSS:

.flip-card-content {
position: relative;
margin: 100px;
width: 200px;
height: 200px;
transform-style: preserve-3d;
perspective:1000px;
}

.flip-card-side-a,
.flip-card-side-b,
.flip-card-side-c{
width: 100%;
position: absolute;
height: 100%;
backface-visibility: hidden;
transform-origin:50% 50% 0px;
transition: all .5s ease-in-out;
}

.flip-card-side-a {
transform: rotateY(0deg) translateZ(100px);
z-index: 1;
}
.flip-card-side-b {
transform: rotateX(90deg) translateZ(100px);
}
.flip-card-side-c {
transform: rotateY(-90deg) translateZ(100px);
}

.flip .flip-card-side-a {

transform: rotateX(-90deg) translateZ(100px);
}
.flip .flip-card-side-b {
display:block;
transform: rotateY(0deg) translateZ(100px);
z-index: 1;
}
.flip-right .flip-card-side-a {
transform: rotateY(90deg) translateZ(100px);
}
.flip-

right .flip-card-side-b {
display:none;
}
.flip-right .flip-card-side-c {
transform: rotateY(0deg) translateZ(100px);
z-index:1;
}

JQUERY:

$("#button").on('click', function(){
$(".flip-card-content").removeClass("flip-right");
setTimeout(function(){
$(".flip-card-content").toggleClass("flip");
},500);
});

$("#button2").on('click', function(){
$(".flip-card-content").removeClass("flip");
setTimeout(function(){
$(".flip-card-content").toggleClass("flip-right");
},500);

});

欢迎任何建议!

最佳答案

您的 translateZ 没有按照您期望的方式工作。看看我如何在此处定位立方体上的面孔并将其与您自己的面孔进行比较。最终,我发现旋转立方体等元素的最简单方法是定位所有元素,然后只旋转容器。

同样为了很好地缩放字体、图像等。最好让正面保持自然大小而不是放大(即在 3d 空间中向后移动所有内容):

.box {
height: 100%;
position: relative;
transform: rotateX(0deg);
transform-origin: 50% 50% -100px;
transform-style: preserve-3d;
transition: all 1s;
width: 100%;
}

.box--rotate-top {
transform: rotateX(-90deg);
}

.box--rotate-left {
transform: rotateY(90deg);
}

.box__face {
backface-visibility: hidden;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}

.box__face--front {
background: #f90;
}

.box__face--top {
background: #369;
transform: rotateX(90deg) translateZ(200px);
transform-origin: 0 100% 0;
}

.box__face--left {
background: #867;
transform: rotateY(-90deg) translateZ(200px);
transform-origin: 100% 0 0;
}

Here is the fiddle .

关于html - 立方体旋转与CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29751425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com