2013-03-05 72 views
15

當使用「畫布=新fabric.Canvas(」富「)」,織物轉換具有與寬度的CSS類畫布元素= 100%附着到它變成類似的東西:Fabric.js:可能有100%寬度的畫布?

<div class="canvas-container" style="position: relative" width="293px"> 
    <canvas class="upper-canvas"></canvas> 
    <canvas class="lower-canvas" id="c"></canvas> 
</div> 

纏繞div以及兩個畫布元素都獲取樣式標籤和固定寬度/高度。在初始化方面,我只找到了canvas.setWdith,雖然只有數值(沒有百分比值)。

有沒有辦法將Fabric初始化爲尊重/使用給定的100%寬度?

更新: 例子:http://jsfiddle.net/thomasf1/kb2Hp/

+0

似乎沒有辦法設置寬度爲100%,試圖通過CSS,面料以迫使其時按預期停止工作。 – thomasf1 2013-03-05 04:48:18

+1

解決方案 - http://stackoverflow.com/a/8486324/104380 – vsync 2013-05-19 13:18:13

回答

6

我不知道,如果你能明確告訴面料使用100%的寬度,但是可能通過$('.canvas-container').width()document.getElementById('canvas-container').clientWidth得到canvas-container的寬度,然後該值使用canvas.setWidth ?例如: -

canvas.setWidth($('.canvas-container').width()); 


普羅蒂普:還要記得設置這個窗口上調整大小,以防止任何內容溢出。

+0

小的改變,但'帆布容器'注入作爲一個類,而不是一個ID。所以它應該是'.canvas-container'而不是'#canvas-container' – 2016-10-31 08:35:32

1

因爲canvas element,widthheight的性質需要在像素中使用。所以,Fabric不會在畫布上使用百分比值。

attribute unsigned long width;
attribute unsigned long height;
17

大小調整結構的畫布使用其對象和窗口innerWidth和innerHeight

(function(){ 
    var canvas = new fabric.Canvas('app'); 

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

    function resizeCanvas() { 
    canvas.setHeight(window.innerHeight); 
    canvas.setWidth(window.innerWidth); 
    canvas.renderAll(); 
    } 

    // resize on init 
    resizeCanvas(); 
})(); 
+2

確保去除調整大小 - 例如https://lodash.com/docs#debounce – drzaus 2015-01-14 21:59:15

+1

以防萬一,如果有人想給特定的div尺寸 canvas.setHeight($('。yourDiv')。height()); canvas.setWidth($('。yourDiv')。width()); – saad 2016-02-29 10:11:15