【问题标题】:CSS is only drawing left and top borders, ignoring right and bottomCSS 只绘制左边框和上边框,忽略右下角
【发布时间】:2016-07-15 00:33:14
【问题描述】:

所以我有这个数组

[["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"],
    ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"],
    ["1","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1"],
    ["1","1","1","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1","1"],
    ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","0","0","1","1"],
    ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"],
    ["0","0","0","0","0","0","0","0","0","1","1","0","0","0","0","0","0","0","0","0"],
    ["0","0","0","0","0","0","0","0","0","1","1","0","0","0","0","0","0","0","0","0"],
    ["0","0","0","0","0","0","0","0","0","1","1","0","0","0","0","0","0","0","0","0"],
    ["0","0","0","0","0","0","0","0","1","1","1","1","0","0","0","0","0","0","0","0"],
    ["0","0","0","0","0","0","0","1","1","1","1","1","1","0","0","0","0","0","0","0"],
    ["1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1"]]

代表这张地图

此函数将根据 1 相对于 0 的位置为空白图块绘制边框。

function lagTile(color,a,b){
var div=document.createElement("div");
var size=32;
div.style.width=div.style.height=size+"px";
div.style.left=a*size+"px";
div.style.top=b*size+"px";
canvas.appendChild(div);
if(color.substr(color.length-3,color.length)=="png"){
    div.style.backgroundImage="url(map/"+color+")";
}else{
    div.style.backgroundColor=color;
}
if(b>0 && map[b-1][a]==1 && map[b][a]==0)
{
    div.style.borderTop="4px solid #630";
    div.innerHTML="Top ";
}
if(b<map.length-1 && map[b+1][a]==1 && map[b][a]==0)
{
    div.style.borderBottom="4px solid #630";
    div.innerHTML+="Bottom ";
}
if(a<map[b].length-1 && map[b][a+1]==1 && map[b][a]==0)
{
    div.style.borderRight="4px solid #630";
    div.innerHTML+="Right ";
}
if(a>0 && map[b][a-1]==1 && map[b][a]==0)
{
    div.style.borderLeft="4px solid #630";
    div.innerHTML+="Left ";
}

并给出这个结果

如您所见,仅显示左边框和上边框。并且你可以看到文字明显是正确的。

关于为什么不绘制底部和右侧边框的任何建议?

【问题讨论】:

  • 这太棒了!!! :D

标签: javascript html css arrays function


【解决方案1】:

边框与尺寸相加,因此元素会变大,并与后面的元素重叠(下方或右侧)。所以边界就在那里,只是隐藏在它之后绘制的框下方。请参阅 CSS Box Model 了解大小调整的工作原理。简而言之,你的盒子的总宽度是the width of the div + left border size + right border size

您可以通过从 div 的大小中减去边框大小来解决此问题(例如,当您添加 4 像素的左边框时,您也会从宽度中移除 4 像素),或者在其样式中添加 box-sizing: border-box .

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 2012-05-21
  • 2012-02-17
  • 2015-03-06
  • 2021-08-21
  • 2020-09-22
  • 1970-01-01
相关资源
最近更新 更多