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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2882閲覧

子要素にwidth100%を設定しているのに親要素との間に隙間ができる

Silky

総合スコア34

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/10/01 15:56

編集2019/10/02 14:29

標題の通り、子要素にwidth100%を設定しているのに親要素との間に隙間ができてしまいます。
(正確には、デベロッパーツールで幅を拡大したり縮小したりすると、隙間ができたりできなかったり、ガタガタします。)

イメージ説明
ちなみに、図の「おしらせ」と「ブログ」のcssは色以外はほぼ同じ構造ですが、
「おしらせ」の方のみこの隙間ができてしまいます。

この隙間の理由がわかる方いらっしゃいましたら、教えていただけないでしょうか?

ちなみに、動作確認はchrome最新バージョン: 77.0.3865.90(Official Build) (64 ビット)
で行っています。

全てのソースを載せておきます。(標題で言っている親要素のクラスはnews、子クラスはnews__headerとなります。)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css"> <link rel="stylesheet" href="css/widget.css"> </head> <body> <section class="widget section"> <h3 class="section__ttl">Widget</h3> <div class="widget__inner"> <div class="news"> <div class="news__header"> <h4 class="news__header-ttl">おしらせ</h4> <a href="#" class="news__header-btn">more...</a> </div> <div class="news__body"> <ul class="news__list"> <li class="news__item"> <div class="news__meta"> <time class="news__meta-time">2019-01-30</time> <span class="news__meta-label">注目</span> </div> <p class="news__ttl">ニュースニュースニュースニュースニュース<br>ニュースニュースニュースニュース</p> </li> <li class="news__item"> <div class="news__meta"> <time class="news__meta-time">2019-01-30</time> <span class="news__meta-label">注目</span> </div> <p class="news__ttl">ニュースニュースニュースニュースニュース<br>ニュースニュースニュースニュース</p> </li> <li class="news__item"> <div class="news__meta"> <time class="news__meta-time">2019-01-30</time> <span class="news__meta-label">注目</span> </div> <p class="news__ttl">ニュースニュースニュースニュースニュース<br>ニュースニュースニュースニュース</p> </li> </ul> </div> </div> <div class="blog"> <div class="blog__header"> <h4 class="blog__header-ttl">ブログ</h4> <a href="#" class="blog__header-btn">more...</a> </div> <div class="blog__body"> <ul class="blog__list"> <li class="blog__item"> <div class="blog__meta"> <time class="blog__meta-time">2019-01-30</time> <span class="blog__meta-label">注目</span> </div> <p class="blog__ttl">ブログブログブログブログブログ<br>ブログブログブログブログ</p> </li> <li class="blog__item"> <div class="blog__meta"> <time class="blog__meta-time">2019-01-30</time> <span class="blog__meta-label">注目</span> </div> <p class="blog__ttl">ブログブログブログブログブログ<br>ブログブログブログブログ</p> </li> <li class="blog__item"> <div class="blog__meta"> <time class="blog__meta-time">2019-01-30</time> <span class="blog__meta-label">注目</span> </div> <p class="blog__ttl">ブログブログブログブログブログ<br>ブログブログブログニュース</p> </li> </ul> </div> </div> </div> </section> </body> </html>
//----------------------------------------------------- // 変数 //----------------------------------------------------- $c-main: #3f51b5; $c-sub: #e81919; $c-section: #efefef; $w-pc: 1086px; // PC $w-tab: $w-pc - 1; // タブレット $w-sp: 767px; // スマホ //----------------------------------------------------- // mixin //----------------------------------------------------- @mixin pc { @media (min-width: ($w-pc)) { @content; } } @mixin tab { @media (max-width: ($w-tab)) { @content; } } @mixin sp { @media (max-width: ($w-sp)) { @content; } } //----------------------------------------------------- // 共通 //----------------------------------------------------- html { font-size: 62.5%; } body { font-size: 1.4rem; font-family: "Yu Gothic Medium", "游ゴシック Medium", YuGothic, "游ゴシック体", "ヒラギノ角ゴ Pro W3", "メイリオ", sans-serif; background-color: white; color: #333333; } li { list-style: none; } a { text-decoration: none; } .wrapper { overflow: hidden; } //----------------------------------------------------- // お知らせ //----------------------------------------------------- .widget{ &__inner { margin: 0 auto; max-width: 100%; padding: 0 15px; width: 1050px; display: flex; overflow: hidden; @include pc { padding: 0; } @include sp { flex-direction: column; } } } .news{ flex-basis: calc(50% - 8px); border: 1px solid $c-main; border-radius: 4px; margin-right: 16px; &__header{ //width100%を指定しているにも関わらず、若干隙間が空く width: 100%; height: 60px; display: flex; justify-content: space-between; background-color: $c-main; padding: 15px 16px 15px 30px; &-ttl{ color: #ffffff; font-size: 2rem; font-weight: bold; } &-btn{ font-weight: bold; border-radius:5px; display: block; text-align: center; width: 100px; height: 30px; line-height: 30px; color:#333333; background-color: #fff; } } &__body{ padding: 24px 18px 27px 18.5px; } &__item{ display: flex; padding: 28.5px 0 10.5px; @include sp { flex-direction: column; } &:first-child{ padding-top: 0; } & + &{ border-top: 1px solid #707070; } } &__meta{ margin-right: 24px; display: flex; flex-direction: column; font-size: 1.6rem; font-weight: bold; @include sp { flex-direction: row; } align-items: flex-start; &-label{ margin-top: 5px; font-size: 1.2rem; background-color: #FEBB07; color: #ffffff; padding: 2px 8px; text-align: center; border-radius: 4px; @include sp { margin-left: 20px; margin-top: 0; } } } &__ttl{ font-size: 1.6rem; flex:1; line-height: 1.625; } } .blog{ flex-basis: calc(50% - 8px); border: 1px solid #B53F6E; border-radius: 4px; margin-right: 16px; @include sp{ margin-top: 50px; } &__header{ height: 60px; width: 100%; display: flex; justify-content: space-between; background-color: #B53F6E; padding: 15px 16px 15px 30px; &-ttl{ color: #ffffff; font-size: 2rem; font-weight: bold; } &-btn{ font-weight: bold; border-radius:5px; display: block; text-align: center; width: 100px; height: 30px; line-height: 30px; color:#333333; background-color: #fff; } } &__body{ padding: 24px 18px 27px 18.5px; } &__item{ display: flex; padding: 28.5px 0 10.5px; @include sp { flex-direction: column; } &:first-child{ padding-top: 0; } & + &{ border-top: 1px solid #707070; } } &__meta{ margin-right: 24px; display: flex; flex-direction: column; font-size: 1.6rem; font-weight: bold; @include sp { flex-direction: row; } align-items: flex-start; &-label{ margin-top: 5px; font-size: 1.2rem; background-color: #FEBB07; color: #ffffff; padding: 2px 8px; text-align: center; border-radius: 4px; @include sp { margin-left: 20px; margin-top: 0; } } } &__ttl{ font-size: 1.6rem; flex:1; line-height: 1.625; } }

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2019/10/02 00:51

ほぼ同じ設定でもなぜか再現しません。 画像ではスクロールバーが見えていますが、追加のCSSなどがあったりしますか?
Lhankor_Mhy

2019/10/02 01:20

問題が再現しませんでした。 ただ、ズーム 100% ではない状態でしたら、表示がずれていることがありました。
Silky

2019/10/02 01:56

コメントをありがとうございます。 https://s19.aconvert.com/convert/p3r68-cdx67/qs2vc-tjgga.gif 動画を用意しました。問題の隙間はわずかなものなので、PCから見ないと分からないと思います。 追加のソースなどはなく、上記のソースそのままです。 ズームは100%であることを確認しています。
Silky

2019/10/02 01:58

幅によって、隙間が生まれるときと生まれないときがあります。 動画のように様々な幅で確認して再現できないでしょうか。。。(><)
Lhankor_Mhy

2019/10/02 02:00

『幅によって、隙間が生まれる』とのことですが、隙間が生まれる幅をご提示いただけますか?
Lhankor_Mhy

2019/10/02 02:02

ああ、すみません、上に表示されているのですね。
Lhankor_Mhy

2019/10/02 02:10

やはり再現しませんでした。 ご提示いただいたコードを再現したものと、アニメGIFの表示が異なるようでした。そのあたりに差異があるのかもしれません。 https://jsfiddle.net/Lhankor_Mhy/qtjk6omz/ また、そのアニメGIFは質問の方に追記した方がいいかもしれません。
x_x

2019/10/02 04:08

404でした
Silky

2019/10/02 14:34

こちらの不始末でお手数おかけいたしました。 動画を質問の方に追記しました。 皆さんの方で再現はできないのであれば、何かコード以外のところに問題がありそうですね。。(ブラウザなど。。) 一応上記に記載している通り、最新版のクロームで、なおかつズームは100%にしております。。。
guest

回答1

0

ベストアンサー

以下のコードで解決できるのではと考えております。
隙間があいてしまうのは、恐らくモニタの解像度とブラウザの組み合わせで起きるのではと推察しております。

私も以前似た事象があり、下記の用にborder指定をbody部分のみにしました。
そうすれば隙間は開かなくなるかと思います。お試しいただければ幸いです。

/* * 必要に応じて box-sizing: border-box; を設定してあげてください */ .news{ //【削除】 border: 1px solid $c-main; //【削除】 border-radius: 4px; // 【追加】 border-top-left-radius: 4px; border-top-right-radius: 4px; &__body{ // 【追加】 border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-bottom: 1px solid $c-main; border-left: 1px solid $c-main; border-right: 1px solid $c-main; } }

投稿2019/10/04 10:08

hogeniho

総合スコア58

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Silky

2019/10/05 12:20

ご回答ありがとうございます。 試してみたのですが、やはり同じように若干隙間が空いてしまいます。 モニタの解像度とブラウザの組み合わせですか。。 時にそういうことまで表示に関係してくるのですね! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問