2013-10-30 2 views
8

Canvas 요소에서 확장 된 "뷰포트"유형 요소를 만들려고합니다. 나는 그것이 부모 컨테이너를 채우려는 의도 였지만 그렇게 사소하지는 않다.폴리머 요소의 크기 조정 이벤트를 처리하는 가장 좋은 방법은 무엇입니까?

canvas 요소는 style = "width : 100 %; height : 100 %"와 작동하지 않습니다 (특수 캔버스 너비와 높이 특성이 설정되지 않은 경우 기본값 300x150 픽셀로 되돌아갑니다. 그 속성을 "100 %"로 설정하려고하면 100x100 픽셀이됩니다. 이로 인해 부모 요소의 크기에 따라 캔버스 요소의 너비를 수동으로 설정하는 작업이 필요합니다. 그러나 시도 할 때 손실이 발생합니다. resize 이벤트에 액세스하는 방법을 알아 내기 위해 사용자 정의 요소의 관점에서 핸들러를 추가 할 수 있습니다. 사용자 정의 요소 내의 window.on.resize에 액세스 할 수있는 권한이없는 것 같습니다. 이것은 외부로부터입니까?

다음은 폴리머 요소 정의의 예입니다 :

여기
<polymer-element name="canvas-viewport"> 
    <template> 
    <style> 
     @host{ 
     :scope { 
      margin:0px; 
      padding:0px; 
      display:block; 
      position:relative; 
      width:100%; 
      height:100%; 
      background:limegreen; 
      overflow:visible; 
      border:0; 
     } 
     } 

     div { 
     border:0; 
     margin:0px; 
     padding:0px; 
     width:100%; 
     height:100%; 
     } 

    </style> 
<div id="container"> 
     <canvas width="{{wpWidth}}" height="{{wpHeight}}" id="theCanvas"></canvas> 
    </div> 
    </template> 
    <script type="application/dart" src="canvas_viewport.dart"></script> 
</polymer-element> 

나는이 질문에 대한 제안 된 솔루션을 기반으로 만들어진 크기 조정을 처리하려고에 첨부 된 폴리머 클래스 정의의 일부 다트 코드입니다.

@override 
void attached() { 
    super.attached(); 
    viewPortContainer = shadowRoot.querySelector("#container"); 
    window.onResize.listen(resizecontainer); 
} 


void resizecontainer(Event e){ 
    wpWidth = viewPortContainer.clientWidth; 
    wpHeight = viewPortContainer.clientHeight; 
    print("resizing Width:$wpWidth , Height:$wpHeight ");  
} 

그러나 이것은 높이 마진 가스켓이 0으로 설정되는 경우에도, 각각의 크기를 일정 세 픽셀 씩 증가 버그 초래한다.

답변

5

OnResize는 맞춤 요소 내에서 작동합니다.

@override 
void attached() { 
    super.attached(); 
    window.onResize.listen((e) { 
    print(e.currentTarget.innerWidth); 
    }); 
} 
+1

감사합니다.이 정보는 유용한 이벤트 처리기를 배치하는 데 도움이되었습니다. 그러나 캔버스를 캔버스 요소를 배치 한 컨테이너에서 가져온 것과 동일한 너비와 높이를 설정하려고하면 각 크기 조정 이벤트 (너비가 아님)에 컨테이너 높이가 3 픽셀 씩 늘어나는 것처럼 보입니다. 모든 패딩을 설정하고 – MrMambo007

+0

나는 다른 스레드에서 약 게시 한 것처럼 최근에 camas와 비슷한 것을 구현했습니다. 3px 성장 문제가 나를 영향을 미치는지 확인해야 할 것입니다. 나는 주말에 답변을 다시 게시 할 것이다. – Anders

관련 문제