こんにちは、工藤です。
今回は個人的に知っておくと便利だなと思うcssの小技part9です。
バックナンバー
目次
ナビをhoverしたときに、中央から線を出す
ナビなどをhoverしたときに、テキスト下部の中央から線が表示されるあれです。
なんとなくおしゃれになります。
ソースは一見複雑そうですが、登録しておけばちょっとだけ値などを変えるだけで簡単に実装できます。
DEMO
HTML
1 2 3 4 5 6 7 |
<ul class="naviList"> <li class="now"><a href="#">HOME</a></li> <li><a href="#">NEWS</a></li> <li><a href="#">ABOUT</a></li> <li><a href="#">PRODUCTS</a></li> <li><a href="#">CONTACT</a></li> </ul> |
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
ul.naviList { font-size: 0; } ul.naviList li { display: inline-block; font-size: 14px; text-align: center; } ul.naviList li a { display: inline-block; text-decoration: none; padding: 10px 15px; color: #000000; position: relative; } ul.naviList li a::after { content: ""; position: absolute; background: #000; left: 0; bottom: 0; right: 0; margin: 0 auto; width: 50%; height: 2px; -webkit-transform: scaleX(0); -ms-transform: scaleX(0); transform: scaleX(0); -webkit-transition: all .3s ease; -moz-transition: all .3s ease; transition: all .3s ease; } ul.naviList li a:hover::after, ul.naviList li.now a::after { -webkit-transform: scaleX(1); -ms-transform: scaleX(1); transform: scaleX(1); } |
装飾自体はaタグに行っていきます。
14行目
このあとabsoluteを使うので、aタグに『position: relative;』を設定しておきます。16行目
aタグの『::after』に設定していきます。『::after』用の『content: “”;』を忘れずに。18~25行目
ここはラインの設定です。まずは『absolute』でaタグ内の好きな位置に置けるように設定します。
次に『background』などで色の指定をします。borderを使うわけではないのでテクスチャを使ったラインなども引けます。
20~25行目でラインの大きさ、位置を調整しています。
『left: 0』;と『right: 0;』、『margin: 0 auto;』で中央配置にしているのは、今回『width: 50%;』にしてラインの長さを短くしたためです。
例えば『width: 100%;』にした場合にはleftとbottomのみでの位置設定で大丈夫です。
あとは『height』で好きな高さを設定するのも忘れずに。
26~28行目
『transform』でhoverしていない時のラインのサイズを設定します。hoverしていない時は何も見えていない状態なので『0』を指定します。
29~31行目
『transition』でスピードの設定をします。33行目~
hoverしたときの設定なので、26~28行目で0にした『transform』の値を『1』にします。これでhover時に中央から線が出てくるナビの完成です。
ちなみに34行目の『ul.naviList li.now a::after』は開いているページに対して、線をそのまま引いておきたい時の記述です。
いらない場合は取ってしまってください。
背景を固定する
パララックス(のような)サイトで見られる、スクロールしたときに背景が固定されているあれです。
数行の記述で実現できます。
DEMO
HTML
1 |
<div class="backArea01"> </div> |
CSS
1 2 3 4 5 |
.backArea01 { height: 500px; background: url(photo01.jpg) no-repeat center 50% / cover; background-attachment: fixed; } |
3行目
背景画像を設定します。この時『background-size:』で『cover』等を設定します。4行目
背景固定用のcssの『background-attachment: fixed;』を設定します。これだけで簡単に背景固定ができます。