我正在使用参数方程将图像定位在圆圈周围(How do I calculate a point on a circle’s circumference?)
我使用简单的数学方法做得更少:
// x,y position on circumference:
// x = a + r * cos(t)
// y = b + r * sin(t)
.position {
left: @a + ( @r * cos(@t) );
top: @b + ( @r * sin(@t) );
}
我遇到的麻烦是,这会将图像定位在左上角,而不是图像的中心,因此不会考虑高度和宽度的视觉偏移。尝试按高度/ 2调整,宽度/ 2不起作用,因为每个图像的角度不同。
是否有一种简单的方法可以这样定位图像,使其以x,y为中心?
答案 0 :(得分:0)
.position {
left: @a + ( @r * cos(@t) );
top: @b + ( @r * sin(@t) );
margin-left: -@r;
margin-top: -@r;
}
而不是计算,你可以做到这一点:
top:50%;
left:50%;
position:absolute;
margin-left:-@r;
margin-top:-@r;
的 FIDDLE DEMO 强> 的
答案 1 :(得分:-1)
你说你尝试了半宽/高度计算将图像置于圆周上的某个角度参考(据我理解你的问题)。似乎应该并且确实有效。看看这个...
<强> Example Fiddle 强>
圆形和图像颜色用于视觉参考,但图像定位通过以下方式完成:
<强> LESS 强>
//define circle position
@r: 100px;
@x: 175px;
@y: 150px;
.setImage(@w, @h, @a) {
//@a is angle from HORIZONTAL but moves clockwise
//(based on radians unless units are given)
width: @w;
height: @h;
left: (@x + ( @r * cos(@a) ) - (@w / 2));
top: (@y + ( @r * sin(@a) ) - (@h / 2));
}
.test1 {
.setImage(40px, 40px, -35deg);
}
.test2 {
.setImage(60px, 30px, -80deg);
}
.test3 {
.setImage(90px, 20px, -150deg);
}
.test4 {
.setImage(40px, 70px, -240deg);
}
.test5 {
.setImage(20px, 90px, -295deg);
}
CSS输出
.test1 {
width: 40px;
height: 40px;
left: 236.9152044288992px;
top: 72.64235636489539px;
}
.test2 {
width: 60px;
height: 30px;
left: 162.36481776669305px;
top: 36.5192246987792px;
}
.test3 {
width: 90px;
height: 20px;
left: 43.39745962155612px;
top: 90px;
}
.test4 {
width: 40px;
height: 70px;
left: 104.99999999999996px;
top: 201.60254037844385px;
}
.test5 {
width: 20px;
height: 90px;
left: 207.26182617406997px;
top: 195.630778703665px;
}
即使使用旋转图像也能正常工作
假设您将图像设置为transform-origin: center center
,那么即使图像以某个角度旋转,它也能保持中心位置。