57

現在、複数の画面サイズに対応するレイアウトを設計しようとしています。私が設計している画面サイズは以下のとおりです。

画面サイズ:

  1. 640×480
  2. 800×600
  3. 1024×768
  4. 1280x1024 (以上)

私が問題を抱えているのは、css3 メディア クエリを作成することです。これにより、ウィンドウの幅がこれらの幅のいずれかになるとレイアウトが変更されます。以下は、私が現在使用しているメディア クエリの例ですが、うまく機能しないので、誰かが修正を手伝ってくれるかどうか疑問に思っています。

<link rel="stylesheet" type="text/css" media="screen and (max-width: 700px)" href="css/devices/screen/layout-modify1.css">
<link rel="stylesheet" type="text/css" media="screen and (min-width: 701px) and (max-width: 900px)" href="css/devices/screen/layout-modify2.css">
<link rel="stylesheet" type="text/css" media="screen and (max-width: 901px)" href="css/devices/screen/layout-modify3.css">

新しい一連のメディア クエリを使用してみましたが、まだうまくいきません。誰かが私が間違っていることを説明してください。何人かはすでに説明しようとしましたが、私には理解できません。新しいメディア クエリを以下に示します。

<link rel="stylesheet" type="text/css" media="screen and (max-width: 640px)" href="css/devices/screen/layout-modify1.css">

    <link rel="stylesheet" type="text/css" media="screen and (max-width: 800px)" href="css/devices/screen/layout-modify2.css">

    <link rel="stylesheet" type="text/css" media="screen and (max-width: 1024px)" href="css/devices/screen/layout-modify3.css">

    <link rel="stylesheet" type="text/css" media="screen and (max-width: 1280px)" href="css/devices/screen/layout-modify4.css">
4

3 に答える 3

88

すべてを 1 つのドキュメントに入れて、これを使用します。

/* Smartphones (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 480px) {
  /* Styles */
}

/* Smartphones (landscape) ----------- */
@media only screen 
and (min-width : 321px) {
  /* Styles */
}

/* Smartphones (portrait) ----------- */
@media only screen 
and (max-width : 320px) {
  /* Styles */
}

/* iPads (portrait and landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) {
  /* Styles */
}

/* iPads (landscape) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : landscape) {
  /* Styles */
}

/* iPads (portrait) ----------- */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px) 
and (orientation : portrait) {
  /* Styles */
}

/* Desktops and laptops ----------- */
@media only screen 
and (min-width : 1224px) {
  /* Styles */
}

/* Large screens ----------- */
@media only screen 
and (min-width : 1824px) {
  /* Styles */
}

/* iPhone 4 - 5s ----------- */
@media
only screen and (-webkit-min-device-pixel-ratio : 1.5),
only screen and (min-device-pixel-ratio : 1.5) {
  /* Styles */
}

/* iPhone 6 ----------- */
@media
only screen and (max-device-width: 667px) 
only screen and (-webkit-device-pixel-ratio: 2) {
  /* Styles */
}

/* iPhone 6+ ----------- */
@media
only screen and (min-device-width : 414px) 
only screen and (-webkit-device-pixel-ratio: 3) {
  /*** You've spent way too much on a phone ***/
}

/* Samsung Galaxy S7 Edge ----------- */
@media only screen
and (-webkit-min-device-pixel-ratio: 3),
and (min-resolution: 192dpi)and (max-width:640px) {
 /* Styles */
}

ソース: http://css-tricks.com/snippets/css/media-queries-for-standard-devices/

emこの時点で、ピクセルの代わりに値を使用することを検討します。詳細については、https ://zellwk.com/blog/media-query-units/ の投稿を確認してください。

于 2012-12-12T20:13:18.973 に答える
47

それ以上のスタイル シートがない限り、ブレーク ポイントを台無しにしてしまいます。

#1 (max-width: 700px)
#2 (min-width: 701px) and (max-width: 900px)
#3 (max-width: 901px)

3 番目のメディア クエリは、おそらくmin-width: 901px. 現在、#1 と #2 をオーバーラップしており、画面の幅が正確に 901px の場合にのみページ レイアウトを制御します。

更新された質問の編集:

(max-width: 640px)
(max-width: 800px)
(max-width: 1024px)
(max-width: 1280px)

メディア クエリは、catch ステートメントや if/else ステートメントとは異なります。いずれかの条件が一致すると、一致した各メディア クエリのすべてのスタイルが適用されます。すべてのメディア クエリに対してa のみを指定するmin-widthと、一部またはすべてのメディア クエリが一致する可能性があります。あなたの場合、幅が 640px のデバイスは 4 つのメディア クエリすべてに一致するため、すべてのスタイル シートが読み込まれます。あなたが探している可能性が最も高いのはこれです:

(max-width: 640px)
(min-width: 641px) and (max-width: 800px)
(min-width: 801px) and (max-width: 1024px)
(min-width: 1025px)

これで重なりはなくなりました。スタイルは、デバイスの幅が指定された幅の間にある場合にのみ適用されます。

于 2012-12-12T20:18:35.683 に答える