Knoz23
@Knoz23

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

viewportの使い方を教えてほしいです。

解決したいこと

html cssでviewportの設定をしたい

webエンジニアの研修の自主学習で簡単な画像の組み合わせのページを作っているのですが、viewportの設定(?)の仕方がわからず困っております。
いろいろなページを参考に書いてみたのですが、理解力と検索力が足らず質問させていただいております。
htmlもcssも右も左もわからない初級者以下の質問となります。
ご助力いただけますと幸いです。

発生している問題・エラー

chromeでプレビューすると何も表示されなくなってしまう

例)

白紙のページが表示されてしまう

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

htmlのコードです
<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>PC</title>
    <meta name="viewport" content="width=device-width">
    <meta charset="utf-8">
    <link rel="stylesheet" href="Puzzle_01_PC.css">
  </head>
  <body>
    <div class="blue"></div>
    <div class="orange"></div>
    <div class="yellow"></div>
    <div class="red"></div>
  </body>
</html>

cssのコードです
@media screen and (min-width: 786px) { 
.blue{
  height: 100px;
  width: 400px;
  background-color: #739aff;
}
.orange{
  height: 250px;
  width: 150px;
  background-color: #ffa473;
  float: left;
}
.yellow{ 
  height: 250px;
  width: 250px;
  background-color: #e6ff73;
  float: left;
}
.red{
  height: 100px;
  width: 400px;
  background-color: #ff7376;
  clear: left;
}
}

例)

def greet
  puts Hello World
end

自分で試したこと

meta name="viewport"と@ media screenを両方とも入れていいものなのか、わからず片方ずつだけにしてみたりいろいろと試してみたのですが上手くいきませんでした。

0

2Answer

chromeブラウザでのプレビュー時に何も表示されないのはcssの書き方が原因です

viewportの設定は間違ってないと思います
丁寧に書くのであれば以下のようにした方が望ましいでしょう

viewport
<meta name="viewport" content="width=device-width, initial-scale=1">

簡単に説明を加えると、「このhtmlで描画されるcontentの幅は端末画面の幅に準拠し、描画時の初期表示倍率は1倍に設定します」となります

本題の表示されない問題ですが

css
@media screen and (min-width: 786px) {
~
}

が原因です

上記は端末画面の表示領域が786px以上のサイズであるときに{}内が適用されるという書き方のため、スマホ・タブレットなどの小型端末やそれと同等のサイズでは何も表示されません

css
// ベースのスタイル
.blue {
  ~
}
.orange {
  ~
}
.yellow {
  ~
}
.red {
  ~
}

// 786px以上のときのスタイル
@media screen and (min-width: 786px) {
  .blue {
    ~
  }
  .orange {
    ~
  }
  .yellow {
    ~
  }
  .red {
    ~
  }
}

media queryを用いたレスポンシブレイアウトを実現する場合、上記のように指定する必要があります
https://developer.mozilla.org/ja/docs/Learn/CSS/CSS_layout/Media_queries

ベースのスタイルに該当する部分が未指定のため、何も表示されなかったわけです

1Like

Comments

  1. @Knoz23

    Questioner

    すごくわかりやすかったです。本当にありがとうございます。

Comments

  1. @Knoz23

    Questioner

    ありがとうございます。

Your answer might help someone💌