初心者向け!CSSのMedia Queriesと@media.device-widthでレスポンシブデザインを作ろう

2024-04-02

CSSのMedia Queriesと@media.device-width

@media.device-widthは、デバイスのに基づいてスタイルシートを切り替えるためのメディアクエリです。例えば、以下のように記述することで、スマートフォンとタブレット、デスクトップそれぞれに異なるスタイルを適用できます。

/* スマートフォン */
@media (max-width: 575px) {
  body {
    font-size: 16px;
  }
}

/* タブレット */
@media (min-width: 576px) and (max-width: 767px) {
  body {
    font-size: 18px;
  }
}

/* デスクトップ */
@media (min-width: 768px) {
  body {
    font-size: 20px;
  }
}

@media.device-widthの使いどころ

  • スマートフォン、タブレット、デスクトップそれぞれに異なるレイアウトを適用する
  • 画面幅に応じて、画像のサイズや配置を調整する
  • フォントサイズや行間を調整する
  • ナビゲーションバーの表示・非表示を切り替える

その他のメディアクエリ

  • @media.min-width:指定された最小幅以上のデバイスに適用
  • @media.orientation:デバイスの向き(縦向き/横向き)を指定

注意点

  • メディアクエリは、ブラウザの互換性によって動作が異なる場合があります。
  • 複数のメディアクエリが一致する場合、メディアクエリリストの最後のものが適用されます。

補足

  • 上記の例はあくまで基本的なものです。より複雑な条件を設定することも可能です。
  • メディアクエリは、JavaScriptと組み合わせてより動的なレスポンシブデザインを実現できます。


さまざまなデバイス向けのサンプルコード

スマートフォン

@media (max-width: 575px) {
  /* スマートフォン向けのスタイル */
  body {
    font-size: 16px;
  }
  
  .main-content {
    width: 100%;
  }
  
  .sidebar {
    display: none;
  }
}

タブレット

@media (min-width: 576px) and (max-width: 767px) {
  /* タブレット向けのスタイル */
  body {
    font-size: 18px;
  }
  
  .main-content {
    width: 75%;
  }
  
  .sidebar {
    display: block;
    width: 25%;
  }
}

デスクトップ

@media (min-width: 768px) {
  /* デスクトップ向けのスタイル */
  body {
    font-size: 20px;
  }
  
  .main-content {
    width: 50%;
  }
  
  .sidebar {
    width: 30%;
  }
}
  • 画像のサイズや配置をデバイス幅に応じて調整する
@media (max-width: 575px) {
  img {
    width: 100%;
  }
}

@media (min-width: 576px) {
  img {
    width: 50%;
  }
}
@media (max-width: 575px) {
  .nav {
    display: none;
  }
}

@media (min-width: 576px) {
  .nav {
    display: block;
  }
}


Media Queries を使用せずにデバイス幅に応じたスタイルを適用する方法

JavaScript を使用して、デバイス幅を取得し、それに応じてスタイルを動的に変更することができます。

const deviceWidth = window.innerWidth;

if (deviceWidth <= 575) {
  // スマートフォン向けのスタイル
  document.body.style.fontSize = "16px";
} else if (deviceWidth <= 767) {
  // タブレット向けのスタイル
  document.body.style.fontSize = "18px";
} else {
  // デスクトップ向けのスタイル
  document.body.style.fontSize = "20px";
}

CSS Grid レイアウトを使用すると、デバイス幅に応じて要素を自動的に配置することができます。

.container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-gap: 10px;
}

@media (max-width: 575px) {
  .container {
    grid-template-columns: repeat(1, 1fr);
  }
}

@media (min-width: 576px) and (max-width: 767px) {
  .container {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 768px) {
  .container {
    grid-template-columns: repeat(3, 1fr);
  }
}

Flexbox レイアウトを使用すると、要素を柔軟に配置することができます。

.container {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

@media (max-width: 575px) {
  .container {
    flex-direction: row;
  }
}

Media Feature Queries Level 5 では、min-widthmax-width 以外にも、より詳細な条件を指定することができます。

@media (min-width: 575px) and (max-width: 767px) and (orientation: landscape) {
  /* タブレット横向き向けのスタイル */
}
  • シンプルなレイアウトの場合は、@media.device-width を使用するのが easiest 方法です。
  • より複雑なレイアウトの場合は、JavaScript や CSS Grid レイアウトを使用する必要があります。
  • 将来のブラウザ互換性を考慮する場合は、Media Feature Queries Level 5 を使用することができます。



ゲーム理論:ビジネス、政治、日常生活に潜む戦略的思考

ゲーム理論の基本的な要素は以下の3つです。プレイヤー: 意思決定を行う主体戦略: プレイヤーが選択できる行動の選択肢利得: プレイヤーが各戦略を選択したときの得られる利益ゲーム理論は、これらの要素を数学的なモデルを用いて分析することで、プレイヤーがどのような戦略を選択するのか、どのような結果になるのかを予測することができます。



CSSでセピア色の世界へようこそ!画像や要素をレトロに変身させる魔法の方法

CSSの「Filter Effects」機能の一つである「sepia()」は、画像や要素をモノクロ化し、茶褐色(セピア色)のトーンを適用する関数です。古い写真のようなレトロな雰囲気を演出したい場合などに効果的に使用できます。構文n は、セピア色の強さを表す数値です。0.0の場合は元の画像の色合いが維持され、1.0になると完全にセピア色になります。


デバイスに合わせた最適な表示: CSS Media Queriesと@media.monochrome

@media. monochromeは、モノクロディスプレイ向けのスタイルシートを指定するメディアクエリです。カラーディスプレイではないデバイスで、どのようにコンテンツを表示するかを制御できます。利用例:上記の例では、モノクロディスプレイでは背景色を白、テキスト色を黒に設定しています。


カラーパレット作成ツールも紹介!CSS Miscellaneous color でデザインのインスピレーションを高める

最も簡単な色指定方法は、140種類以上用意されているカラーネームを使用することです。例えば、red、blue、green といった色の名前を指定することで、その色を表示することができます。より正確な色指定には、16進数コードを使用することができます。16進数コードは、#記号 followed by 6桁の数字で構成されます。最初の2桁は赤、次の2桁は緑、最後の2桁は青の強度を表します。例えば、#FF0000 は赤、#0000FF は青、#FFFF00 は黄色を表します。


すべてのユーザーに優しいWebサイト:グリッドレイアウトとアクセシビリティ

CSSグリッドレイアウトは、Webページのレイアウトを構築する強力なツールですが、アクセシビリティを考慮せずに使用すると、一部のユーザーにとって問題が発生する可能性があります。このガイドでは、CSSグリッドレイアウトとアクセシビリティの関係について解説し、アクセシビリティを向上させるためのベストプラクティスを紹介します。



CSS Transforms matrix3d() 関数の詳細解説: 3D 空間における要素のあらゆる変形を可能にする強力なツール

matrix3d() の仕組み:matrix3d() は、16 個の数字からなる 3D 変形マトリックス を受け取り、そのマトリックスに基づいて要素を変形します。マトリックス内の各数字は、要素の位置、回転、拡大縮小、傾斜など、特定の変形パラメータに対応します。


CSS Miscellaneousの gap プロパティ

この解説では、gap プロパティの以下の内容を分かりやすく説明します。gap プロパティの役割と利点gap プロパティの基本的な使い方gap プロパティの詳細な設定gap プロパティとその他のプロパティとの比較gap プロパティの注意点と制限事項


CSS ::before を使って三角形の装飾を生成する方法

概要CSSの疑似要素「::before」は、既存のHTML要素に装飾的なコンテンツを挿入するために使用されます。具体的には、要素の前に疑似要素を追加し、スタイルを適用することができます。装飾的なアイコンや矢印、吹き出しなどを生成するために役立ちます。


CSS Miscellaneous: border-image-outset プロパティの分かりやすい解説

このプロパティの仕組み:border-image-outset は、1 つから 4 つの値を受け取ることができます。 1 つの値: すべての辺に同じアウトセット距離を設定します。 2 つの値: 最初の値は上辺と下辺、2 番目の値は左右の辺に設定されます。 3 つの値: 最初の値は上辺、2 番目の値は左右の辺、3 番目の値は下辺に設定されます。 4 つの値: 上辺、右辺、下辺、左辺の順に各辺に設定されます。


属性セレクター、擬似クラスセレクター、擬似要素セレクター:表現力を広げる高度なセレクター

隣接兄弟セレクター(+)概要: ある要素の直後に続く兄弟要素を選択例:上記の例では、h1要素の直後に続くp要素のみ赤色で表示されます。一般兄弟セレクター(~)概要: ある要素のすべての兄弟要素を選択例:上記の例では、h1要素の後に続くすべてのp要素のフォントサイズが16pxになります。