[CSS]backgroundのショートハンドを理解したい

HTML&CSS
ぽんきち
ぽんきち

backgroundのショートハンドがいつまでたっても理解できないよ。。。

勉強中<br>プログラマーさん
勉強中
プログラマーさん

雰囲気で使っちゃうよね。。

CSSのbackgroundプロパティ、なんとなくしか理解していないから必要になるたびに調べてる。
備忘も兼ねて仕様をまとめて、そろそろちゃんと理解したいと思います。

個人的に一番使うbackgroundショートハンドを振り返る

普段使用している記述を振り返る。

See the Pen Untitled by kitaharas (@kitaharas) on CodePen.

個人的に一番使うbackgroundの記述パターン。(紛らわしいがpよりhやliで使うことが多い。)

background: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 24 24"><path fill="%23000000" d="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /></svg>') 
    no-repeat center center/ 100%;

例ではテキストの先頭にアイコンを設置しているけど、それ以外でも基本背景画像を設定するときは一度これを使って、イメージと違ったら微調整している節がある。

中身を分解してみると下記のようになっている模様。

background: 
  /* background-image */
  url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 24 24"><path fill="%23000000" d="M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z" /></svg>') 
  /* background-repeat */
  no-repeat
  /* background-position */
  center center 
  /* background-size */
  / 100%;

background-image
例ではSVGを直接描画していますがファイルでもなんでもOK

background-repeat
背景画像を繰り返すかどうか。no-repeatで繰り返さない。

background-position
x軸,y軸の順番で書く。center centerで左右上下真ん中の意味。

background-size
これだけちょっと引っ掛け。ショートハンドの時はbackground-positionの後に”/”で区切ってから書く。


改めて見てみると、どうして苦手意識があったのかっていうくらいシンプルでした。。。

backgroundショートハンドのルール

次はその他のプロパティ含めてショートハンドのルールをまとめておきます。

プロパティ名ルール
background-sizebackground-positionの後に / で区切ってから書く
background-origin表示開始の基準(background-clipより先に記述する)
background-clip表示するエリア(background-originより先に記述する)
background-attachment背景画像を固定したい時などに使う。

一部順番に制限があるものもありますが、backgroundのショートハンドは基本順不同で書くことができる。

originとclipについては下記ページの「おまけ」部分が非常に!わかりやすい。

backgroundの全プロパティをショートハンドで書いてみた|マークアップブログ
backgroundがうまく効かなくてショートハンドでの記述を諦めたのが悔しくて色々調べた結果、backgroundのプロパティを全部ショートハンドで書けるようになった。そんなお話。

複数画像を一括で指定する方法

“,”で区切るだけで複数設定が可能。これは初めて知った時衝撃だった。可読性は悪いけどページの背景にイメージ画像を複数設置したい時などは必須。

background: 
  url('画像パス') no-repeat right 3.5%/62%, 
  url('画像パス') no-repeat left 37%/62%,
  url('画像パス') no-repeat right 74%/62% ;

それぞれのプロパティで細かな設定があるが、まずは基本を押さえて調べなくてもかけるようになりたい。

コメント

タイトルとURLをコピーしました