2011-01-22 3 views
2

Я хочу динамически изменять размер холста в соответствии с содержанием DIV. Я использую следующий код, но он не работает.Размер холста HTML

<canvas id="canvas1" width="800" height="2000" > <canvas> 

Javascript

document.getElementById("canvas1").style.height = document.getElementById("div").style.height; 
document.getElementById("canvas1").style.width= document.getElementById("div").style.width; 

Также я хочу, что загружен холст автоматически, как я должен делать это? на мероприятии $(document).ready?

Как мне это сделать?

+0

Что вы подразумеваете под загрузкой автоматически? – galambalazs

+0

Я имел в виду, что как только страница загружается, достигнут следующий размер. – Yahoo

+0

Поместите свой код изменения размера в функцию и вызовите эту функцию в ответ на события изменения размера тела, а также один раз на готовом документе или в окне загрузки. – Phrogz

ответ

8

Используйте offsetWidth, чтобы получить размеры элемента (включая границы).

// loaded automatically on page load 
window.onload = function() { 
    var div = document.getElementById("div"); 
    var canvas = document.getElementById("canvas1"); 
    canvas.height = div.offsetHeight; 
    canvas.width = div.offsetWidth; 
} 
+0

Это работает Отлично, но изображение, которое уже есть на холст получает Pixelated, изображение также расширяется. Я хочу, чтобы размер изображения, который нарисован на холсте, остается неизменным – Yahoo

+0

@AdiMathur Затем измените ширину '.width/height' на холсте, вам также нужно будет перерисовать содержимое затем – Phrogz

+1

Я готов снова рисовать, но инструкция dosnt работает .... canvas.height = div.offsetHeight + "px"; canvas.width = div.offsetWidth + "px"; – Yahoo

Смежные вопросы