当我第一次悬停时,转换是正常的,但第二次时,转换变得奇怪,就好像透视:800px 在转换发生后开始起作用。
请还要告诉我如何设置以中心之外的边缘为轴心旋转。
我知道 transform-origin,但没有类似 transform-axis 的东西。
我希望当我悬停在这个元素上时,这些图像会像窗口一样打开。
我希望当我悬停在这个元素上时,这些图像会像窗口一样打开。
var left=document.getElementById("left");
var right=document.getElementById("right");
function curtain() {
left.style.transform="rotateY(70deg)";
right.style.transform="rotateY(-70deg)";
}
function back() {
left.style.transform="rotateY(0deg)";
right.style.transform="rotateY(0deg)";
}
#animate{
width: 400px;
height: 300px;
margin: auto;
position: relative;
perspective: 800px;
}
img {
width: 100%;
}
#left {
position:absolute;
top: 0;
right: 50%;
padding: 0;
margin: 0;
width: 50%;
transition: transform 0.5s;
}
#right {
position: absolute;
top: 0;
right: 0%;
padding: 0;
margin: 0;
width: 50%;
transition: transform 0.5s;
}
<html>
<head>
<link href="style/style.css" rel="stylesheet">
</head>
<body>
<div id="animate" onmouseover="curtain()" onmouseout="back()">
<div id="left"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Ariyunda.JPG/200px-Ariyunda.JPG"></div>
<div id="right"><img src="http://www.cs.cornell.edu/courses/cs3110/2009sp/hw/ps4/beach_original.png"></div>
</div>
<script src="script/script.js"></script>
</body>
</html>
#animate
时,将调用onmouseout
事件,但也会在将鼠标移出#left
和#right
时调用onmouseout
事件 - 当鼠标移动到其子元素之外时也会调用onmouseout
事件。如果您熟悉jQuery,则可以使用.mouseenter
和.mouseleave
。使用普通JavaScript实现相对较复杂。 - fzzleback()
中将"rotateY(0deg)"
更改为""
(空字符串),你的 JavaScript 解决方案可能会起作用。但这并不能解决它被多次调用的问题。 - fzzle