【问题标题】:placing a div over a canvas in html5在 html5 中的画布上放置一个 div
【发布时间】:2013-03-29 11:53:01
【问题描述】:

我试图在我页面中心的画布上放置一个 div 元素(用于游戏)。这是关于我想在开始游戏之前在画布上显示的开始屏幕(这个开始屏幕有“玩游戏”、“设置”等选项)。问题是我无法完成这项工作,我在谷歌上搜索了很多,我看过很多例子,但似乎没有一个对我有用。这是我的代码:

<div id="gamecontainer">
            <canvas id="myCanvas" width="800" height="600">
                Sorry, <strong>CANVAS</strong> is not supported by your browser. Get a more recent one to play my game!
            </canvas>

            <div id="gamestartscreen" class="gamelayer">
                <img src="images/icons/play.png" alt="Play Game" onclick="alert('ceve');"><br>
                <img src="images/icons/settings.png" alt="Settings">
            </div>
</div>

这是css:

#gamecontainer {
    width: 800px;
    height: 600px;
    background-color: beige;
    border: 1px solid black;
    position: relative;
    margin: 0 auto;
}

.gamelayer {
    width: 800px;
    height: 600px;
    position: absolute;
    display: none;
    z-index: 0;
}


/* Screen for the main menu (Like Play, Settings, etc.) */
#gamestartscreen {
    position: relative;
    margin: 0 auto;
}

#gamestartscreen img {
    margin: 10px;
    cursor: pointer;
}

谁能告诉我哪里做错了?

【问题讨论】:

    标签: css html canvas center


    【解决方案1】:

    问题在于画布层处于其原生静态定位,而游戏开始 div 处于相对定位,没有正的 z-index 值。本质上,您必须将画布元素设置为position: absolute 甚至position: relative,同时为startstreen div 设置>1 z-index。这个JSFiddle 应该说明一切。 干杯!

    【讨论】:

    • 谢谢。这对我帮助很大,但我还有一个问题:我希望 .gamelayer 类的元素也能居中。例如,
      也要居中。有什么想法吗?
    • 当然,没问题。您只需设置left: 50; top: 50%,然后对margin 属性进行一些计算。在这里查看:link
    • 当canvas在div上方时,div内容无法访问,怎么解决这个问题?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签