围绕垂直轴旋转45度元素

时间:2017-03-16 12:46:44

标签: css rotation css-transforms

我有一系列元素,如下图所示:

enter image description here

它们向一侧旋转45度(内部-45度内的内容,以保持直立)。

现在我想围绕垂直轴旋转每个元素,穿过元素的中心。旋转Y不起作用,因为它是45度角。

你会怎么做呢?

3 个答案:

答案 0 :(得分:9)

诀窍是在45度旋转之前设置此旋转:

.container {
    width: 200px;
    height: 200px;
    margin: 100px;
    border: solid 1px;
    transform: rotate(45deg);
    transition: transform 2s;
}


.container:hover {
    transform:  rotateY(180deg) rotate(45deg); /* notice the order */
}
.inner {
    margin: 50px;
    transform: rotate(-45deg);
}
<div class="container">
<div class="inner">INNER</div>
</div>

答案 1 :(得分:2)

这就是我解释这个问题的方法。我对这个演示不满意,因为它需要大量的结构。 但也许你可以验证这种行为?

基本上我使用包装器在y轴上旋转。 将变换原点设置为中心是关键。 附加包装器用于防止鼠标悬停时闪烁。

https://jsfiddle.net/nm59mqky/1/

props

答案 2 :(得分:0)

我不确切知道你的代码是什么样的,但对于一个简单的旋转瓷砖(div),我会尝试这样的事情:

&#13;
&#13;
@keyframes rotate-vertical {
	0% {
		transform: rotate3d(0, 1, 0, 0deg);
	}
	100% {
		transform: rotate3d(0, 1, 0, 360deg);
	}
}

body {
  padding: 20px;
}

.tile {
  width: 65px;
  height: 65px;
  background-color: red;
  text-align: center;
  transform: rotate3d(0, 0, 1, 45deg);
  display: inline-block;
}

.turndiv {
  width: 65px;
}

.turndiv:hover {
	animation: rotate-vertical 1.1s ease-out;
 }
&#13;
<div class="turndiv">
  <div class="tile">
  </div>
</div>
&#13;
&#13;
&#13;

您可以使用transform: rotate3d();并且没有父div,但为了保持简单,我就这样做了。