transform-originの設定で動きを変える
リンクボタンのホバーモーションで、背景が走るタイプのパターンをtransform-originの設定の違いで比較。
▼設定なし
リンクボタン motion01
▼左から現れて左に消えていく
リンクボタン motion02
▼左から右に抜けていく
リンクボタン motion03
<a class="test-motion-btn motion01" href="/">リンクボタン motion01</a> <a class="test-motion-btn motion02" href="/">リンクボタン motion02</a> <a class="test-motion-btn motion03" href="/">リンクボタン motion03</a>
.test-motion-btn{ overflow: hidden; transition: color .3s ease; position: relative; display: flex; align-items: center; justify-content: center; border-radius: 100px; border: 1px #004DA1 solid; width: 100%; max-width: 313px; height: 63px; margin: 0 auto; color: #004DA1; } .test-motion-btn:before{ content: ""; display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: #004DA1; transform: scaleX(0); transition: all .3s ease; transition-property: transform; z-index: -1; } .test-motion-btn:hover{ opacity: 1; color: #fff; } .test-motion-btn:hover:before{ transform: scaleX(1); } /*motion02*/ .test-motion-btn.motion02:before{ transform-origin: left; } /*motion03*/ .test-motion-btn.motion03:before{ transform-origin: right; } .test-motion-btn.motion03:hover:before{ transform-origin: left; }