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

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

ただいまの
回答率

88.78%

なぜdisplay:block;の指定なのか その理由が分からないです。

解決済

回答 2

投稿 編集

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

Akaho

score 39

progateのHTML&CSS学習コース中級編をやっています。
課題内容はログインリンクを完成させることを目指したものです。

自分の理解があってるのかわからないのでその部分を教えて下さい。
それは、ログインリンクのおすボタンを初期状態ではインライン要素であったため、押しづらいのを解消するためにdisplay:block;にするよう指示がありました。
それに対する自分の理解は、headerタグの中にあるheader-leftがfloatで浮いているため、headerタグの高さは残りのheader-rightがあることが理由で保たれてる。そのため、headr-right aに対してdisplay:blockと指定してもheader-leftが無いものと認識してるから、横幅いっぱいにとるblock要素の指定がokなのかな〜と考えています。
その考えがあってるなら別にdisplay:inline-blockでも構わないんじゃないかと思ったので、指定の方をinline-blockで試しました。結果はダメでした。指示がblockと書いてある理由で無理なのか、自分の理解が間違っているのか教えて下さい。
ちなみに、検索して調べてみましたが自分の探す答えが見つからなかったです。検索内容『floatとblock要素の併用』
イメージ説明
display:inline-block;を指定した結果画像 下。
イメージ説明

コード
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Progate</title>
    <link rel="stylesheet" href="stylesheet.css">
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  </head>
  <body>
    <header>
      <div class="container">
        <div class="header-left">
          <img class="logo" src="https://prog-8.com/images/html/advanced/main_logo.png">
        </div>
        <div class="header-right">
          <a href="#" class="login">ログイン</a>
        </div>
      </div>
    </header>
    <div class="top-wrapper">
      <div class="container">
        <h1>LEARN TO CODE.</h1>
        <h1>LEARN TO BE CREATIVE.</h1>
        <p>Progateはオンラインプログラミング学習サービスです。</p>
        <p>初心者にもやさしいスライドとレッスンで、ウェブサービスを作りながらプログラミングを学んでいきましょう。</p>
        <div class="btn-wrapper">
          <a href="#" class="btn signup">新規登録はこちら</a>
          <p>or sign up with</p>
          <a href="#" class="btn facebook"><span class="fa fa-facebook"></span>Facebookで登録</a>
          <a href="#" class="btn twitter"><span class="fa fa-twitter"></span>Twitterで登録</a>
        </div>
      </div>
    </div>
    <div class="lesson-wrapper">
    </div>
    <div class="message-wrapper">
    </div>
    <footer>
    </footer>
  </body>
</html>
コード
body {
  margin: 0;
  font-family: "Hiragino Kaku Gothic ProN";
}

a {
  text-decoration: none;
}

.container {
  width: 1170px;
  padding: 0 15px;
  margin: 0 auto;
}

.top-wrapper {
  padding: 180px 0 100px 0;
  background-image: url(https://prog-8.com/images/html/advanced/top.png);
  background-size: cover;
  color: white;
  text-align: center;
}

.top-wrapper h1 {
  opacity: 0.7;
  font-size: 45px;
  letter-spacing: 5px;
}

.top-wrapper p {
  opacity: 0.7;
}

.btn-wrapper {
  margin: 20px 0;
}

.btn-wrapper p {
  margin: 10px 0;
}

.signup {
  background-color: #239b76;
}

.facebook {
  background-color: #3b5998;
  margin-right: 10px;
}

.twitter {
  background-color: #55acee;
}

.btn {
  padding: 8px 24px;
  color: white;
  display: inline-block;
  opacity: 0.8;
  border-radius: 4px;
}

.btn:hover {
  opacity: 1;
}

.fa {
  margin-right: 5px;
}

header {
  height: 65px;
  width: 100%;
  background-color: rgba(34, 49, 52, 0.9);
}

.logo {
  width: 124px;
  margin-top: 20px;
}

.header-left {
  float: left;
}

.header-right {
  float: right;
  background-color: rgba(255, 255, 255, 0.3);
  /* transitionを指定してください */
  transition: all 0.5s;
}

.header-right:hover {
  background-color: rgba(255, 255, 255, 0.5);
}

/* header-rightの中の<a>のCSSを指定してください */
.header-right a{
  line-height:65px;
  padding:0 25px;
  color:white;
  display:block;
}


追記
『通常はinline-blockにfloatは使用しませんが(text-alignを使用する)』という知識をえた。
リンク内容
『高さが保たれているのは、header 要素で高さを指定している』という視点を学べた。
リンク内容

  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • yasutomi

    2019/06/29 20:45 編集

    通常はinline-blockにfloatは使用しませんが(text-alignを使用する)
    このコードなら指定の方をinline-blockに変更しても
    表示崩れは発生しないはずなのですが何がダメだったのでしょうか。

    ダメだった結果の画面キャプチャの貼り付けをお願いします。

    キャンセル

  • m.ts10806

    2019/06/29 21:53

    直接の回答ではないのでこちらに書きますが、
    progateやったことないですけど聞いた感じだと「お手本と同じように作らなきゃNG」らしいので、「ひとまずお手本通りに倣う」くらいで進めておいても良いかもしれません。
    ひとつのことを表現するのに手法は一つではありませんが、おそらくprogateのガイドラインとしてそうやるってことなんでしょう。

    キャンセル

回答 2

checkベストアンサー

+2

headerタグの中にあるheader-leftがfloatで浮いているため、headerタグの高さは残りのheader-rightがあることが理由で保たれてる。

header-right も float: right; が指定されているので浮いています。

header {
  height: 65px;
}

高さが保たれているのは、header 要素で高さを指定しているからです。

その考えがあってるなら別にdisplay:inline-blockでも構わないんじゃないかと思ったので、指定の方をinline-blockで試しました。結果はダメでした。指示がblockと書いてある理由で無理なのか、自分の理解が間違っているのか教えて下さい。

block でも inline-block でも構いません。この場合、ブロックレベル要素(HTML4時代の言い方ですが、わかりやすいためこの表現で)であればいいので、どちらでも良いです。inline-block はインライン要素とブロックレベル要素の性質をあわせもつ便利な値ですが、あえてこの場面で使う必要はないため、block としているのだと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/06/30 13:15

    丁寧に解説してくださって理解できました。
    ありがとうございました。

    キャンセル

+2

別に駄目ではありません。
Progateは仕様上、同じ表示になったとしても見本とコードが違うとエラーになります。
この先の道場コースでは特に注意が必要で、使いやすいからとレイアウトにfloatの代わりにflexboxやgridを使用するとエラーにされたりします。

ただyasutomiさんが仰っているように、そもそもfloatが指定してある要素にinline-blockを指定する必要はありません。
質問文に「押し辛いのを解消するため」、とありますがこれも正確には違います。
aタグはインライン要素のため、widthとheightの指定ができません。
レイアウトを整えるにあたってそれでは不便なため、それを解消するためにdisplay: block;またはdisplay: inline-block;を指定しています。

この辺の知識についてはサルワカのこの記事が分かりやすいので、是非一読してみることをお勧めします。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2019/06/30 12:23

    「Progate」はやったことが無いので詳細は不明ですが、「インラインブロック要素」でも良いとは思いますが、「趣旨」から考えると「勉強」のために「2択(インライン要素 or ブロック要素)」にすることで、レイアウトの基本を理解させたいのかもですね。

    キャンセル

  • 2019/06/30 13:13

    -yoshinavi-
    レイアウトの基本を理解させたいのかも
    そういう意味なのかと理解できました。ありがとうございました。
    ーTaku.HUー
    ありがとうございました。

    キャンセル

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

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

関連した質問

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