Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 给予外部&;内框,确定内框的位置_Javascript_Jquery_Html_Math - Fatal编程技术网

Javascript 给予外部&;内框,确定内框的位置

Javascript 给予外部&;内框,确定内框的位置,javascript,jquery,html,math,Javascript,Jquery,Html,Math,我正在努力解决一道数学题,需要你的帮助。我想知道以下几点: 内盒主要位于左侧还是右侧 内盒主要定位在外盒的顶部还是底部 为了解决这个问题,我知道以下几点: 外盒的高度和宽度,在200px时是静态的 内框的宽度(变量X) 内盒与外盒左侧的距离(var x2) 从顶部到内框的距离(变量y) 有没有办法确定里面的盒子主要是在左边还是右边。。顶部还是底部 谢谢大家! 通过平均内框的左右边缘,可以计算出内框的中心。然后将其与外盒中心进行比较,以确定其主方向 在下面的代码中,我正在呼叫 外盒的高度和

我正在努力解决一道数学题,需要你的帮助。我想知道以下几点:

  • 内盒主要位于左侧还是右侧
  • 内盒主要定位在外盒的顶部还是底部
为了解决这个问题,我知道以下几点:

  • 外盒的高度和宽度,在200px时是静态的
  • 内框的宽度(变量X)
  • 内盒与外盒左侧的距离(var x2)
  • 从顶部到内框的距离(变量y)
有没有办法确定里面的盒子主要是在左边还是右边。。顶部还是底部

谢谢大家!


通过平均内框的左右边缘,可以计算出内框的中心。然后将其与外盒中心进行比较,以确定其主方向

在下面的代码中,我正在呼叫

外盒的高度和宽度,在200px时是静态的

outerH
outerW

内框的宽度(变量X)

innerW

(我假设您也知道innerBox的高度,我称之为
innerH

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

leftPadding

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;
}
从顶部到内框的距离(变量y)

top添加

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;
}
函数isprimarylleft(outerW、innerW、leftPadding){
var outerCentroidX=outerW/2;
//中心=(左边缘+右边缘)/2
//leftedge=leftPadding
//rightedge=leftpadding+innerWidth
//中心=(左填充+左填充+宽度)/2
//=2*leftPadding/2+宽度/2=
var innerCentroidX=左填充+innerW/2;
返回内部质心x<外部质心x;
}
函数isPrimaryTop(outerH、innerH、topPadding){
var-outerCentroidY=outerH/2;
var innerCentroidY=topPadding+innerH/2;
返回内质心<外质心;
}

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


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


该框主要位于顶部:Y<(200-Y)/2 (我想你可以计算盒子的高度-Y)


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


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

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

要计算它是否为“左”,您需要确定哪个距离更大,即内部长方体左侧到外部边缘或右侧之间的距离

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

|-------------------------Outer Box----------------------------------|
|---left distance---|---------inner box--------|---right distance----|
如果左距离大于右距离,则为“右”,如果它们相等,则为居中,如果小于,则为“左”


自上而下也是一样。

你不知道内盒的高度吗?是的,我知道!。。我们称之为xy?在这个例子中,什么是outerW,innerW,leftPadding?尝试了第一个w isprimarylleft,它总是返回true。应该返回false的值是:(200121.5,54.5)@napprentice,经过编辑以明确参数名称如何与您知道的内容相对应。@napprentice,如果您的内部框的宽度为121.5,并且从54.5像素开始,它的中心位于外盒中心的右侧115.25,因此它的大部分区域位于外盒中心线的右侧。在中,
isprimarylleft(200121.514.5)
生成false。falsewow哇,这就是PrimariLylft。非常感谢你。真的,我不能