2013-03-20 28 views
8

Tôi đang cố gắng để có được vải của tôi để phù hợp với trang web, khi tôi làm:HTML5 Canvas phù hợp với cửa sổ

ctx.canvas.width = window.innerWidth; 
ctx.canvas.height = window.innerHeight; 

Nó đi chỉ hơn ngang và dọc được thêm thanh cuộn. kích thước của nó đi qua là về kích thước của các thanh cuộn đang được chiếm trước khi họ thậm chí có (chỉ là một đoán) là whats xảy ra, làm thế nào tôi sẽ đi về việc nó phù hợp với trang không có thanh cuộn.

+1

Tại sao không tắt thanh cuộn bằng CSS? html, body {overflow: hidden;} –

+0

Cảm ơn bạn nên nghĩ về điều đó, sẽ phải làm ngay bây giờ :) – Larry

+0

Xem ví dụ tại đây http://bravenewmethod.wordpress.com/2011/08/28/html5-canvas-layout -and-mobile-devices/ –

Trả lời

12

Đặt vị trí canvas thành absolute. Cũng đảm bảo không có đệm hoặc lề được đặt trong phần tử chứa.

Đây là những gì tôi sử dụng trên tất cả các bản trình diễn canvas toàn màn hình của mình.

body, html { 
    width: 100%; 
    height: 100%; 
    margin: 0; 
    padding: 0; 
    overflow: hidden; 
} 
canvas { 
    position:absolute; 
} 

Full Screen Demo

+1

Yêu thích nó. Cảm ơn bạn rất nhiều –

+0

'canvas { chiều rộng: 100%; chiều cao: 100%; } ' cũng hoạt động và không nên sử dụng vị trí tuyệt đối. (ví dụ: nếu bạn sử dụng vị trí tuyệt đối và canvas lớn hơn trang thì bạn không thể di chuyển lên hoặc xuống). – FedericoCapaldo

1

này làm việc cho tôi

function resize() { 

    var canvas = document.getElementById('game'); 
    var canvasRatio = canvas.height/canvas.width; 
    var windowRatio = window.innerHeight/window.innerWidth; 
    var width; 
    var height; 

    if (windowRatio < canvasRatio) { 
     height = window.innerHeight; 
     width = height/canvasRatio; 
    } else { 
     width = window.innerWidth; 
     height = width * canvasRatio; 
    } 

    canvas.style.width = width + 'px'; 
    canvas.style.height = height + 'px'; 
}; 

window.addEventListener('resize', resize, false); 
1

Các vải theo mặc định được thiết lập để display: inline-block. Thay đổi nó thành display: block

body { 
    margin: 0; 
    padding: 0; 
} 
canvas { 
    display: block; 
} 
+0

điều này không hiệu quả với tôi. (Phiên bản Chrome 57.0.2987.133 (64 bit)) – keithpjolley

0

Tôi gặp sự cố tương tự và tôi đã giải quyết vấn đề này bằng cách xóa border.