您好,登錄后才能下訂單哦!
這篇文章主要介紹原生js如何實現(xiàn)簡單的Ripple按鈕,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
整理文檔,搜刮出一個原生js實現(xiàn)簡單的Ripple按鈕的代碼,稍微整理精簡一下做下分享。
效果如圖
準備食材(html部分)
<ul id="nav"> <li> <a href='#'> <span>首頁</span> <span class="circle"></span> </a> </li> <li> <a href='#'> <span>我的</span> <span class="circle"></span> </a> </li> <li> <a href='#'> <span>更多</span> <span class="circle"></span> </a> </li> </ul>
典型的菜單li布局,里面的span.circle
表示的是觸摸彈出的小圓圈。
準備輔料 (css部分)
#nav { display: flex; } #nav li { position: relative; overflow: hidden; flex: 1; } li a { display: flex; flex-direction: column; justify-content: center; align-items: center; } .circle{ position: absolute; background: rgba(86,187,247,.1); width: 1px; height: 1px; top:50%; left: 50%; border-radius: 50%; } .circle.act{ animation: navCircle .4s; } @keyframes navCircle { from {transform: scale(0);border-radius: 50%;} to {transform:scale(200);border-radius: 50%;} }
我的思路是這樣的,給li相對定位,給小圓圈絕對定位,再給小圓圈添加動畫navCircle
,采用css3的縮放使其變大,至于為什么是200倍和.4s呢,經(jīng)過測試這樣更人性化,其余的倍數(shù)你們也可以試試。
大火烹飪 (js部分)
var li = document.getElementById('nav').querySelectorAll('li'); var circle = document.getElementById('nav').querySelectorAll('.circle'); for(var i=0,len = li.length;i<len;i++){ ((i)=>{ li[i].addEventListener('click',(e)=>{ circle[i].setAttribute('class','circle act'); circle[i].setAttribute('style','top:'+e.layerY+'px;left:'+e.layerX+'px'); }); li[i].addEventListener('touchend',()=>{ circle[i].setAttribute('class','circle'); }) })(i) }
以上是“原生js如何實現(xiàn)簡單的Ripple按鈕”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。