追記(2021/11/05):htmlにscaleをかけるとclientXなどの座標回りが奇妙な挙動(JavaScript上のX,Yと画面で見たX,Yが対応していない?)になるので取り扱い注意
大体のブラウザには web ぺージを拡縮する機能がついています。これは ctrl + マウスホイールで操作できます。この機能によっ
て次画像らの様にweb 中の各要素の比率を変えずに画面を大きくしたり、小さくしたりできます。
画面サイズが n% の時のデザインがちょうどいい、といった具合の要望があった際、この記事で紹介する CSS が役に立ちます。
ブラウザの拡縮機能を CSS で再現するのは意外とコツがいります。というのも画面中の各要素の比率と、画面のサイズとブライザのサイズ差に案外引っかかるからです。この拡縮は次のCSSで実現できます。
// scss html { // 70% バージョン $scale: 0.7; // ページを 70% のサイズに縮小 transform: scale($scale); // デフォルトでは中央に寄ってしまうので、左上を起点に拡縮するように指定 transform-origin: left top; // ブラウザサイズと画面サイズを一致 height: calc(100% / $scale); width: calc(100% / $scale); } // css html { // 50% バージョン transform: scale(0.5); transform-origin: left top; height: calc(100% / 0.5); width: calc(100% / 0.5); }
これを使うと次の様に、ブラウザの拡縮機能同様の拡縮をCSSで再現できます。
display:fixed が事故を起こすようになった場合はHTMLとCSSを次の様にするよ良いです。
<html><body> <div id="app"> <!-- コンテンツ --> </div id="app"> </body></html>
// scss #app{ // 70% バージョン $scale: 0.7; // ページを 70% のサイズに縮小 transform: scale($scale); // デフォルトでは中央に寄ってしまうので、左上を起点に拡縮するように指定 transform-origin: left top; // ブラウザサイズと画面サイズを一致 height: calc(100% / $scale); width: calc(100% / $scale); } // css #app{ // 50% バージョン transform: scale(0.5); transform-origin: left top; height: calc(100% / 0.5); width: calc(100% / 0.5); }