タイトル通りだが、HTML5のcanvas要素をレスポンシブ対応させるCSSコードを紹介する。
またここで紹介するコードは、画面サイズに合わせて伸縮する際に、縦横比を維持したまま要素のサイズが変わるので、使われるケースは多いと思う。
まず、サンプルとして簡単なHTMLを用意した。
<body>
<div class="container">
<canvas class="canvas"></canvas>
</div>
</body>
canvas要素は、何らかのブロック要素に内包させておく必要がある。
次にCSS(SCSS)コード。
.container {
position: relative;
height: 0;
overflow: hidden;
padding-top: 56.25%;
max-width: 600px;
max-height: 340px;
margin: 10px auto;
.canvas {
background: #c00;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
max-width: 600px;
max-height: 340px;
}
}
こちらのコードをCodePenで実行すると次のとおりとなる。
画面サイズに合わせて、縦横比を維持しながらリサイズされていることが分かる。