如何让 CSS 变换(旋转和倾斜原点)不向右移动几个像素?
How can I keep my CSS transform (rotate & skew origin) from moving a few pixels to the right?
在下面的示例中,当您单击 div 时,它会旋转和倾斜,但看起来位置在此转换过程中向右移动了几个像素。
有没有办法强制它在转换过程中保持在左侧?我玩过 origin,但没能把它弄得恰到好处:
$('div.book').click(function() {
$(this).toggleClass('open');
});
div.bg {
background-color: #00adef;
display: inline-block
}
.book {
transition: all 2s;
width: 145px;
height: 200px;
background-color: #333;
-webkit-origin: left;
}
.book.open {
-webkit-transform: rotateY(-90deg) skewY(-45deg);
-webkit-transform-origin: 0 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='bg'>
<div class='book'>
</div>
</div>
您在 -webkit-transform-origin
中缺少 "transform"!
$('div.book').click(function() {
$(this).toggleClass('open');
});
div.bg {
background-color: #00adef;
display: inline-block
}
.book {
transition: all 2s;
width: 145px;
height: 200px;
background-color: #333;
-webkit-transform-origin: left;
}
.book.open {
-webkit-transform: rotateY(-90deg) skewY(-45deg);
-webkit-transform-origin: left;
transform-origin: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='bg'>
<div class='book'>
</div>
</div>
改变
transition: all 2s;
至:
transition: transform 2s;
因为 transition: all
还将您的原点从 (50%, 50%) 转换为 (0, 0)
$('div.book').click(function() {
$(this).toggleClass('open');
});
div.bg {
background-color: #00adef;
display: inline-block
}
.book {
/*transition: all 2s;*/
transition: transform 2s;
width: 145px;
height: 200px;
background-color: #333;
-webkit-origin: left;
}
.book.open {
-webkit-transform: rotateY(-90deg) skewY(-45deg);
-webkit-transform-origin: 0 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='bg'>
<div class='book'>
</div>
</div>
在下面的示例中,当您单击 div 时,它会旋转和倾斜,但看起来位置在此转换过程中向右移动了几个像素。
有没有办法强制它在转换过程中保持在左侧?我玩过 origin,但没能把它弄得恰到好处:
$('div.book').click(function() {
$(this).toggleClass('open');
});
div.bg {
background-color: #00adef;
display: inline-block
}
.book {
transition: all 2s;
width: 145px;
height: 200px;
background-color: #333;
-webkit-origin: left;
}
.book.open {
-webkit-transform: rotateY(-90deg) skewY(-45deg);
-webkit-transform-origin: 0 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='bg'>
<div class='book'>
</div>
</div>
您在 -webkit-transform-origin
中缺少 "transform"!
$('div.book').click(function() {
$(this).toggleClass('open');
});
div.bg {
background-color: #00adef;
display: inline-block
}
.book {
transition: all 2s;
width: 145px;
height: 200px;
background-color: #333;
-webkit-transform-origin: left;
}
.book.open {
-webkit-transform: rotateY(-90deg) skewY(-45deg);
-webkit-transform-origin: left;
transform-origin: left;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='bg'>
<div class='book'>
</div>
</div>
改变
transition: all 2s;
至:
transition: transform 2s;
因为 transition: all
还将您的原点从 (50%, 50%) 转换为 (0, 0)
$('div.book').click(function() {
$(this).toggleClass('open');
});
div.bg {
background-color: #00adef;
display: inline-block
}
.book {
/*transition: all 2s;*/
transition: transform 2s;
width: 145px;
height: 200px;
background-color: #333;
-webkit-origin: left;
}
.book.open {
-webkit-transform: rotateY(-90deg) skewY(-45deg);
-webkit-transform-origin: 0 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='bg'>
<div class='book'>
</div>
</div>