【发布时间】:2019-12-03 04:16:16
【问题描述】:
我想制作当有人将鼠标悬停在其上时向左和向右打开的小册子。
我使用transform-origin: 0% 和transform: rotateY(-180deg) 为小册子的左侧站点打开左侧站点(卡片红色和蓝色)。对于右侧,我当然使用transform-origin: 100% 和transform: rotateY(180deg) 打开正确的站点(卡绿色)。
但右侧的实际行为是,它应用transform-origin: 0% 并在小册子的左侧站点后面旋转(这就是为什么你看不到它,但它在那里)。
我不明白为什么transform-origin: 100% 不生效。
这里是代码:https://jsfiddle.net/eL6q3hp4/2/
.book-container {
height: 350px;
width: 250px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-perspective: 1000px;
-moz-perspective: 1000px;
perspective: 1000px;
}
.book-part {
height: auto;
width: auto;
position: absolute;
transform-style: preserve-3d;
top: 0;
left: 0;
}
.book-part > .card {
height: 350px;
width: 250px;
position: absolute;
transform-style: preserve-3d;
backface-visibility: hidden;
}
/* RIGHT SITE */
.right-part {
transform-origin: 0%;
}
.right-card {
transform: rotateY(-180deg);
}
.book-container:hover .right-part {
transform: rotateY(180deg);
transition: 0.7s;
transition-delay: 0.3s;
}
/* LEFT SITE */
.left-part {
transform-origin: 100%;
}
.left-card {
transform: rotateY(180deg);
}
.book-container:hover .left-part {
transform: rotateY(-180deg);
transition: 0.7s;
}
.middle-card {
background-color: blue;
}
.right-card {
background-color: green;
}
.left-card {
background-color: red;
}
.front-card {
background-color: yellow;
}
<div class="book-container">
<div class="book-part middle-part">
<div class="card middle-card"></div>
</div>
<div class="book-part right-part">
<div class="card right-card"></div>
</div>
<div class="book-part left-part">
<div class="card left-card"></div>
<div class="card front-card"></div>
</div>
</div>
【问题讨论】:
-
您介意我编辑您的问题以将代码直接放在问题中吗?
-
你可以做到,谢谢。
-
img标签不带图片是故意的吗? -
我的错误,把img标签想象成一个div。
-
您的元素宽度为 0,因此变换原点不会执行任何操作
标签: css css-transforms