1. ホーム
  2. Web制作
  3. html5

HTML5の再適応スキームとビューポート適応の問題点を解説

2022-01-21 12:52:42

H5 remの適応スキームとビューポート適応

レム

remはCSS3で新たに追加された相対単位(ルートem、ルートem)
現在のページのHTMLページのフォントサイズに応じてのみ設定、ルートのフォントサイズが18pxの場合、1rem=18pxとなる

メディアクエリの設定

@media screen and (min-width: 320px) {
  html {
    font-size: 32px;
  }
}
@media screen and (min-width: 375px) {
  html {
    font-size: 37.5px;
  }
}
@media screen and (min-width: 414px) {
  html {
    font-size: 41.4px;
  }
}
@media screen and (min-width: 750px) {
  html {
    font-size: 75px;
  }
}

JSを使って動的に変更する

<script>
  // Adjust the fontsize of the html according to the screen size
  function setHtmlFontSize() {
    const width = document.documentElement.clientWidth;
    document.documentElement.style.fontSize = width / 10 + "px";
  }
  // Initialize
  setHtmlFontSize();
  // Listen for screen size change events
  window.addEventListener("resize", setHtmlFontSize);
  // listen to the screen flip event
  window.addEventListener("orientationchange", setHtmlFontSize);
</script>

ビューポート

スケーリングによるモバイルでの各サイズへの適応

適応スキーム 現在の画面サイズに基づいてスケーリング値を動的に設定するために、mate viewportプロパティを作成します。

ビューポート属性

<テーブル 属性 説明 備考 幅 ビューポートの幅をpxで定義します。 正の整数または文字列 device-width 高さ ビューポートの高さをpx単位で定義します。 正の整数または文字列 device-height イニシャルスケール デバイスのディップ幅とビューポートのサイズとの比率を定義する 0.0 から 10.0 までの正の数 最大スケール 最大スケール値を定義する。この値は minimum-scale の値以上でなければならない。 0.0 から 10.0 までの正の数 最小スケール スケールの最小値を定義する。この値は,max-scaleの値以下でなければならない。 0.0 から 10.0 までの正の数 ユーザースケーラブル ユーザーがページを拡大縮小できるかどうかを示すブーリアン値 はいまたはいいえ

jsを使用してviewportプロパティを動的に設定します。

原理 ビューポートのinitial-scale関連プロパティを設定することで、すべてのデバイスレイアウトビューポートの幅をデザインの幅に調整します。

// Define the width of the design to be 375
const DESIGN_WIDTH = 375;
//meets mobile adaptation by setting the initial-scale value of the content in the meta element
const setViewport = function () {
  // calculate the width of the current screen and the design scale
  let scale = window.screen.width / DESIGN_WIDTH;
  // Get the element
  let meta = document.querySelector("meta[name=viewport]");
  let content = `width=${DESIGN_WIDTH}, initial-scale=${scale}, maximum-scale=${scale}, minimum-scale=${scale}`;
  // determine if it already exists
  if (!meta) {
    meta = document.createElement("meta");
    meta.setAttribute("name", "viewport");
    document.head.appendChild(meta);
  }
  meta.setAttribute("content", content);
};
setViewport();
// Listen for screen change events
window.addEventListener("resize", setViewport);
// listen to the screen flip event
window.addEventListener("orientationchange", setViewport);

HTML5におけるrem適応、HTML5におけるviewport適応については、この記事でまとめています。HTML5におけるrem適応については、Script Houseの過去記事を検索するか、以下の記事を引き続き閲覧してください。