例如,你div有一个矩形阴影。旋转矩形会旋转矩形阴影的方向,这会导致问题,因为矩形的阴影应该给出照明的错觉。
示例: jsfiddle
div {
width: 50px;
height: 50px;
margin: 20px;
box-shadow: 10px 10px 10px #000;
display: inline-block;
}
#box1 {
background-color: #b00;
}
#box2 {
background-color: #0b0;
transform: rotate(30deg);
}
#box3 {
background-color: #00b;
transform: rotate(60deg);
}
#box4 {
background-color: #b0b;
transform: rotate(90deg);
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
#box6 {
background-color: #0bb;
animation-name: spin;
animation-duration: 2s;
animation-iteration-count: infinite;
}
<div id="box1"></div>
<div id="box2"></div>
<div id="box3"></div>
<div id="box4"></div>
<div id="box6"></div>
解决这个问题的答案应该是这样的:
我怎样才能旋转div并保持它的矩形阴影在同一方向?
解决方案应该只是 - CSS...


在旋转过程中保持阴影矩形的偏移方向一致是使用
CSS-transforms.这种方法依赖于变换原点实际上被变换移动的事实。
这意味着当在同一元素上设置多个变换时,每个变换的坐标系都会更改以匹配之前的坐标系。
在下面的例子中,蓝色元素是一个伪元素,阴影是一个元素
div:transition伪元素的属性说明(请参见以下代码片段来说明步骤):
rotate(-360deg)- 父元素旋转计数器使伪元素静态translate (-10px, -10px)- 移动伪元素以使阴影偏移rotate(360deg), 伪元素旋转方向与父元素相同要查看所有元素,请打开“整页”片段
来自 @web-tiki贡献者的答案的松散翻译 。
我们将把正方形的大小和位置设置到父块中,让伪元素继承。让我们稍微移动“块阴影”,为其添加模糊(阴影模仿)并旋转伪元素。
您还可以在动画帧内整合矩形阴影的方向:
来自成员 @G-Cyrillus的答案的松散翻译 。