html - Canvas 元素未显示

标签 html css canvas html5-canvas

我是编程新手,正在尝试使用 html、canvas 和 css 文件为类(class)创建一个元素。这个概念是应该有一个标题屏幕出现在 Canvas 元素中,一旦你点击它就会消失并显示一个房间,你可以将鼠标悬停在这些元素上并获取信息。

我有我想要的 html、canvas 和 css,但是每当我尝试在 canvas 元素中放置一些东西时,它都不会显示。例如,对于标题屏幕,我想绘制一个彩色框并在其中放置一些文本,然后单击它以显示下面的图像。我使用了 drawCanvas,但只有当我在末尾放置一个 gameLoop 时它才会显示。但是当我尝试添加文本时,它就消失了。再一次,我对此真的很陌生,我对我的文字墙感到抱歉,但任何意见或建议都会非常有帮助。这是我的 HTML:

 <!DOCTYPE html>
 <html>
 <head>
    <meta charset="UTF-8">
    <title>Title Page</title>
    <link rel="stylesheet" type="text/css" href="css.css"/>
    <script src="js/modernizr.js"></script>

    <script>

        window.addEventListener("load",eventWindowLoaded, false);
        function eventWindowLoaded() {
            canvasApp();    
        }
        function canvasSupport() {
            return Modernizr.canvas;    
        }
        function canvasApp() {
            if (!canvasSupport()) {
                return; 
            } 
            var theCanvas = document.getElementById("canvasOne");
            var context = theCanvas.getContext("2d");


            var width=1000;
            var height=450;


            function drawCanvas(){
                context.fillStyle="teal";
                context.fillRect(0,0,width,height);
                setColor();
                drawLines();
            }

            function gameLoop(){
                requestAnimationFrame(gameLoop);
                drawCanvas();
            }
            gameLoop();
        }


    </script>
     </head>

<body>
    <audio loop="loop" autoplay="autoplay" controls="controls">
        <source src="themesong.mp3" type="audio/mpeg">
        Your browser does not support the audio content.
        </audio>

            <!-- Canvas -->
            <div id="canvas-container">
            <canvas id="canvasOne" width="1000" height="450">
                Your browser does not support canvas.
            </canvas>    
            </div>
            <!-- ^ End Canvas -->

    </body>
 </html>

这是我的 CSS:

#canvasOne {
    background-color: #cccccc;
    border: 10px solid rgba(136, 128, 172, 0.9);    
    margin-left: 210px;
    margin-right: auto;
    margin-top: 130px;

#body {
    background-image: url("mansion.jpg");
    background-repeat: no-repeat;
    }

老实说,如果有人能帮我在 Canvas 上放一张图片,然后让鼠标悬停在文本框上的某些区域出现,那就太棒了。这个想法是,这是一个游戏,你可以用鼠标在房间里“看”一圈,寻找线索。再一次,我对此很陌生,如果格式很奇怪或者我的问题太长了,我很抱歉。

最佳答案

我不确定你到底想要什么,但我解决了图像没有出现在 Canvas 上的问题。

问题是,在您的 CSS 上,您正在为背景着色,然后您还在其上放置图像,导致它重叠。

这是我修改过的 CSS 代码:

#canvasOne {
    background-image: url("mansion.jpg");
    background-repeat: no-repeat;

    border: 10px solid rgba(136, 128, 172, 0.9);    
    margin-left: 210px;
    margin-right: auto;
    margin-top: 130px;
    }

我不知道如何做悬停部分,但你应该看看 this

关于html - Canvas 元素未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27476540/

相关文章:

javascript - 使用 jQuery 在 HTML 页面中包含 HTML 页面

css - stackview 中的 Clarity Modal 与 UI 元素重叠

python - 为什么点击文本小部件后会出现框架边框/线条(框架在 Canvas 内)tkinter

javascript - json 对象 javascript 困惑

php - 当用户点击提交按钮时,index.php 不会捕获该操作并更新数据库

html - 为什么在 css 背景属性中使用 url() 时我的主机 ip 在 'localhost' 中更改

c# - 如何在 Gridview 中固定单元格的宽度长度

css - 绘制矩形并通过在html中拖动线来标记它

jquery - Chrome : trigger click event with jQuery (it works with Firefox)

performance - PixelSearch功能效率很低,如何优化?