OSSANS Project since 2020

「もし四十のおっさんがプログラミングを始めたらどう人生変わるのか」
このブログのメインテーマです
肩肘張らずにユルく、ときたま厳しくやっていきます
※プログラミング以外のことも書きます

JavaScript

2022.11.25(更新)

【5分で完了!】webデザインにおけるスマホファーストビュー高さ設定方法

アイキャッチ画像
JavaScript

height: 100vh; に設定しているのに、スマホで見た時に高さが合わない…。どうして?

こんなお悩みに答えていきます。

本記事の内容

  • スマホでのファーストビューについて
  • ツールバーにかぶらない高さの指定
  • CSSのカスタムプロパティの設定

本記事を対象とする方

  • 初めてwebサイトを制作している方
  • レスポンシブデザインに取り組んでいる方
  • こだわったwebデザインを作りたい方

この記事を書いている僕はプログラミング歴1年2ヶ月です。webエンジニアとして”社内転職”に成功しました。

JavaScriptでhtmlのclientHeightを指定する

まず、{height:100vh;}でのファーストビューを確認しましょう。

ファーストビューとは、webサイト、主にTOPページへ接続された時に表示される領域、内容を指します。以下の画像は、以前の私のポートフォリオサイトのTOPページ画像です。

赤枠部分を見てください。表示したいテキストがツールバーにかぶってしまってますね。

次にJavaScriptでclientHeight設定をした後のファーストビューを確認しましょう。

htmlのclientHeightとは、Window インターフェイスの読み取り専用プロパティで、ウィンドウの内部の高さをピクセル単位で返します。水平スクロールバーがあれば、その高さを含みません。(mozilla web documentから引用)

ツールバーにかぶらず表示されました。この理由は以下の通りです。

こうやって見るとわかりやすく理解できそうですね。

いかがでしょうか?簡単ですよね?100vhだとツールバーにかぶってしまいます。ブログなどの投稿記事ではファーストビューデザインへのこだわりを入れることは少ないかもしれませんが、コーポレートサイト等のTOPページは細部までこだわりながらデザイン設計することになります。インパクトが重要だからです。

では実装のためのコードを紹介します。

【JavaScript】

  1. let vh = document.querySelector('html').clientHeight;
  2. document.querySelector('header').style.height = vh + 'px';

たったこれだけです。この例ではファーストビュー全体をheaderタグで扱っていて、JavaScriptでheaderのプロパティを設定しています。CSSではheight設定を入れていません。

これでファーストビューの設定がうまく行きました。しかし問題がないわけではありません。

通常、JavaScriptはfooter手前で読み込むため、JavaScriptでCSSを設定をすると、head内で読み込んだCSSを上書きします。特定の条件、例えばレスポンシブでvwが768px以上の時はheightを100pxにしたい、などといった場合はやはりCSSでプロパティ設定するほうが簡単かつ便利だったりします。(以前、それが原因で意図したスタイリングができなかったことがありました。)そこで使用するのが、CSSのカスタムプロパティです。

CSSでカスタムプロパティとして登録する

カスタムプロパティって何ですか?

文字通り、プロパティの内容を自分の好きな値として登録することです。まず、:rootを使って以下のように初期登録します。

【CSS】

  1. :root {
  2.  clientHeight: 0px; /* 初期化なので値はなんでも構いません */
  3. }

そして、使う時はvarで以下のように記述します。

【CSS】

  1. header {
  2.  height: var(--clientHeight); /* この場合headerの高さは初期登録した値の0pxになります */
  3. }

clientHeightプロパティはCSSにはありませんが、JavaScriptのsetProperty関数を使うと、CSSのプロパティとすることができます。

これがいわゆるカスタムプロパティってやつです。便利ですね!

【JavaScript】

  1. let vh = document.querySelector('html').clientHeight;
  2. document.documentElement.style.setProperty('--clientHeight', vh + 'px');

第一引数はCSSの:rootで登録した登録名(変数)です。

第二引数はhtmlのclientHeightの値です。この例では変数vhに代入しているのでvhを使います。

今回のまとめ

今回はスマホファーストビュー表示のためのheight設定を紹介しました。少しでも皆さんの参考になれば幸いです。最後まで読んで頂き、ありがとうございました。

JavaScriptのclientHeightプロパティを使う

CSSのカスタムプロパティを使う

関連記事

  • JavaScript
    ブログアイキャッチ画像
    JavaScript
    2023.03.04(更新)

    【実例コードあり】覚えておきたいパララックスデザインの3つの基本

  • JavaScript
    ブログアイキャッチ画像
    JavaScript

    【ユーザー離脱阻止!】画面遷移アニメーション実装時の注意点

  • JavaScript
    ブログアイキャッチ画像
    JavaScript

    【図解あり】JavaScript / 要素の高さや位置の取得まとめ

  • JavaScript
    ブログアイキャッチ画像
    JavaScript
    2022.11.19(更新)

    「一瞬でトップへ戻るボタン」を実装する方法【jQuery不要】

  • JavaScript
    ブログアイキャッチ画像
    JavaScript
    2023.02.02(更新)

    【CSSとJavaScriptのみ】ページ内リンクでスムーススクロールさせる方法

  • JavaScript
    ブログアイキャッチ画像
    JavaScript
    2023.02.21(更新)

    【お手軽だった!】画像クリックで拡大画像をポップアップ表示する方法

CATEGORY カテゴリー別最新記事

  • CSS
    アイキャッチ画像
    CSS

    【CSS】margin?position?要素の中央寄せで使うプロパティとは?

  • Docker
    アイキャッチ画像
    Docker
    2022.10.03(更新)

    【簡単設定!】DockerでWordPressをローカル開発する方法

  • HTML
    アイキャッチ画像
    HTML
    2023.02.18(更新)

    【図解あり】aタグの入れ子ルールとHTMLの入れ子ルールを覚える方法

  • JavaScript
    アイキャッチ画像
    JavaScript
    2023.03.04(更新)

    【実例コードあり】覚えておきたいパララックスデザインの3つの基本

  • Python
    アイキャッチ画像
    Python
    2023.02.09(更新)

    【やらなきゃ損!】2日でできるPythonのExcelコピペ自動化!

  • Study
    アイキャッチ画像
    Study
    2023.02.16(更新)

    稼ぐために始めたプログラミングのこれまでの振り返り。勉強方法や役立った本も紹介。

  • web site
    アイキャッチ画像
    web site
    2022.11.26(更新)

    ページ表示速度アップ!npmでソースファイルを軽量化する方法【サクッと簡単!】

  • WordPress
    アイキャッチ画像
    WordPress
    2022.10.26(更新)

    【コピペ可】WordPressサイトをPWA化するためにService Workerを実装してみた。