背景グラデーションがスライド

HTML

<a href="#" class="m-btn">テキストテキスト</a>

CSS

.m-btn {
  display: inline-block;
  color: #fff;
  padding-block: 2rem;
  padding-inline: 5rem;
  overflow: hidden;
  position: relative;
}
@media (any-hover: hover) {
  .m-btn:hover::before {
    translate: -50%;
  }
}

.m-btn::before,
.m-btn::after {
  content: "";
  position: absolute;
}
.m-btn::before {
  --color-01: #37A9F3;
  --color-02: #1357AE;

  z-index: -1;
  top: 0;
  left: 0;
  width: 200%;
  height: 100%;
  background-image: linear-gradient(135deg, var(--color-01) 0, var(--color-02) 50%, var(--color-02) 50%, var(--color-01) 100%);
  background-repeat: no-repeat;
  transform-origin: left center;
  transition: translate 0.3s ease;
}
.m-btn::after {
  --arrow-size: 1.3rem;
  --arrow-border-width: 0.3rem;

  top: 50%;
  right: 2rem;
  translate: 0 -50%;
  width: var(--arrow-size);
  height: var(--arrow-size);
  border-top: var(--arrow-border-width) solid currentColor;
  border-right: var(--arrow-border-width) solid currentColor;
  rotate: 45deg;
}

ボタンアニメーション関連のレシピ