「screen」と「only screen」の違い
メディアクエリにおける「screen」と「only screen」の違い
screen
screen
は、幅広い画面デバイスを対象としたメディアタイプです。具体的には、以下のようなデバイスが含まれます。
- デスクトップパソコン
- ノートパソコン
- タブレット
- スマートフォン
違い
screen
とonly screen
の主な違いは、プリンターなどの非画面デバイスを除外するかどうかです。
screen
: 画面デバイスだけでなく、プリンターなどの非画面デバイスも対象とする。
例
以下は、screen
とonly screen
を使用したメディアクエリの例です。
/* デスクトップパソコンとノートパソコンのみ */
@media (min-width: 768px) {
body {
font-size: 16px;
}
}
/* タブレットとスマートフォンのみ */
@media (max-width: 767px) {
body {
font-size: 14px;
}
}
/* 画面デバイスのみ */
@media only screen {
body {
background-color: #fff;
}
}
/* 画面デバイスと非画面デバイス */
@media screen {
body {
color: #000;
}
}
screen
: 幅広い画面デバイスを対象とする。only screen
: 画面のみを対象とする。
メディアクエリを使用する際は、対象とするデバイスに合わせて適切なメディアタイプを選択することが重要です。
HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Media Queries Example</title>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
CSS
/* デスクトップパソコンとノートパソコンのみ */
@media (min-width: 768px) {
h1 {
font-size: 24px;
}
p {
font-size: 16px;
}
}
/* タブレットとスマートフォンのみ */
@media (max-width: 767px) {
h1 {
font-size: 18px;
}
p {
font-size: 14px;
}
}
/* 画面デバイスのみ */
@media only screen {
body {
background-color: #fff;
}
}
/* 画面デバイスと非画面デバイス */
@media screen {
body {
color: #000;
}
}
このコードを実行すると、画面サイズによって以下のようになります。
- デスクトップパソコンとノートパソコン:
h1
のフォントサイズは24px
- すべての画面デバイス:
- 背景色は白色
- テキストの色は黒色
その他のサンプル
- 特定の解像度のみを対象とする
- 印刷時にのみ適用されるスタイルを指定する
- 特定の向き (縦向き/横向き) のみに適用されるスタイルを指定する
詳細は、以下のサイトを参照してください。
メディアクエリにおける「screen」と「only screen」の代替方法
メディア機能の組み合わせ
min-width
やmax-width
などのメディア機能を組み合わせて、画面デバイスを対象とする方法です。
/* デスクトップパソコンとノートパソコンのみ */
@media (min-width: 768px) and (max-width: 1920px) {
body {
font-size: 16px;
}
}
/* タブレットとスマートフォンのみ */
@media (min-width: 320px) and (max-width: 767px) {
body {
font-size: 14px;
}
}
メディアタイプ「all」
all
メディアタイプは、すべてのデバイスを対象とします。ただし、screen
とonly screen
よりも優先度が低いため、一般的には使用されません。
/* すべてのデバイス */
@media all {
body {
color: #000;
}
}
JavaScriptを使用して、デバイスの種類を判定し、それに応じてスタイルを切り替える方法もあります。
const isScreen = () => {
// デバイスの種類を判定する処理
};
if (isScreen()) {
// 画面デバイスの場合の処理
} else {
// 非画面デバイスの場合の処理
}
screen
とonly screen
は、メディアクエリで画面デバイスを対象とする最も一般的な方法です。- メディア機能の組み合わせやメディアタイプ「all」などの代替方法もあります。
- 特殊な要件がある場合は、JavaScriptによる判定も検討できます。
最適な方法は、要件や状況によって異なります。
css media-queries