const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
let percent = .5;
const _canvas = document.getElementById("_canvas");
const _ctx = _canvas.getContext("2d");
let cw = canvas.width = 276;
let ch =_canvas.width = _canvas.height = canvas.height = 64;
let amplitude = 12;
let frequency = .053;
let phi = 0;
ctx.fillStyle = _ctx.fillStyle = "rgba(0,0,0,.6)";
drawSineWave(ctx,cw,0,percent);
drawSineWave(_ctx,ch,cw,percent);
function drawSineWave(ctx,w,start,percent){
ctx.beginPath();
ctx.moveTo(0,0);
for (let x = 0; x <= w; x++) {
let y = Math.sin((start + x) * frequency + phi) * amplitude / 2 + ch*(1-percent);
ctx.lineTo(x, y); // 40 = offset
}
ctx.lineTo(w,0);
ctx.lineTo(0,0);
ctx.closePath();
ctx.fill();
}
function Draw() {
requestId = window.requestAnimationFrame(Draw);
ctx.clearRect(0,0,cw,ch);
_ctx.clearRect(0,0,ch,ch);
phi += .1;
drawSineWave(ctx,cw,0,percent);
drawSineWave(_ctx,ch,cw,percent);
}
Draw();
html,
body {
height: 100vh;
perspective: 400px;
}
#Hamburg {
height: 64px;
width: 276px;
margin: auto;
position: absolute;
transform-style: preserve-3d;
right: 0;
top: 0;
left: 0;
bottom: 0;
transform: rotateY(-45deg) rotateX(-10deg) rotateZ(7deg);
transform-origin: top left;
}
.face {
left: 0;
top: 0;
position: absolute;
background-color:hsl(358,76%,45%);
height: 64px;
width: 276px;
background: hsl(358,76%,45%);
}
#canvas {
background: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/Hamburg.png');
}
#_canvas {
background: hsl(358,76%,40%);
}
.left {
width: 64px;
transform: rotateY(-90deg);
transform-origin: top left;
background:gold;
}
.right {
width: 64px;
transform: translateX(276px) translateZ(64px) rotateY(90deg);
transform-origin: left top;
}
.top {
transform: rotateX(90deg);
transform-origin: left top;
background:hsl(357,78%,16%)
}
.bottom {
transform: rotateX(-90deg);
transform-origin: bottom left;
}
.front {
transform: translateZ(64px);
ttransform-origin: top left;
}
.back {}
<div id="Hamburg">
<div class="face back"></div>
<div class="face left"></div>
<div class="face right"><canvas id="_canvas"></canvas></div>
<div class="face top"></div>
<div class="face bottom"></div>
<div class="face front"><canvas id="canvas"></canvas></div>
</div>