質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.35%

html,cssで表示崩れが起きてしまう

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,145

score 9

今Progateで勉強しているのですが、よくわからない点があったので質問させてください。

以下のHTMLコードにおいて、helloが3つ並んでいるところなのですが、
1つ目だけなぜかページの真ん中に表示されて、
2つ目以降は左寄せで表示されます。

私の想定では、全部左寄せで表示されるイメージだったのですが...

ちなみにCSSでコメントアウトしている .mainのpaddingを行うと、全てちゃんと左寄せで表示されます。

基本的な質問で申し訳ありませんが、よろしくお願い致します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Progate</title>
    <link rel="stylesheet" href="stylesheet.css">
  </head>
  <body>
    <!-- ここからHTMLを書き始めてください -->
    <div class='header'>
      <div class='header-logo'>
        Progate
      </div>
      <div class='header-list'>
        <ul>
          <li>プログラミングとは</li>
          <li>学べるレッスン</li>
          <li>お問い合わせ</li>
        </ul>        
      </div>
    </div>
    <div class='main'>
      <p>hello</p>
      <p>hello</p>
      <p>hello</p> 
    </div>
  </body>
</html>
/* CSSのリセット(消さないでください) */
html, body,
ul, ol, li,
h1, h2, h3, h4, h5, h6, p,
form, input, div {
  margin: 0;
  padding: 0;
}

body {
  font-family: "Avenir Next", "Hiragino Kaku Gothic ProN W3", sans-serif;
}

/* ここからCSSを記述してください */
.header {
  /*background-color: green;*/
  background-color: #26d0c9;
  height: 90px;
}

.header-logo {
  font-size: 36px;
  padding: 20px 40px;
  color: #fff;
  float: left;
}

.header-list {
  color: #fff;
}

.header-list li {
  float: left;
  list-style: none;
  padding: 33px 20px;
}

.main {
  /*padding: 80px 100px;*/
}
.copy-container h1 {
  font-size: 140px;
}

.copy-container h2 {
  font-size: 60px;
}

.copy-container span {
  color:red;
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2019/08/29 06:24

    タイトルは要件を記載してください。汎用的すぎるタイトルだと何が問題なのか分からないのかが伝わりません。あとから見直したときに自身も何が問題だったか分からなくなります。
    もう少し質問内容に寄せてください。

    キャンセル

  • querykuma

    2019/08/31 00:52

    この質問に初心者マークを付けていただけますか?
    https://teratail-v2.storage.googleapis.com/assets/img/tour/03.mp4?1566365738722466
    https://teratail.com/tour

    キャンセル

  • tsr

    2019/09/01 10:12

    申し訳ありませんでした。
    今後気をつけるようにします。
    参考のリンクまで貼っていただき恐縮です。

    キャンセル

回答 3

+5

.header-logo がfloatされている上にはみ出ていて、そこに引っかかっています。
floatは適切にclearする必要があります。

【ChromeデベロッパーツールでCSSをチェックする方法 | なんでものびるWEB】
https://nandemo-nobiru.com/2944/

【初心者向け!Chromeの検証機能(デベロッパーツール)の使い方】
https://saruwakakun.com/html-css/basic/chrome-dev-tool

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/01 10:15

    回答していただきありがとうございます!
    デベロッパーツールも存在しかしらなかったので、とても勉強になりました。

    キャンセル

+3

そちらのスクリーンショットを載せていただけませんか?
こちら(Firefox Quantum Developer Edition 70)では,状況が再現しませんでした
イメージ説明

もしかすると,キャッシュのせいかもしれません
たしかWindowsであれば,Ctrl+F5でキャッシュをクリア(スーパーリロード)できます
お試しください

cf.

追記(20190829004407)

cf.
kei344さんのデモ
https://jsfiddle.net/zLp0v8fq/show/

  • Firefox Dev Edition:
    イメージ説明

  • Firefox:
    イメージ説明

いずれもこちらでは見ためには問題ないですね...

と思ったのですが,画面横幅のリサイズや,要素全体の拡大縮小を行ったところ,状況が再現できました.画面の解像度の違いによって誤差が生まれているのかもしれません
(各要素の状態が分かりやすいように,テキストを選択状態にしています)
イメージ説明

まあ,floatは後処理を忘れがちですし,display: inline-block;やflexboxを使うほうが直観的だと思うので,個人的にそちらをお勧めします
(ちなみに私は,CSSリセットでdisplay: inline-block;box-sizing: border-box;は(疑似要素も含めて)必ず入れていました)

ヘッダーがはみ出す系は,とりあえず親要素にoverflow:hidden;するのでも良いですが,余力があればレスポンシヴ・デザインも目指しましょう(Progateのカリキュラムに組み込まれている場合は一旦スルーしてもらって構わないです)

追記(20190901142716)

レイアウト確認用のCSS(例)

*, ::before, ::after{
  box-shadow:
    inset 0 2px red,
    inset 0 -2px blue,
    inset 2px 0 yellow,
    inset -2px 0 green;
}
*, ::before, ::after{
  color: yellow;
  background: linear-gradient(45deg, rgba(0,0,0) 0%, rgba(255,255,255,.5) 100%);
}

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/08/29 19:25

    「liveasnotes」さんへ

    「header-logo」のテキスト(line-height等)がどこかでリセットされているのかもしれません。
    私の環境では、提示のコード(提示のリセット含む)だと、「kei344」さんと同じように、float未処理のうえに「header-logo」のテキストが「header」よりはみ出していて、引っ掛かっている状態になります。

    キャンセル

  • 2019/08/30 20:24

    情報提供ありがとうございます.Chromeを入れて試したところ,引っかかっているのが確認できたので,Firefoxのレンダリングエンジンの仕様である可能性が高そうです.

    キャンセル

  • 2019/09/01 10:19

    検証していただきありがとうございました。
    お手数おかけして申し訳ありません。
    floatは後処理が大事なんですね。
    教えていただいたこと、実践させていただきます。

    キャンセル

checkベストアンサー

+2

Chromeで再現します。

問題解決のために

{
  border: 1px solid red;
}

を付けてブロックの境界を表示する手法をオススメします。

.header {
  height: 80px;
}


にすると境界が
height: 80px
となり、1つ目のhelloがブロックに引っかかっています。

.header {
  height: 100px;
}

にすると境界が
height: 100px
となります。

heightを大きくすれば解決すると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/01 10:14

    すごくよくわかりました!
    こういう手法を使えば視覚的に理解できるんですね。
    ありがとうございました。

    キャンセル

  • 2019/09/01 11:19

    >heightを大きくすれば解決すると思います。

    解決法のひとつではありますが、レイアウトにも影響しますので、floatのクリアが先に必須かと思います。

    キャンセル

  • 2019/09/01 14:26

    borderをつけると,その幅の分サイズが変化してしまうので,
    個人的にはbox-shadowがおすすめです

    CSSの最下行に以下のコードを挿入してみてください

    *, ::before, ::after{
    box-shadow:
    inset 0 1px red,
    inset 0 -1px blue,
    inset 1px 0 yellow,
    inset -1px 0 green;
    }

    insetを使って左右上下に,異なる色の影を,要素の内側に落としています

    あるいは,

    *, ::before, ::after{
    color: yellow;
    background: linear-gradient(45deg, rgba(0,0,0) 0%, rgba(255,255,255,.5) 100%);
    }

    のような方法もアリですね

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る