🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSS3

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

HTML

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

CSS

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

Q&A

解決済

1回答

729閲覧

CSS:inline-block指定時に親要素のline-height分ずれる

tys.prg

総合スコア13

CSS3

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2019/11/12 08:55

ソース

<!DOCTYPE html> <html lang="ja"> <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> <style> .line { width: 500px; height: 5px; background-color: yellow; } .line:after { content: ""; display: inline-block; background-color: blue; width: 50%; height: 5px; } </style> </head> <body> <div class="line"></div> </body> </html>

現在の表示

イメージ説明

なってほしい表示

イメージ説明

試した事

  • .line:afterdisplayblockにしたらなってほしい表示になりました。
  • .lineline-height: 0;でもうまくいきました。
  • .lineheightを指定無しにし、子要素の高さに準じて.lineの高さが決定するようにしたところ、.lineheightline-heightの初期値分(16px)になりました

予想

要素の中には、その要素自体以外にも『擬似的に文字を入れるための箱』があり、子要素をdisplay: inline-blockとするとその子要素は、親要素自体ではなく『擬似的な箱』の中に配置されるため。

というところまで妄想を膨らませましたが、どういう仕様が原因なのかご教示いただけませんでしょうか。

解決方法はわかったので原因となっている仕様を教えていただきたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

じつは「<!DOCTYPE html>」を外せばいけるんですけど・・・

sample

CSS

1<!DOCTYPE HTML> 2<style> 3.line { 4width: 500px; 5height: 12px; 6background-color: yellow; 7} 8.line:after { 9content: ""; 10display: block; 11background-color: blue; 12width: 50%; 13height: 12px; 14} 15</style> 16test 17<div class="line"></div> 18test

投稿2019/11/12 09:08

編集2019/11/12 09:26
yambejp

総合スコア116661

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

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

tys.prg

2019/11/12 09:11

すみません謎過ぎてビビってます。もう少し詳しくお聞かせ願えませんでしょうか。
yambejp

2019/11/12 09:24

どうやらHTML 4.01のstrictのときからの課題のようですね 技術的資料はみつかりませんでした strictでも動作させるなら ::afterでinline-block指定はやめてblockにするとよいようです
tys.prg

2019/11/12 21:59

なるほど……ありがとうございます! HTML4.01、strictあたりが絡んでそうだっていうのは初耳だったので本当にありがたいです。 もうちょっと自分でもリサーチしてみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問