首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定外&内盒,确定内盒的位置。

给定外&内盒,确定内盒的位置。
EN

Stack Overflow用户
提问于 2011-10-28 17:25:26
回答 3查看 195关注 0票数 0

我正为一个数学题而挣扎,需要你的帮助。我想知道以下几点:

  • 是主要位于左侧或右侧的内箱?
  • 是主要定位于外部框的顶部或底部的内箱?

为了解决这个问题,我知道以下几点:

  • 外框的高度和宽度,这是静态的在200 x2
  • 内盒的宽度(var X)
  • 内盒的宽度从外盒的左边(var X2)
  • 的内盒距顶部的距离,(var Y)

f 215

任何想法,哦,如何确定内盒主要是向左还是向右。顶部还是底部?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-28 17:30:07

你可以通过平均内盒的左右边来计算出它的中心。然后将其与外盒中心进行比较,找出它的主要方向。

在下面的代码中,我打电话给

外框的高度和宽度,这是静态的,在200 at。

outerHouterW

内框的宽度(var X)

innerW

(我假设你也知道innerBox的高度,我叫它innerH)

内盒距外盒左侧的距离(var x2)

leftPadding

内盒距顶部的距离,(var y)

topPadding

代码语言:javascript
复制
function isPrimarilyLeft(outerW, innerW, leftPadding) {
  var outerCentroidX = outerW / 2;
  // center = (leftedge + right edge) / 2
  // leftedge = leftPadding
  // rightedge = leftpadding + innerWidth
  // center = (leftPadding + leftPadding + width) / 2
  //        = 2*leftPadding / 2 + width / 2 =
  var innerCentroidX = leftPadding + innerW / 2;
  return innerCentroidX < outerCentroidX;
}

function isPrimarilyTop(outerH, innerH, topPadding) {
  var outerCentroidY = outerH / 2;
  var innerCentroidY = topPadding + innerH / 2;
  return innerCentroidY < outerCentroidY;
}
票数 1
EN

Stack Overflow用户

发布于 2011-10-28 17:36:27

我将解释一个可能的解决方案的基本思维过程。

若要计算它是否为“左”,您需要确定哪个距离更大,即内框左边的距离、外缘距离还是右侧距离。

你已经知道左边的距离了。要计算右边的距离,需要取总outerWidth并减去内框的宽度和距左侧的距离:

代码语言:javascript
复制
|-------------------------Outer Box----------------------------------|
|---left distance---|---------inner box--------|---right distance----|

现在,如果左距离大于右,它是“右”,如果它们相等,它是居中的,如果它较小,它就是“左”。

自上而下也是如此。

票数 1
EN

Stack Overflow用户

发布于 2011-10-28 17:34:06

该框主要位于左侧:x< (200 - x2)/2

该框主要位于右侧:x> (200 - x2)/2

这个盒子主要在顶部:y<(200-y)/2(我想你可以计算盒子的高度- Y)

该框主要位于底部:y> (200 - y)/2

您应该用宽度/高度常数替换200。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7932662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档