繁体   English   中英

以绝对位置居中图像(上,左)

[英]Centering an image with absolute position (top, left)

我正在使用参数方程式将图像定位在圆周围( 如何计算圆的圆周上的点?

我使用简单的数学运算就更少了:

// 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为中心?

.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;

现场演示

减去一半的宽度/高度确实有效

您说过尝试将宽度/高度的一半计算出来, 以使图像在某个角度参考的圆圆周上居中 (据我所知,这是您的问题)。 似乎应该而且确实可行。 看看这个...

小提琴的例子

圆圈和图像的颜色仅供参考,但是图像的定位方法是:

//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那么即使图像旋转了某个角度,它也可以使它们居中。

请参见旋转图像示例小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM