ホームページ >ウェブフロントエンド >CSSチュートリアル >レスポンシブ Web 開発の究極ガイド
デザインを柔軟に保ち、どのデバイスでも見栄えを良くする方法を次に示します。 Web アプリケーションをレスポンシブにする際に考慮すべき重要な点を見てみましょう。
CSS にはさまざまな単位が用意されているため、適切な単位を選択するのが難しい場合があります。
CSS ユニットの完全なリスト (多くはめったに使用されませんが) については、この MDN Web ドキュメント ページを参照してください。
ウェブ上の画像の応答性を向上させる方法はいくつかあります。
幅の最大制限と高さの最大値を自動に設定すると、画像のアスペクト比を変更せずに画像をレスポンシブにすることができます。
img { width: 100%; /* or any fixed width */ height: auto; }
画像を縮小する場合は、width の代わりに max-width を使用しますが、元のサイズより大きく拡大しないでください。
異なるビューポート サイズまたは解像度に対して、同じ画像の異なるバージョンが必要な場合はどうすればよいですか? タグに srcset 属性を指定すると、ブラウザはデバイスに最適な画像を自動的に選択できます。
異なるバージョンは同一のファイルを意味するのではなく、異なるデバイスに合わせて画像が調整 (サイズ変更、圧縮など) されたことを意味することに注意してください。
<img src="small.jpg" srcset="small.jpg 600w, medium.jpg 1200w, large.jpg 2000w" sizes="(max-width: 600px) 100vw, (min-width: 601px) and (max-width: 1200px) 75vw, (min-width: 1201px) 50vw" alt="Example Image">
異なるビューポート サイズまたは解像度に異なる画像が必要な場合はどうすればよいですか? 要素に srcset 属性を指定すると、異なるビューポート サイズまたは解像度に応じて異なる画像を定義できます。
<picture> <source srcset="small.jpg" media="(max-width: 600px)"> <source srcset="medium.jpg" media="(max-width: 1200px)"> <img src="large.jpg" alt="Example image"> </picture>
この例では:
html { font-size: 16px; } .parent { font-size: 2rem; /* 32px (2 * 16px) */ } .child { font-size: 0.5em; /* 16px (0.5 * 32px) */ }
em 単位は親要素のフォント サイズに相対します。上の例では、子クラスのフォント サイズは 16 ピクセルです。これは、親要素のフォント サイズ 32 ピクセルの半分であるためです。
rem 単位は、ルート要素のフォント サイズ (html) に相対します。上の例では、親クラスのフォント サイズは 32 ピクセルです。これは、ルートのフォント サイズ 16 ピクセルの 2 倍であるためです。
h1 { font-size: 5vw; } h2 { font-size: 5vh; }
相対単位またはビューポートベースの単位を使用する必要があるが、最小値および最大値の範囲内である場合はどうすればよいですか?
たとえば、フォント サイズをビューポートの幅に相対的に設定したいとしますが、最小値は 12 ピクセル、最大値は 48 ピクセルにする必要があります。クランプ機能は、このようなシナリオに最適です。
h1 { font-size: clamp(12px, 3vw, 48px); }
項目を主に 1 次元レイアウトで配置する必要がある場合はどうすればよいでしょうか? (行または列)
<div class="card-container"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> </div>
.card-container { display: flex; /* Enable flexbox layout */ justify-content: space-around; /* Space evenly between and around cards */ } .card { background-color: black; border: 1px solid white; color: white; text-align: center; padding: 20px; }
Flexbox の詳細については、こちらをご覧ください
主に 2 次元レイアウトで項目を配置する必要がある場合はどうすればよいでしょうか? (行と列)
<div class="card-container"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> <div class="card">Card 4</div> </div>
.card-container { display: grid; /* Enable grid layout */ grid-template-columns: 1fr 1fr; /* Two equal columns */ grid-template-rows: 1fr 1fr; /* Two equal rows */ gap: 10px; /* Space between grid items */ width: 100%; /* Full width of the container */ } .card { background-color: black; border: 1px solid white; color: white; text-align: center; padding: 20px; }
グリッドの詳細については、こちらをご覧ください
デバイスが特定の条件を満たしたときに特定のスタイルを適用したい場合はどうすればよいでしょうか?最も一般的に、これらの状態はデバイスの幅に関連しています。
<div class="card-container"> <div class="card">Card 1</div> <div class="card">Card 2</div> <div class="card">Card 3</div> </div>
.card-container { display: flex; flex-direction: column; /* Default: single-column layout */ } /* Media query for tablet devices (min-width: 768px) */ @media (min-width: 768px) { .card-container { flex-direction: row; /* Change to two-column layout */ } .card { flex: 1; /* Equal width for all cards */ } } /* Media query for desktop devices (min-width: 1024px) */ @media (min-width: 1024px) { .card { flex: 25%; /* Each card takes 25% of the width */ } }
Media queries can also be used with other characteristics, such as height, orientation, aspect-ratio, resolution, pointer, prefers-color-scheme, and display-mode.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
This tag is responsible for giving instructions to the browser on how to control the page's dimensions and scaling. The width=device-width part sets the width of the page to follow the screen width and initial-scale=1.0, which controls the zoom level when the page is first loaded.
If you don't want to reinvent the wheel, there are many responsive frameworks available to save time and effort.
Bootstrap: A widely used framework with pre-designed components for quick responsive site development.
Tailwind CSS: A utility-first framework that enables fast custom design with utility classes.
MUI: A React library based on Material Design, offering responsive pre-styled components.
ShadCN: Focuses on modern, accessible, and customizable responsive components.
Ant Design: A comprehensive design system by Alibaba for enterprise applications, featuring responsive components.
A mobile-first approach means starting with the design for smaller screens, like smartphones, and then gradually adding more features for larger screens, like tablets and desktops. This way, we ensure that the basic experience works great on mobile, and then you build on that for bigger devices.
.card-container { /* default code is for mobile view */ display: flex; flex-direction: column; flex-wrap: wrap; justify-content: center; padding: 20px; gap: 12px; } @media (min-width: 768px) { /* queries/cases are for larger views */ .card-container { flex-direction: row; gap: 18px; } }
以上がレスポンシブ Web 開発の究極ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。