Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.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_Html_Css_Position - Fatal编程技术网

Javascript 子元素位置相对工作错误

Javascript 子元素位置相对工作错误,javascript,html,css,position,Javascript,Html,Css,Position,我有一个css宽度和高度的div元素,800x600。我正在使用javascript在div中生成三个对象元素,它们应该在一条对角线上,相互接触。我使用position:relative和左上css属性来定位对象元素。然而,当我这样做的时候,正方形之间有一个不应该存在的水平间隙。当我使用position:fixed时,它们按照我想要的方式排列,但不在div元素内部 my div元素的Html <div id="Stage" style="background:black;width:800

我有一个css宽度和高度的div元素,800x600。我正在使用javascript在div中生成三个对象元素,它们应该在一条对角线上,相互接触。我使用position:relative和左上css属性来定位对象元素。然而,当我这样做的时候,正方形之间有一个不应该存在的水平间隙。当我使用position:fixed时,它们按照我想要的方式排列,但不在div元素内部

my div元素的Html

<div id="Stage" style="background:black;width:800px;height:600px;margin-left:auto;margin-right:auto;overflow:hidden;">

还有我的javascript

w="w";
level_data =
[
[w,0,0],
[0,w,0],
[0,0,w],
];

function generate(level_data){
    for(row=0;row<level_data.length;row++){
        for(col=0;col<level_data[row].length;col++){
            posx = col*50; posy=row*50;
            if(level_data[row][col]=="w"){
                entity = document.createElement('object');
                entity.style.position = "relative";
                entity.style.left = String(posx)+"px"; entity.style.top = String(posy)+"px";
                entity.data = "Objects/Sprites/Wall.jpg";
                document.getElementById("Stage").appendChild(entity);

            }
        }
    }
}
generate(level_data);
w=“w”;
二级数据=
[
[w,0,0],
[0,w,0],
[0,0,w],
];
函数生成(级别_数据){

for(row=0;row
位置:fixed
相对于视口定位元素。
位置:relative
给出该结果,因为
对象
元素可能对
宽度
高度
有一些默认值。您将需要类似以下内容:

entity.style.position = "absolute";
entity.style.left = String(posx)+"px";
entity.style.top = String(posy)+"px";
entity.style.width = "50px";
entity.style.height = "50px";

当使用
position:absolute
时,即使没有
实体的维度,代码也应该工作。注意,当使用
position:relative
时,不应该将位置值与
col
相乘,它们应该是
50px

记住用
var声明所有变量e> 否则您将泄漏到全局空间。
实体
posx
posy
它们似乎都在泄漏。请尝试将
实体.style.left
值设置为0。否则,它在DOM中相对于它前面的实体是
left
。啊,谢谢你。这就是我所做的不管怎样,我可以让它相对于父div,而不需要对象元素相互推动,而只需将left设置为0,因为这只是一个测试,实际情况中会有间隙,让元素不相互推动会更容易,而不是在我之前跟踪行中有多少元素我不想计算出它的位置。是的,我尝试过设置宽度和高度,还使用了img。我使用object而不是img,因为我正在制作一个html游戏,我不希望精灵可以右键单击。还使用位置绝对位置相对于页面而不是div。我发现问题在于元素被推入在父代内部互相攻击div@GregHornby我明白了……不管怎样,我的答案是使用
位置:绝对
而不是
相对
。你试过了吗?是的,我试过了,它给出了与位置相同的结果:fixedOh wait。我将div元素设置为position:fixed,所以现在带有position:absolute的实体如何工作谢谢