前回と同じくZooloppaのサイトをアレンジしながら、 positionプロパティについてや検証ツールの便利な機能を紹介していきます。
今回は図のように、パンダの写真の上にnewというバッジ(ラベル)を加えます。
newバッジはcssの「position」というプロパティを使って配置します。 講座で作成したZoloopaサイトのバックアップを取って、一緒にやってみてください。
positionプロパティとは
positionはプロパティ値を指定することで対象の要素をどのように配置するかを決定するcssプロパティです。もっと簡単に言ってしまえば、要素(divやpタグなど)を自分の好きな位置に持って来ることが出来るプロパティです。
例えば上図のような配置を作りたい場合。 パンダの写真の上にnewを持ってこようとしてHTMLをこう書いたとします。
<article class="section">
<div class="image">
<div class="new">new</div>
<img src="images/s_panda.png">
</div>
<div class="desc">
<h3>パンダ</h3>
<p>ジャイアントパンダは、哺乳綱食肉目クマ科ジャイアントパンダ属に分類される食肉類。白と黒にはっきりと分かれた体毛が際立った特徴である。</p>
</div>
</article>
このHTMLを
cssをほとんど指定していない状態で表示すると①
現在完成しているcssで表示すると②のような配置になります。

HTML文書は基本的に上から下、左から右の「Z」字に要素が配置されていきます。
flex-direction: row-reverseなど逆順指定も出来ますが、どちらにせよ規則的なブロック状に並びます。
しかし、positionプロパティを指定すると好きな位置に要素を持ってくることが出来ます。 positionプロパティの値は * static(デフォルト/文書の通常のフローに従って配置) * relative(通常の位置を基準に相対位置を指定) * absolute(親要素を基準に絶対位置を指定) * fixed(ブラウザウィンドウを基準に絶対位置を指定) * sticky(通常位置に配置→スクロールに応じて要素を固定表示する)
この5つがあります。 fixedとstickyの固定系は一旦置いておきまして、今回使用するのは position: relative; ・・・ 相対位置指定 position: absolute; ・・・絶対位置指定 の2つです。
相対位置(relative)は何の指定もしない場合に配置される位置を基準に、 「そこから○○px動かす」という指示をすることが出来ます。
絶対位置(absolute)はposition: static;以外が指定されている親もしくは祖先要素を基準にして、絶対位置で要素を配置します。fixedとstickyは少し特殊なので、装飾的に使用する場合は親要素にposition: relative;を設定して基準位置にすることが多いです。
.sectionをposition: relative;にして、
子要素を絶対位置(absolute)指定すると
.sectionのボックスを基準に配置されます。
詳細:position-MDN
positionプロパティを使ってみよう
では早速positionプロパティを使って、Zooloppaにnewバッジを付けてみましょう。
HTMLに<div class="new">としてバッジ部分を追加し、

親要素となるimageクラスと合わせてpositionプロパティを設定します。
背景色はとりあえずヘッダーメニューと同じ#445721にしておきます。
保存してブラウザで表示を確認してみましょう。
指定した位置に「new」が重なって表示されましたね。
折角ですから、検証ツールでpositionプロパティ部分を見てみましょう。 Elementsで
<div class="new">の行を選択し、Stylesでpositionプロパティを無効にしてみます。

divの位置が変わりました。
ここがデフォルトで要素が配置される「通常の位置」です。 positionプロパティを使用したことではじめて
left:0;
top:0;
の指定が効き、<div class="image">の左上に配置されるという事が分かります。
今度はpositionプロパティにチェックを入れて有効にした状態で leftとtopプロパティの値を変更してみましょう。
入力した値の分だけ、親要素のtop(上辺)やleft(左端)から離れていきますね。
値にはマイナスを入力することも可能。
topの場合であれば、マイナスの値の分だけ親要素の上辺よりも更に上の位置へ移動します。
バッジのデザインを調整しよう
positionプロパティでnewバッジを写真に重ねて表示することには成功しました。

が、このままでは見にくいのでデザイン的な部分を調整していきましょう。
まずバッジの色部分。 文字色を白にしても良いですが、背景色と写真の色が似ているのでもう少し目立つ色に変えてみましょう。
検証ツールで<div class="new">を選択し、

Stylesパネル、カラーコードの横にあるスウォッチ(色見本)部分をクリックします。
するとカラーピッカーが表示され、手軽に変更したい部分の色を変えることが出来るようになります。
色を選ぶと即座に指定されている要素に反映されます。 また、スポイトアイコンをクリックするとスポイトモードになり、画面上で使われている色を拾ってくれます。cssで設定している色だけではなく、画像からも色を拾ってくれるので便利ですよ。
「ズーロッパフェス」の背景色を拾うとこうなります。

カラーピッカーの外側をクリックすると、カラーピッカーの表示は消えて選択した色がStylesに残ります。
好きな色を選んだら、バッジの余白を入れましょう。
あとは変更・追加した部分をドラッグで選択してコピー。 作成中のcssファイル(style.cssなど)にペーストして保存すれば完了です。
補足
検証ツールのカラーピッカーは
色だけではなく透明度を変更したり
カラーコードを切り替えることも可能です。
地味ですが便利!
そのほかにもElementsでaタグを選択して右クリックメニューから:hover(マウスオーバー時)などの設定を確認したり
テキストシャドウの位置などを感覚的に調整できたりと

便利な機能がたくさんあります。 Webサイトを作る際にぜひ活用して見て下さい。