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

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

ただいまの
回答率

88.61%

謎の空白を消したい。flexが原因?

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 12K+

kotetsu12

score 14

イメージ説明

画像の右、カテゴリーの上に謎のスペースが出てきます。
原因と消す方法を教えていただきたいです。
(display:flexを消すと空白はなくなるのですが、現状のレイアウトのまま空白を消したいです)

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>AOSHI TEMP</title>
    <link rel="stylesheet" href="style.css" media="screen">
  </head>

  <body>
  <!-- header -->
    <div id="header">
      <div class="header-wrap">
        <a href="#">
          <h1>template
            <img src="#">
         </h1>
        </a>
      </div>
    </div>

   <!-- content -->
   <div id="all">
    <div id="content">
      <div class="main">
        <!-- menu -->
        <div class="main-wrap">
          <div class="menu-wrap">
            <div class="menu">
              <ul>
                <a href="#"><li>メニュー1</li></a>
                <a href="#"><li>メニュー2</li></a>
                <a href="#"><li>メニュー3</li></a>
              </ul>
            </div>
          </div>

          <!-- entry -->
        <div class="post-wrap">
          <div class="entry">
            <span class="entry-title">記事一覧</span>
          </div>
        </div>

        <!-- box -->
        <div class="box-wrap">
            <div class="big-box">
              <a href="#">
                <div class="box-thumbnail">
                  <img src="image/sample.png">
                  <h2>記事タイトル</h2>
                </div>
              </a>
            </div>
            <div class="big-box">
              <a href="#">
                <div class="box-thumbnail">
                  <img src="image/sample.png">
                  <h2>記事タイトル</h2>
                </div>
              </a>
            </div>
            <div class="big-box">
              <a href="#">
                <div class="box-thumbnail">
                  <img src="image/sample.png">
                  <h2>記事タイトル</h2>
                </div>
              </a>
            </div>
        </div>
      </div>

     <!-- pagenation -->
     <div class="pagenation">
       <a href="#">1</a>
       <a href="#">2</a>
       <a href="#"></a>
     </div>
    </div>

   <!-- sideber -->
      <div id="side">
        <div class="category-wrap">
            <h4 class="side-title">カテゴリー</h4>
            <ul>
              <li class="category-name">
                <a href="#">タイトル</a>
                <ul class="children">
                  <li>
                    <a hrf="#">カテゴリー1</a>
                  </li>
                  <li>
                    <a hrf="#">カテゴリー2</a>
                  </li>
                  <li>
                    <a hrf="#">カテゴリー3</a>
                  </li>
                </ul>
              </li>
            </ul>
        </div>
      </div>
     </div>
    </div>


   <!-- footer -->
    <div id="footer">
      <!-- rebirth -->
      <div class="rebirth">
        <a href="#">トップページへ</a>
      </div>
      <!-- fot-info -->
      <div class="fot-wrap">
        <div class="fot-info">
          <p class="info">
            <a href="#">利用規約</a>
            <a href="#">サイトマップ</a>
          </p>
          <p class="fot-info2">© Copyright</p>
        </div>
      </div>
    </div>
  </body>
</html>

CSS

html, body {
    margin: 0;
    padding: 0;
}

body {
    color: #333;
        font-size: 17px;
        line-height: 1.5;
        font-family: -apple-system,BlinkMacSystemFont,
            "Helvetica Neue",YuGothic,'Yu Gothic',Verdana,
            Meiryo,sans-serif;
}

ul,ol {
    margin: 0;
    padding: 0;
    list-style: none;
}

a {
    color: #000;
    text-decoration: none;
}

/*****************

Layout

*****************/

#header{
  height: 60px;
  width: 1440px;
}

#all{
  width: 1440px;
  background-color: #E8E1DC;
}

#content{
  width: 990px;
    display: flex;
    margin: 0 auto;
}

.main{
  width: 628px;
}

#side{
    width: 291px;
    height: 700px;
  background-color: #fff;
    margin-left: 43px;
    margin-top: 30px;
}

#footer{
  height: 98px;
  width: 1440px;
}

/*****************

header

*****************/

#header{
  background-color: #fff;
  border-bottom: 1px solid #f0ebeb;
}

.header-wrap{
  text-align: center;
}

/*****************

content

*****************/

/*****************

menu-wrap

*****************/

.menu-wrap{
    width: 628px;
  margin-top: 30px;
}

.menu ul{
    display: flex;
}

.menu a{
  flex-grow: 1;
    margin-right: 2px;
}

.menu li{
    width: 100%;
  color: #BFBDBD;
  text-align: center;
  vertical-align: middle;
  height: 46px;
  background-color: #fff;
  font-size: 20px;
  font-weight: bold;
  line-height: 46px;
}

.menu li:hover{
border-bottom: solid 3px salmon;
color: salmon;
transition: 0.3s;
}

/*****************

post-wrap

*****************/

.entry{
  margin: 40px 0 20px 0;
}

.entry-title{
  display: flex;
  align-items: center;
  font-weight: bold;
  font-size: 18px;
}

.entry-title:before,
.entry-title:after{
  border-top: 2px solid;
  content: "";
  flex-grow: 1;
}

.entry-title:before {
margin-right: 1rem;
}

.entry-title:after {
margin-left: 1rem;
}

/*****************

box-wrap

*****************/
.box-wrap{
    display: flex;
    flex-wrap: wrap;
    width: 656px;
    margin-bottom: 30px;
}

.big-box{
    width: 308px;
    background-color: #fff;
    text-align: center;
    transition: 0.5s;
    margin: 14px 14px 0 0;
}

.big-box:hover{
    transition: 0.5s;
    transform: translateY(-5px);
    box-shadow: 0px 5px 10px #A29F9F;
}

.big-box img{
    padding-top: 10px;
}

.big-box h2{
    font-size: 18px;
    position: relative;
    bottom: 10px;
}

/*****************

pagenation

*****************/

.pagenation{
    font-size: 18px;
    margin-bottom: 120px;
}

.pagenation a{
    color: salmon;
    margin-right: 8px;
}

/*****************

side

*****************/

.category-wrap h4{
    height: 50px;
    line-height: 50px;
    background-color: salmon;
    font-size: 18px;
    color: #fff;
    padding-left: 8px;
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

+3

flexが原因ではありません。謎の空白は、h4に初めからついているmarginです。これを消すには、CSSの最後のルールに、marginを追加します。

.category-wrap h4{
    height: 50px;
    margin: 0 auto; /* ← ここです */
    line-height: 50px;
    background-color: salmon;
    font-size: 18px;
    color: #fff;
    padding-left: 8px;
}

display: flexの要素は、子要素のmarginが突き抜けず、中に収まります。そのため、今回のような状態になります。

今回はh4でしたが、h1やh2、pにもmarginはあります。ブラウザのデフォルトのCSSが邪魔をする場合は、例えば以下のようなCSSを冒頭に置いて、一括で消してしまうといいでしょう。

* {
  margin: 0;
}

また「謎の空白」の正体を探るには、ブラウザのインスペクタを活用してください。

イメージ説明

.category-wrapの中身を探してみると、h4の黄色い部分(margin)が上にあることがわかります。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/01/28 19:19

    図解の分かりやすい回答ありがとうございます。
    今後はインスペクタをうまく使っていきたいと思います。

    キャンセル

+3

"usr agent stylesheet"という、デフォルトのcssが効いています。
cssの.category-wrap h4に、margin-top: 0;を追加して下さい。

.category-wrap h4 {
height: 50px;
line-height: 50px;
background-color: salmon;
font-size: 18px;
color: #fff;
padding-left: 8px;
margin-top: 0; / これを追加 /
}

カテゴリーの下の空白をも取りたい場合は、
margin: 0; 
にして下さい。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/01/28 19:17

    ありがとうございます。
    大変参考になりました。

    キャンセル

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

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

関連した質問

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