テキストにマウスホバーすると下線が囲い線に変化するアニメーション

Ads

Result


SVGを使います。スタイルはCSSで調整可能です

css

.svg-wrapper {/*全体包括*/
  position: relative;
  top: 50%;
  transform: translateY(-50%);
  margin: 0 auto;
  width: 320px;  
}
.shape {/*ボーダー箇所。strokeプロパティでスタイリング*/
  stroke-dasharray: 140 540;
  stroke-dashoffset: -474;
  stroke-width: 8px;
  fill: transparent;
  stroke: #19f6e8;
  border-bottom: 5px solid black;
  transition: stroke-width 1s, stroke-dashoffset 1s, stroke-dasharray 1s;
}
.text {
  font-family: 'Roboto Condensed';
  font-size: 22px;
  line-height: 32px;
  letter-spacing: 8px;
  color: #fff;
  top: -48px;
  position: relative;
}
.svg-wrapper:hover .shape {/*ホバー時のスタイル*/
  stroke-width: 2px;
  stroke-dashoffset: 0;
  stroke-dasharray: 760;
}

html

<div class="svg-wrapper">
  <svg height="60" width="320" xmlns="http://www.w3.org/2000/svg">
    <rect class="shape" height="60" width="320" />
    <div class="text">foo bar</div>
  </svg>
</div>

via

SVG Border Animation 1