ボタンにマウスオーバーした時にアニメーションさせるCSSです。
疑似要素:hover(ホバー)にアニメーションを加える
考え方としては「疑似要素のhover(ホバー)にアニメーションを加える」・・・で良いかと思われます。
疑似要素:hoverとは?
マウスオーバー時に「hover/before/after」などの擬似要素と呼ばれる方法を使って、CSSを変化させることができます。
:hover は CSS の 擬似クラスで、ユーザーがポインティングデバイスで要素に反応したものの、アクティブ化する必要がないものを選択します。普通はユーザーがカーソル (マウスポインター) を要素の上でかざしたときにそうなります。
https://developer.mozilla.org/ja/docs/Web/CSS/:hover
ボタンに疑似要素:hoverを設定する
上記ボタンにクラス名「hoverhoverhover」を設置します。下記のボタンがクラス名を付与したボタンです。
こちらに疑似要素:hoverを設定すると、例えば「マウスオーバーで色を変える」といったことが可能です。※上記ボタンがマウスオーバーで赤にかわります。
.hoverhoverhover a:hover{
background:red;
}
[rml_read_more]
つまり、あとはこちらに「アニメーション」を設定すればいい、ということになりそうです。
ボタンに疑似要素:before/afterを設定する
ただ、このままだと「色が左から右に向かって変わっていく」といった表現が難しそうな気がするので、疑似要素:before/afterを設定してみます。
このような感じになります。
[rml_read_more]
.hoverhoverhover2 a {
color: #333;
font-size: 16px;
font-weight: bold;
background: transparent;
width: 300px;
height: 60px;
text-align: center;
line-height: 60px;
border: 2px solid #333;
position: relative;
z-index: 1;
display: block;
overflow: hidden;
transition: .3s;
margin: 0 auto;
}
.hoverhoverhover2 a::before {
content: "";
width: 100%;
position: absolute;
top: 0;
right: -60px;
z-index: -1;
border-right: 60px solid transparent;
border-bottom: 60px solid red;
transform: translateX(-100%);
transition: transform ease .3s;
}
.hoverhoverhover2 a:hover{
background:red;
}
.hoverhoverhover2 a:hover::before {
transform: translateX(0);
}
まとめ
他にも色々な方法があるかと思いますので、色々とお試しください。