How to create Ripple effect on Click - Material Design

后端 未结 10 1530
南旧
南旧 2020-12-12 11:17

I\'m new to CSS animations and I\'ve been trying to make their animation work for the last hours by looking at their code, but I can\'t make it work for now.

I\'m ta

10条回答
  •  借酒劲吻你
    2020-12-12 11:59

    Here is Material Design button component "The wave effect" Done Using pure CSS3 and JavaScript no libraries no framework Material Design button component "The wave effect"

    https://codepen.io/Mahmoud-Zakaria/pen/NvbORQ

    HTML

     
    Click

    CSS

    @keyframes glow-out {
      30%,80% {
       transform: scale(7);
     }
      100% {
       opacity: 0;
     }
    }
    
    .md {
     --y: 0;
     --x: 0;
    display: inline-block;
    padding: 20px 70px;
    text-align: center;
    background-color: lightcoral;
    margin: 5em;
    position: relative;
    overflow: hidden;
    cursor: pointer;
    border-radius: 4px;
    color: white;
    }
    
    
    .is-clicked {
      content: '';
      position: absolute;
      top: calc(var(--y) * 1px);
      left: calc(var(--x) * 1px);
      width: 100px;
      height:100px;
      background: rgba(255, 255, 255, .3);
      border-radius: 50%;
      animation: glow-out 1s ease-in-out forwards;
      transform: translate(-50%, -50%);  
     }
    

    JS

    // Material Design button Module 
     let md_module = (function() {
    
     let btn = document.querySelectorAll(".md");
     let md_btn = Array.prototype.slice.call(btn);
    
      md_btn.forEach(eachCB)
    
     function eachCB (item, index, array){
    
      function md(e) {
         let offsetX = e.clientX - item.offsetLeft;
         let offsetY = e.clientY - item.offsetTop;
         item.style.setProperty("--x", offsetX);
         item.style.setProperty("--y", offsetY);
         item.innerHTML += '
    '; } function rm() { let state = item.querySelectorAll(".is-clicked"); console.log(state) for (let i = 0; i < state.length; i++) { if (state[i].className === "is-clicked") { state[i].remove(); } } } item.addEventListener("click", md); item.addEventListener("animationend", rm); } })();

提交回复
热议问题