css3 3D变换

时间:2016-12-12 02:48:00

标签: css css3 transform

我有一个三角形,我需要它绕左下角三角形旋转360度。我需要修复这一点,只需要三角形围绕它旋转。

这是我的代码

chars = " abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_"

for char in chars:
    print(char, (chars.index(char)+3)%4 * 90)
figure {
  background-color:#000;
	position: relative;
	overflow:hidden;
	margin: 20px 1%;
	height: 200px;
	text-align: center;
	cursor: pointer;
}


.icons {
	position: absolute;
	top:0;
	left:20%;
	width: 50%;
	height: 50%;
	background: url("http://imgh.us/triangle_6.svg") no-repeat center center;
	background-size: 100% 100%;
	content: '';
	-webkit-transition: -webkit-transform 0.45s;
	transition: transform 0.45s;
	-webkit-transform: rotate3d(0,0,1,0deg);
	transform: rotate3d(0,0,1,0deg);
	-webkit-transform-origin: 0 100%;
	transform-origin: bottom left;
}

 figure:hover .icons{
	-webkit-transform: rotate3d(0,0,1,360deg);
	transform: rotate3d(0,0,1,360deg);
}

我需要它从静态原点旋转360度,并希望它是三角形的左下角。 这可能吗 ? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

问题是你将.icons容器的宽度和高度设置为50%,这使得.icons容器不是正方形而是矩形。 SVG三角形刻有正方形,因此如果您将三角形放入矩形并使其居中,则在左下角.icons角和左下角三角形角之间存在一些空间。你应该指定.icons的宽度和高度是相同的(使其成为正方形)或使用背景triangle.svg的宽度和高度(不要使用%)

figure {
  background-color:#000;
	position: relative;
	overflow:hidden;
	margin: 20px 1%;
	height: 200px;
	text-align: center;
	cursor: pointer;
}


.icons {
	position: absolute;
	top:0;
	left:20%;
	width: 50%;
	height: 50%;
	background: url("http://imgh.us/triangle_6.svg") no-repeat left bottom;
	background-size: auto auto;
	content: '';
	-webkit-transition: -webkit-transform 0.45s;
	transition: transform 0.45s;
	-webkit-transform: rotate3d(0,0,1,0deg);
	transform: rotate3d(0,0,1,0deg);
	-webkit-transform-origin: 0 100%;
	transform-origin: bottom left;
}

 figure:hover .icons{
	-webkit-transform: rotate3d(0,0,1,360deg);
	transform: rotate3d(0,0,1,360deg);
}
<figure>
<div class="icons">
</div>
</figure>

答案 1 :(得分:0)

您可以使用transform-origin属性锁定转换点。在这种情况下,我将值设置为bottom left

.box {
  height: 200px;
  width: 200px;
  position: relative;
  border:1px solid black;
}

.rotate {
	height: 100px;
	width: 100px;
	background-color: green;
	position: absolute;
    right:0;
    transition: all 1s linear;
   -webkit-transform-origin: bottom left;
  
}

.box:hover .rotate {
	transform: rotate(360deg);
	transform-origin: bottom left;
}
<div class="box">
	<div class="rotate"></div>
</div>