html5에서 투명한 캔버스를 어떻게 만듭니 까?


123

캔버스를 투명하게 만들려면 어떻게해야합니까? 두 개의 캔버스를 서로 위에 놓고 싶기 때문에 필요합니다.

답변:


194

캔버스는 기본적으로 투명합니다.

페이지 배경 이미지를 설정 한 다음 그 위에 캔버스를 놓으십시오. 캔버스에 아무것도 그려지지 않으면 페이지 배경을 완전히 볼 수 있습니다.

캔버스를 유리판에 그리는 것과 같다고 생각하십시오.


6
캔버스는 모바일에서 검은 색 배경을 가지므로 캔버스 레이어링이 작동하지 않습니다. (적어도 Android 용 Chrome에서는)
nicholeous

11
평소와 같이 표준에 너무 많이.
Triynko 2015-08-07

6
나는이 답변들이 요점을 놓치고 있다고 생각합니다. 위의 질문과 유사하게 두 개의 레이어 캔버스를 원합니다. 하단에는 정적 이미지가 있지만 상단에는 애니메이션 스프라이트가 있습니다. 이 최상위 레이어에는 투명한 배경이 있어야하지만 모든 애니메이션 프레임에서 '지워지고'다시 그려 져야합니다. 예, 기본적으로 투명하게 시작되지만 투명으로 재설정하고 모든 새 애니메이션 프레임의 시작을 어떻게 재설정합니까?
J Sprague

3
이것은 언제든지 캔버스를 지우는 방법입니다 : stackoverflow.com/questions/2142535/…
Omiod

너무 많은 찬성표를 받았으니 적어도 질문에 답할 수 있습니까? 투명하지 않은 캔버스를 어떻게 투명하게 만들까요?
DDD

48

나는 당신이 내가 방금하려고했던 것을 정확히하려고한다고 믿는다 : 나는 두 개의 쌓인 캔버스를 원한다. 아래 하나는 정적 이미지를 가지고 있고 상단 하나는 애니메이션 스프라이트를 포함하고있다. 애니메이션 때문에 새 프레임마다 렌더링을 시작할 때 맨 위 레이어의 배경을 투명하게 지워야합니다. 마침내 답을 찾았습니다. globalAlpha를 사용하지 않고 rgba () 색상을 사용하지 않습니다. 간단하고 효과적인 대답은 다음과 같습니다.

context.clearRect(0,0,width,height);

45

특정 항목 <canvas id="canvasID">을 항상 투명하게하려면 설정 만하면됩니다.

#canvasID{
    opacity:0.5;
}

대신 캔버스 영역 내부의 특정 요소를 투명하게하려면 그릴 때 투명도를 설정해야합니다.

context.fillStyle = "rgba(0, 0, 200, 0.5)";

아, 저는 fillStyle 투명성을 찾고있었습니다. 감사!
Workman 2013

3
참고 : opacity캔버스에 배경 채우기가 있으면 변경 사항이 적용되지 않습니다.
Adam Eberlin 2015 년

3

캔버스의 배경을 투명하게 설정하기 만하면됩니다.

#canvasID{
    background:transparent;
}

1
이 답변은 모든 상황에서 작동하지 않습니다. context.clearRect (0, 0, width, height)는 저에게
Dmitriy

2

두 개의 캔버스를 세 번째 캔버스에 칠하십시오.

나는 똑같은 문제가 있었고 여기의 해결책 중 어느 것도 내 문제를 해결하지 못했습니다. 나는 그 위에 또 다른 투명한 캔버스가있는 하나의 불투명 캔버스를 가지고 있었다. 불투명 캔버스는 완전히 보이지 않았지만 페이지 본문의 배경은 보였습니다. 위에 투명 캔버스의 그림은 보였지만 그 아래의 불투명 캔버스는 보이지 않았습니다.


0

마지막 답변에 대해 설명 할 수는 없지만 수정은 비교적 쉽습니다. 불투명 캔버스의 배경색을 설정하기 만하면됩니다.

#canvas1 { background-color: black; } //opaque canvas
#canvas2 { ... } //transparent canvas

잘 모르겠지만 배경색이 몸에서 투명하게 물려받은 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.