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

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

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

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

HTML5

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

Q&A

解決済

2回答

2136閲覧

line-height の効能について

vitabrevisarsl1

総合スコア57

CSS3

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

HTML5

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

0グッド

0クリップ

投稿2017/05/04 18:15

編集2017/05/04 18:17

line-heightを要素の heightと同じにすることによって縦中央揃えを実現するという説明が存在します。

ところが、上図 <a href>Menu 1〜 3 において、blockの height:40px、font-size:16pxのところ、line-height:40pxとすると中央より若干上に位置し、45px(図)で正中となります。

不思議なのは、
・なぜ heightと line-heightを同値にしても縦正中とならないのか?
・line-height:16pxで文字が上部境界に接し、line-height:74pxで文字が下部境界に接する。その差 58pxとは何か?
(・以前別件では heightと line-heightを同値にして縦が正中になったこともならなかったこともあった。)
です。

上記「同じにすることによって縦中央揃えを実現」という解説の他には単位に関するものはありましたが、今回の事象における関連性は見いだせず、他に参考になるネット記事及び書籍の記述は見当たりませんでした。

下記がコードです。質問に必要のない部分は省略しております。

なにがしかでもご教授いただけますと幸いです。

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <link rel="stylesheet" href="normalize.css"> 6 <link rel="stylesheet" href="styles.css"> 7 <title>CSS layout commencement</title> 8</head> 9<body> 10 <header> 11 <div class="container"> 12 <ul id="menu"> 13 <li><a href="">Menu 1</a></li> 14 <li><a href="">Menu 2</a></li> 15 <li><a href="">Menu 3</a></li> 16 </ul> 17 </div> 18 </header> 19 <section id="eyecatch"><div class="container">eyecatch-section</div></section> 20 <main> 21</body> 22</html>

css

1.container { 2 width: 500px; 3 margin: 0 auto; 4 text-align: center; } 5#eyecatch { 6 background: url('eee.png') no-repeat; 7 background-size: cover; 8 background-position: 61% 100%; 9 height: 300px; 10 color: #fff; } 11header { 12 background: #f3a696; } 13main { 14 background: #a2d7dd; } 15#menu { 16 padding: 0; 17 margin: 0; 18 list-style-type: none; 19 font-size: 0; } 20li { 21 display: inline-block; } 22a { 23 display: inline-block; 24 width: 80px; 25 height: 40px; 26 background: orange; 27 font-size: 16px; 28 text-decoration: none; 29 text-align: center; 30 line-height: 20px; }

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

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

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

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

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

guest

回答2

0

ベストアンサー

この記事は読まれましたか?下記記事の「行内の各部名称」の部分の画像の「鈴」の位置が少し高い位置にあることがわかると思います。その部分の「ずれ」のためだと思います。なので、vertical-align を調整することで何とかなるとは思います。

【理解しておきたい、CSSによるインラインレイアウトの仕組み(font-size/line-height編)Inline Layout─Frontrend Conference | HTML5Experts.jp】
https://html5experts.jp/takazudo/13339/

投稿2017/05/04 18:27

kei344

総合スコア69407

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

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

0

imgはinline要素なのでベースライン上に設置されます。
heightとline-heightを同じ値にして中央寄せを行う場合は
vertical-align:bottom;を使用してimgを要素の下に合わせる必要があります。

もしvertical-align:bottom;を使用するわけにはいかない場合にはdisplay:blockなどでも対処可能です。

ただしblock要素にするとtext-align: center;での中央寄せができくなるのでmargin: 0 auto;などの方法を取る必要が出てきますので、デザインに合った使い分けをしていただければと思います。

投稿2017/05/04 18:33

編集2017/05/04 18:43
shiroyuki

総合スコア169

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問