button特效 水波效果(vue+js控制)

原文地址:CSS實現(xiàn)按鈕點擊的水波紋特效

代碼:

<template>
  <div class="button" @click="wavesEffect">
    <p>水波紋效果</p>
    <div class="wavesbtn" ref="wavesbtn"></div>
  </div>
</template>
<script>
export default {
  methods: {
    wavesEffect(e) {
      e = e || window.event;
      let position = e.target.getBoundingClientRect();
      let doc = document.documentElement;
      let div = document.createElement("div");
      div.className = "effect";
      this.$refs.wavesbtn.appendChild(div);

      let top = e.pageY - (position.top + window.pageYOffset) - doc.clientTop;
      let left =
        e.pageX - (position.left + window.pageXOffset) - doc.clientLeft;
      let dur = 750;
      div.style = `
        left:${left}px;
        top:${top}px;
        transform:scale(20);
        transition-duration: 1s;
        transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);`;
      setTimeout(() => {
        div.style = `
        transition-duration: 1s;
        transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94);
        opacity:0;
        left:${left}px;
        top:${top}px;
        transform:scale(20);`;
        setTimeout(() => {
          this.$refs.wavesbtn.removeChild(div);
        }, dur);
      }, 100);
    }
  }
};
</script>
<style scoped>
.button {
  width: 150px;
  height: 50px;
  border-radius: 10px;
  line-height: 50px;
  text-align: center;
  border: 1px solid red;
  position: relative;
  overflow: hidden;
}
p {
  width: 100%;
  line-height: 48px;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 1;
}

.wavesbtn {
  width: 100%;
  height: 100%;
  position: absolute;
  left: 0;
  top: 0;
}
</style>
<style>
.effect {
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  transition: all 0.7s ease-out;
  background: #ff83fa;
  transform: scale(0);
  transition-property: transform, opacity, -webkit-transform;
  opacity: 1;
  pointer-events: none;
}
</style>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容