2016-08-30 10 views
1

Ich habe ein kleines Webspiel gemacht, ich benutze diesen Code unten, um das Spiel auf die Seitengröße zu skalieren.HTML5 Leinwand, passend zu (Rest) Bildschirm

Allerdings habe ich jetzt ein Menü im oberen Teil des Spiels mit etwas CSS hinzugefügt und ich stoße auf Probleme. Das Spiel nimmt die Größe des inneren Fensters an, so dass alles, was zusammen mit dem Spiel angezeigt wird, dazu führt, dass der Inhalt nicht in den Browser passt.

Wie kann ich das Spiel "füllen" den Rest des Fensters?

(ich habe festgestellt, Fragen, wie das Spiel auf die Fenster zu skalieren, aber ich würde das Spiel gefällt das Fenster statt zu füllen)

Ein Bild, das Problem unten zu demonstrieren:

(Beachten Sie die Bildlaufleisten, die ich mag würde beseitigen)

enter image description here

Edit: ich bin ganz neu in Web-Entwicklung, aber ich habe das Gefühl, CSS nicht wirklich gut auf Leinwand funktioniert.

+1

try 'html, body {overflow: hidden; } 'in Ihrem css – Vashtamyty

+0

@Vashtamyty diese Art von tat es, aber es macht immer noch mein Spiel Fenster größer als es sollte, aber nur nicht draussen draussen? Könnte ich ein div machen (das auf die Seite skaliert) und dann das Menü und das Spiel hineinlegen und dieses div an den Bildschirm anpassen? – Paul

+0

Obwohl ich denke, CSS kann die Leinwandgröße nicht effektiv ändern (es skaliert es nur, ändert aber nicht die Anzahl der angezeigten Pixel). – Paul

Antwort

0

Und wenn Sie die Nav Höhe entfernen?

var canvas = document.getElementById("game"); 
var ctx = canvas.getContext("2d"); 
var menu = document.getElementById('nav') 
resize_canvas(); 
document.body.appendChild(canvas); 

// Attempt at auto-resize 
function resize_canvas(){ 
    canvas.width = window.innerWidth; 
    canvas.height = window.innerHeight - menu.offsetHeight; 
} 
window.addEventListener("resize", resize_canvas); 
window.addEventListener("orientationchange", resize_canvas); 

und

canvas { 
    position:relative; 
} 
+0

Ich habe darüber nachgedacht, aber das klingt nach einer eher "hacky" Lösung. Wenn jemand hineinzoomt (was nicht möglich sein soll, aber nicht wirklich blockiert werden kann). Das Menü wird wachsen, aber die Variable wird hart codiert, und das Menü wird sich überlappen usw. – Paul

+0

Ah, macht nichts, die Variable ist nicht fest codiert, Sie erhalten das Element nach ID, so sollte es beim Skalieren funktionieren. Nur ein kleines Problem ist, dass es nicht "dynamisch" funktioniert, wenn ich andere Objekte einfüge, aber ich denke nicht wirklich daran. – Paul

+0

was meinst du mit 'andere objekte'? – Quentin