您好,登錄后才能下訂單哦!
本篇內容主要講解“Vue怎么實現加水波紋效果”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Vue怎么實現加水波紋效果”吧!
言簡意賅,就是操作底層dom
當然vue自身有非常強大的指令功能,代替你進行dom操作,比如v-on綁定事件對不對,這應該大家熟悉的指令,100%要用到,畢竟js就是個事件驅動的語言。還有大家可以去官方文檔去看看
我們在點擊的時候,鼠標會發散一個圓,是不是有點擊事件觸發了,此時我們就增加一個span標簽,當然要給他設置寬高,等屬性,而且我們觀察,圓的顏色是慢慢沒有的,所以還有opacity屬性,還有span是不是跟隨鼠標移動的,所以還有添加定位屬性。
注意發現,span發散的圓是不斷變大的,所以寬高是不斷變化的,變化,我們就能想到定時器,定時器里面就可以控制圓的寬高,讓span變化的屬性不斷有規律變化,當然要有臨界值,我們可以看看下圖
我們可以看看需求,水波紋,肯定是要覆整個按鈕的,那么span的發散半徑肯定就是按鈕中最大的距離,如圖所示,對角線肯定最長邊,一目了然。怎么求,在構造函數Math有個方法可以求Math.sqrt(a*a+b*b)所以span的寬高是2倍的最長距離。所以臨界值找到了,達到都就清除定時器,讓span的屬性不在變化。并且刪除span。
上面我們分析了分析,接下來我們用代碼實現。
結構:
<div class="app"> <h2>{{title}}</h2> <button v-shuibowen="">點我發散水波紋</button> <!-- <div class="box" v-shuibowen=""></div> --> </div>
實例化一個vue對象。
const vm = new Vue({ data: { title: "自定義指定設置水波紋" } }).$mount(".app")
自定義指令
Vue.directive('shuibowen', { //binding 指令攜帶的變量數據 inserted: function(el, binding) { el.addEventListener('click', function(e) { let x = e.clientX - el.offsetLeft let y = e.clientY - el.offsetTop //在鼠標位置增加一個span標簽 let span = document.createElement("span") span.style.position = "absolute" span.style.background = binding.value || 'rgba(150, 91, 91, .5)' span.style.opacity = 1; span.style.borderRadius = '50%' el.append(span) let width = 0 let height = 0 let opacity = 1 let max_length = Math.sqrt(el.offsetWidth * el.offsetWidth + el.offsetHeight * el.offsetHeight) * 2 let time = setInterval(() => { width += 5 height += 5 opacity -= 0.01 //判斷超出最大值時,清除定時,并且刪除span if (width < max_length) { span.style.width = width + 'px' span.style.height = height + 'px' span.style.opacity = opacity; span.style.left = x - span.offsetWidth / 2 + 'px' span.style.top = y - span.offsetHeight / 2 + 'px' } else { clearInterval(time) time = null; span.remove() } }, 10) }) } })
到此,相信大家對“Vue怎么實現加水波紋效果”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。