【问题标题】:CSS: Canvases won't size correctly and won't layerCSS:画布大小不正确且不会分层
【发布时间】:2021-06-08 19:31:20
【问题描述】:

所以我遇到了两种画布问题。

问题 1:画布大小不正确

我正在尝试制作一小堆漂亮的白框,但它们的大小无法正确适应其 div。

看看它们是如何超出绿色矩形底部的?它们应该完全适合填充边框。他们为什么不这样做??

这是我的 HTML:

<div id="behindAll">
    <div id="dotTextList">
        <canvas id="dotCanvas1" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas2" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas3" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas4" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas5" class="dotTextCanvas"></canvas>
    </div>
</div>

这是我的 CSS:

#behindAll {
  box-sizing: border-box;
  position: absolute;
  top: 0;
  left: 0;
  background: red;
  width: 100%;
  height: 100%;
  padding: 10px;
}

#dotTextList {
  box-sizing: border-box;
  background: green;
  width: 100%;
  height: 100%;
  padding: 10px;
}

.dotTextCanvas {
  box-sizing: border-box;
  height: 20%;
  width:100%;
  background-color: white;
}

我已将小白盒定义为它们父母的 20%,所以它们应该玩得很好,但事实并非如此。

问题 2:画布不会分层

最后,我想让五张白色画布在一个大背景画布前绘制自己。

这是我的 HTML:

<div id="behindAll">
    <canvas id="backgroundCanvas" />
    <div id="dotTextList">
        <canvas id="dotCanvas1" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas2" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas3" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas4" class="dotTextCanvas"></canvas>
        <canvas id="dotCanvas5" class="dotTextCanvas"></canvas>
    </div>
</div>

还有我的 CSS:

#behindAll {
  box-sizing: border-box;
  position: absolute;
  top: 0;
  left: 0;
  background: red;
  width: 100%;
  height: 100%;
  padding: 10px;
}

#backgroundCanvas {
  z-index: 5;
  box-sizing: border-box;
  background: blue;
  width: 100%;
  height: 100%;
  padding: 10px;
}

#dotTextList {
  box-sizing: border-box;
  background: green;
  width: 100%;
  height: 100%;
  padding: 10px;
}

.dotTextCanvas {
  z-index: 9;
  box-sizing: border-box;
  height: 20%;
  width:100%;
  background-color: white;
}

结果如下:

白盒不见了!

我已经改变了事情的顺序,我尝试了 z-indexes(如你所见),但我似乎无法让那些白框 a) 大小合适 b) 在前面绘图蓝框。

感谢所有帮助!

【问题讨论】:

    标签: css html5-canvas


    【解决方案1】:

    这导致您遇到麻烦2:

    (删除这个) &lt;canvas id="backgroundCanvas" /&gt;

    对不起,请用这个

    <div id="behindAll">
        <canvas id="backgroundCanvas">
        <div id="dotTextList">
            <canvas id="dotCanvas1" class="dotTextCanvas"></canvas>
            <canvas id="dotCanvas2" class="dotTextCanvas"></canvas>
            <canvas id="dotCanvas3" class="dotTextCanvas"></canvas>
            <canvas id="dotCanvas4" class="dotTextCanvas"></canvas>
            <canvas id="dotCanvas5" class="dotTextCanvas"></canvas>
        </div>
        </canvas>
    </div>
    

    还有这个

    #backgroundCanvas {
      box-sizing: border-box;
      background: blue;
      width: 100%;
      height: 100%;
      padding: 10px;
    }
    
    .dotTextCanvas {
      box-sizing: border-box;
      height: 20%;
      width:100%;
      background-color: white;
    }
    

    麻烦1:

    (设置这个)

    .dotTextCanvas {
      box-sizing: border-box;
      height: calc((100% - 20px)/5);
    }
    

    【讨论】:

    • 解决问题 1 的真棒帮助!至于麻烦2,也许我把我的目标说得很糟糕。我想保留那个背景画布四个白框,框画在背景画布前面。仅从字面意义上说,移除画布完全解决了目标——但就我想要做的而言,并没有那么多。但是您对 #1 的帮助很棒!
    • 我说你删除那个标签是因为你写错了。您的那个标签没有起始标签。我认为你 &lt;canvas id="backgroundCanvas" /&gt; 你把 / 放错了。它应该是&lt;canvas id="backgroundCanvas"&gt; 和结束标签&lt;/canvas id="backgroundCanvas"&gt; 我想你明白了
    • 如果你澄清我会检查使这个答案成为答案的东西
    • 哇,我的措辞很糟糕。我的意思是,如果您在答案中更清楚地解释如何解决它,就像您在上面的评论中所做的那样,我会将其标记为答案。
    • 我将此标记为答案,但是当 dotTextList 包含在 backgroundCanvas 中时,它对我不起作用。当在 backgroundCanvas 声明之后添加结束画布标签时,它确实有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2019-07-19
    • 2016-12-18
    • 2014-03-09
    • 1970-01-01
    相关资源
    最近更新 更多