2016-09-15 1 views
0

저는 현재 js 프로젝트에서 작업하고 있습니다.Canvas ID가 미리 정의 된 크기로 자릅니다.

좀 캔버스 그리기있어하지만 뭔가 코드에 문제가 있습니다 난이 :

<div id="canvasesdiv" style="height: 100%; width: 100%; display: table-cell; position: relative; width:578px; height:415.5px"> 
    <canvas id="c1"  style="z-index: 1; position:absolute; left: 80px; width="680" height="435"></canvas> 
    <canvas id="c2"  style="z-index: 2; position:absolute; left: 80px; width="680" height="435"></canvas> 
    <canvas id="c3"  style="z-index: 3; position:absolute; left: 80px; width="680" height="435"></canvas> 
    <canvas id="c4"  style="z-index: 4; position:absolute; left: 80px; width="680" height="435"></canvas> 
    <canvas id="c5"  style="z-index: 5; position:absolute; left: 80px; width="680" height="435"></canvas> 
</div> 

클리 어리 너비와 높이 (HTML 기대된다와 PX의 값) 잘못 해석되지만 어떻게 든 캔버스는 그들의 전체 차원에서 그려집니다.

<canvas id="c1"  style="z-index: 1; position:absolute; left: 80px; "></canvas> 
<canvas id="c2"  style="z-index: 2; position:absolute; left: 80px; "></canvas> 
<canvas id="c3"  style="z-index: 3; position:absolute; left: 80px; "></canvas> 
<canvas id="c4"  style="z-index: 4; position:absolute; left: 80px; "></canvas> 
<canvas id="c5"  style="z-index: 5; position:absolute; left: 80px; "></canvas> 

또는 캔버스가 전혀없이 아래로 300x150으로 잘립니다되지 않습니다

... width: 500px; height: 500px;" 

와 : 내가 좋아하는 뭔가를 사용하는 대신 경우 .

답변

1

캔버스의 값을 픽셀 단위로 설정해야합니다. 당신은 canvas를 load 이벤트와 resize 이벤트보다 div에 넣을 수 있습니다. 부모 div의 실제 크기는 캔버스에 값을 설정하는 것보다 더할 수 있습니다. JQuery를 사용할 수 있습니다.

+0

문제는 "위치 : 절대"와 관련이있는 것으로 보입니다. 해당 속성을 제거하면 캔버스가 치수를 존중하지만 오버레이 기능이 손실됩니다. 어떻게 해결할 수 있습니까? @Ivan Mjartan – user217354

+0

기본적으로 Firefox의 크기는 300x150입니다. 여기를 참고하십시오 : http://jsfiddle.net/ecTCD/87/ 여기 http://jsfiddle.net/ecTCD/91/ 위치와의 차이 : 절대. 아이디어가 있으십니까? – user217354

+0

나의 제안은 절대적으로 받아 들여지고, 단지 크기를 바꾼다. 그렇게하면 모든 그림이 사라집니다. 크기를 조정 한 후에는 모든 것을 다시 그려야합니다. 크기 조정 작업을 최적화하려면 세마포어 (bool 값의 크기가 조정 됨) 및 지연이 100ms 이상인 타이머 만 사용하십시오. 모든 크기 조정 이벤트는 시간을 다시 설정하고 사용자가 크기 조정을 마치면 그릴 수 있습니다. 그릴 생각이 많은 경우 오프 스크린 캔버스를 처음으로 그려 넣는 것이 오프 스크린 캔버스를 볼 수있는 캔버스로 가져 오는 것보다 더 좋은 방법입니다. –

관련 문제