好的,让我们逐一介绍...假设您的 100% A 圆的半径为 x(例如,B 是 Bx,c 可能是 Cx,B = .7 和 C = .3)。
另外,我实际上会有一个<div style="position: relative"></div>
,然后你的圈子将<div style="position: absolute, top: 0, left: 0"></div>
不是使用 margin-top/margin-left
无论如何。显然,top/left = 0。
从您的图片来看,A 和 B 的中心似乎排成一行……这意味着 B 将拥有left = 2x
并且top = (1 - B)x
C 是最难的部分...我将快速绘制三角形以供参考
首先让我们使用余弦定律找到 A 处的角度
(B + C)² = (1 + B)² + (1 + C)² - 2(1 + B)(1 + C)cos A
cosA = (BC - B - C - 1)/(BC + B + C + 1)
使用正常的三角函数,我们也可以得到高度......
sin A = h / (1 + C)
使用规则
sin² A + cos² A = 1
我们可以结合得到
h = (1 + C) √ (1 - cos² A)
当然要得到顶部,我们需要加 1 和减 C
top = ((1 + C) √ (1 - cos² A) + 1 - C)x
再次使用 trig 我们可以得到左侧...
cos A = l / (1 + C)
l = (1 + C)cos A
当然要离开,我们必须加 1 并取 C ......
left = ((1 + C)cos A + 1 - C)x
我创建了一个示例,使用边界半径来创建 B = .7 和 C = .3 和 x = 50px 的圆圈:http: //jsfiddle.net/FelixJorkowski/xArpR/