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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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

4回答

23587閲覧

line-heightの1行目の上余白だけ消したい

takamiii_158cm

総合スコア84

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グッド

0クリップ

投稿2017/02/17 01:50

編集2017/02/17 02:27

###前提・実現したいこと
line-heightで発生する1行目の上の余白だけ消したいです。
調べても出てこなかったです。。
すみませんがご回答頂けますと幸いです。

イメージ説明

使用する状況は、アイコンの横に文章が並ぶレイアウトで
・文言が1行で終わる時はアイコンに対して縦中央そろえ(vertical-align: middle)
・文言が2行以上の場合、文言がtopに揃う(vertical-align: top)

というイメージです。。

イメージ説明
イメージ説明

2行以上になった場合、文言をアイコンの高さと揃えたいのにlineheightのせいで文言に上アキが出るので解消したいです。。

cssはシングルクラスで書いています。

###該当のソースコード

html

1 <div class="faqList__body__table"> 2 <div class="faqList__body__icon"><span>A</span></div> 3 <p class="faqList__body__txt">この文章はダミーです。文字の大きさ、量、字間、</p> 4 </div> 5

css

1.faqList__body__table { 2 display: table; 3} 4 5.faqList__body__icon { 6 position: relative; 7 display: block; 8 margin-right: 20px; 9 width: 45px; 10 height: 45px; 11 border-radius: 23px; 12 float: left; 13 font-family: "Montserrat", "ヒラギノ角ゴ ProN W3", "Hiragino Kaku Gothic ProN", "游ゴシック体", "Yu Gothic", "YuGothic", "メイリオ", "Meiryo", sans-serif; 14 font-weight: 700; 15 font-size: 1.28571rem; 16 line-height: 1.1; 17 background-color: #cb4e0c; 18} 19 20.faqList__body__icon > span { 21 content: ""; 22 display: block; 23 text-align: center; 24 position: absolute; 25 margin-top: -10px; 26 padding: 0; 27 top: 50%; 28 left: 0; 29 right: 0; 30 color: #fff; 31} 32 33.faqList__body__txt { 34 display: table-cell; 35 font-size: 1.14286rem; 36 line-height: 2; 37 vertical-align: middle; 38} 39

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

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

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

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

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

guest

回答4

0

疑似要素:first-lineを使ってみてはいかがでしょうか。ブロック内の「1行目」にだけに反映されるスタイルが記述できます。

CSS

1p { 2 line-height: 2; 3} 4p:first-line { 5 line-height: 1; 6}

投稿2017/02/17 02:28

masaya_ohashi

総合スコア9206

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

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

liguofeng29

2017/02/17 02:39

下のほうで上書きされるってことですね。 「p要素内1行目以外にline-heightを適用する」はできないでしょうか? p:not(first-line) ← 左に似ている記載方法はありますか?
masaya_ohashi

2017/02/17 02:52

上の回答通りにするだけで1行目だけline-height:1、それ以外は2のままですよ。cssはあとから書かれた要素で上書きされますが、この場合上書きされるのは1行目要素だけで、p全体で見たらline-height:2なのは維持されていますよ https://jsfiddle.net/qaztwh5p/
liguofeng29

2017/02/17 03:08

下のほうで上書きされるってことですね。 → p:first-line、1行目だけ上書きされるってことでした。 ちなみに、p と p:first-lineの記載順番を入れ替えて同じ結果になりますね。 必ず後で記載したものが勝つ仕様ではなかったんですね。
masaya_ohashi

2017/02/17 03:22

CSSはセレクタの要素数が高いほど優先されるという仕様もあります。同じpを指すとしても、pだけで指すものとbody pと指す場合では2要素使って指定している後者のほうが優先されます。他にも優先度に関わってくるのは!important指定であったり、外部cssによる指定<内部cssによる指定<タグのstyle属性による指定なども関わってきます。 あなたのいう2行目以降だけ指定したいのであれば、全体のpを使って指定、first-lineの方でそれを打ち消すような書き方をすればできます。残念ながらp:not(first-line)のように、単体のセレクタで「2行目以降だけ」を指定するものは無いと思います。
liguofeng29

2017/02/17 03:26

勉強になりました、ありがとうございます。
8-0_nyan5

2017/02/17 07:44

これだと、1行目と2行目の行間と2行目と3行目の行間が変わってしまうのではないでしょうか。
guest

0

p{
line-height: 2;
margin-top: -10px;
}
いまいちどういった状況でそれをしたいのか分かりませんが、
上マージンをマイナスで指定するのはどうでしょう?

投稿2017/02/17 02:09

編集2017/02/17 02:11
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

padding-top: 値;
をスタイルシートに加えてみるとか。
padding-スタイルシートリファレンス

ブロック要素同士の隙間・余白の調整は、
marginとpaddingでいじりますが、
ブロック要素の背景色や背景画像を使ったりする場合に、
marginでいじるべきかpaddingでいじるべきかを
しっかり考える必要があります。
今回の件は一見するとmargin-topでもpadding-topでも差し支えないように見えますが、
使い分けは知っておいたほうがいいですよ。

投稿2017/02/17 01:57

編集2017/02/17 02:15
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

takamiii_158cm

2017/02/17 02:19

すみません、質問文が簡潔すぎたので、もう少し詳しく書き直します。 table-cellを使用しているのでmarginが使えないのです。。
退会済みユーザー

退会済みユーザー

2017/02/17 02:25

であれば、該当箇所のhtmlも示してもらわないと、ズレた回答が続きますよ。
退会済みユーザー

退会済みユーザー

2017/02/17 02:29

表でもないところでtable,tr,tdを使ってレイアウトしてしまうと、この件のように調整がしづらくなってしまうので、divやspanを駆使してレイアウトの指定をスタイルシートを主軸に書けるようになっておくといいです。(きっとブーメラン)
takamiii_158cm

2017/02/17 02:43

この状況だとtableとtable-cellを使わないとアイコンと文字が縦中央そろえにならないと思うのですが、ブロック要素で表現できる方法があれば教えて頂きたいです。。 1行だとアイコンに対して縦中央、2行以上だとアイコンに対して上揃えになるという流動的なスタイルの作り方がいまいちわかりません・・。
guest

0

リンク内容

上記にその例があります。
確認してみてください。

投稿2017/02/17 02:20

liguofeng29

総合スコア801

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

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

takamiii_158cm

2017/02/17 02:33

ありがとうございます、今回の件では使えない指定でしたがこんな方法もあるのか・・と参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問