線が伸びて枠線になる

テキストナビゲーション
-線が伸びて枠線になる-

デモページを見る

See the Pen 5-3-10 線が伸びて枠線になる by 動くWebデザインアイディア帳 (@ugokuweb) on CodePen.

PCのみ確認できます。「Result」内のテキストにカーソルをあわせて動きを確かめてね!

動きを実現する仕組み

CSS で<li>と<span>の疑似要素(before とafter)に縦横幅を0 にした線を設定する。
hover すると疑似要素の横幅・縦幅が100% に伸びて線が表示される。
線が伸びるタイミングはtransition-delay で少しづつ遅らせる。

HTMLの書き方

  1. head終了タグ直前に自作のCSSを読み込みます。
    <link rel="stylesheet" type="text/css" href="css/5-3-10.css">
    </head>
  2. body内のテキストナビゲーションを表示させたい場所に以下のHTMLを記載します。
    <ul class="gnavi">
    <li class="current"><a href="#"><span>Home</span></a></li><!--現在地にはcurrentクラスを付ける-->
    <li><a href="#"><span>About</span></a></li>
    <li><a href="#"><span>Service</span></a></li>
    <li><a href="#"><span>Contact</span></a></li>
    </ul>

自作のCSS内の書き方

/*==================================================
共通 横並びのための設定
===================================*/

.gnavi{
    display: flex;
    flex-wrap: wrap;/*スマホ表示折り返し用なのでPCのみなら不要*/
    margin:0 0 50px 0;
    list-style: none;
}

.gnavi li a{
    display: block;
    padding:10px 30px;
    text-decoration: none;
    color: #333;
}

/*==================================================
 5-3-10 線が伸びて枠線になる
===================================*/

.gnavi li{
    /*線の基点とするためrelativeを指定*/
  position: relative;
    margin:0 10px;
}

/*線の基点位置*/
.gnavi li::before,
.gnavi li::after{
    content:"";
    /*絶対配置で線の位置を決める*/
    position: absolute;
    background:#0481A2;
    /*線の形状*/
    width: 0;
    height:2px;
    /*アニメーションの指定*/
    transition: all 0.2s linear;
}

.gnavi li::before{
  right: 0;
  bottom: 0;
}

.gnavi li::after{
  left: 0;
  top: 0;
}

/*線の基点位置2 spanタグ*/

.gnavi li span{
    display: block;
}

.gnavi li span::before,
.gnavi li span::after{
  content:"";
    /*絶対配置で線の位置を決める*/
  position: absolute;
  background: #0481A2;
    /*線の形状*/
  width:2px;
  height:0;
/*アニメーションの指定*/
  transition: all 0.1s linear;
}

.gnavi li span::before{
  left: 0;
  bottom: 0;
}

.gnavi li span::after{
  right: 0;
  top: 0;
}

/*現在地とhoverした際の線の変化*/
.gnavi li.current::before,
.gnavi li.current::after,
.gnavi li:hover::before,
.gnavi li:hover::after{
  width: 100%;
}

.gnavi li:hover::after{
  transition-delay: 0s;/*すぐ線を出現させる*/
}

.gnavi li:hover::before{
  transition-delay: 0.3s;/*線の出現を0.3秒遅らせる*/
}

.gnavi li.current span::before,
.gnavi li.current span::after,
.gnavi li:hover span::before,
.gnavi li:hover span::after{
  height: 100%;
}

.gnavi li:hover span::before{
  transition-delay: 0.5s;/*線の出現を0.5秒遅らせる*/
}

.gnavi li:hover span::after{
  transition-delay: 0.2s;/*線の出現を0.2秒遅らせる*/
}

バリエーション
を見る

「機能」に関わる
動き一覧

書籍情報

紙面だからこそできるまとめ方でコードを説明し、
全体を俯瞰して調べることが出来る構成になっています。

もちろん、パーツのサンプルコードもzipでまとめてダウンロードできます。
購入をしてくださった方には特典がありますので是非チェックしてみてください!

書籍紙面サンプル

出版社:ソシム株式会社
2021/2/27 発売

書籍紙面サンプル

出版社:ソシム株式会社
2021/7/31 発売

Page
Top