最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue自定義加水波紋效果指令實(shí)例代碼

 更新時(shí)間:2022年02月23日 11:56:08   作者:不吃魚(yú)d貓  
這篇文章主要給大家介紹了關(guān)于Vue自定義加水波紋效果指令的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

大家好,我是不吃魚(yú)d貓,過(guò)年以來(lái)。斷更許久,又回來(lái)了,學(xué)無(wú)止境,作為程序員知識(shí)是要不斷更新迭代的。在此期間,接觸了幾天的Vue,確實(shí)好用,今天給大家說(shuō)個(gè)好玩的,在做項(xiàng)目過(guò)程中,點(diǎn)擊按鈕,大家肯定會(huì)接觸過(guò)很花的效果。接下來(lái)給大家說(shuō)說(shuō)水波紋效果。

自定義指令

指令的作用

言簡(jiǎn)意賅,就是操作底層dom

當(dāng)然vue自身有非常強(qiáng)大的指令功能,代替你進(jìn)行dom操作,比如v-on綁定事件對(duì)不對(duì),這應(yīng)該大家熟悉的指令,100%要用到,畢竟js就是個(gè)事件驅(qū)動(dòng)的語(yǔ)言。還有大家可以去官方文檔去看看

水波紋

水波紋效果

如上圖所示,點(diǎn)擊按鈕時(shí)鼠標(biāo)四周會(huì)發(fā)散一個(gè)圓像水波一樣。

實(shí)現(xiàn)

原理

我們?cè)邳c(diǎn)擊的時(shí)候,鼠標(biāo)會(huì)發(fā)散一個(gè)圓,是不是有點(diǎn)擊事件觸發(fā)了,此時(shí)我們就增加一個(gè)span標(biāo)簽,當(dāng)然要給他設(shè)置寬高,等屬性,而且我們觀察,圓的顏色是慢慢沒(méi)有的,所以還有opacity屬性,還有span是不是跟隨鼠標(biāo)移動(dòng)的,所以還有添加定位屬性。

核心

注意發(fā)現(xiàn),span發(fā)散的圓是不斷變大的,所以寬高是不斷變化的,變化,我們就能想到定時(shí)器,定時(shí)器里面就可以控制圓的寬高,讓span變化的屬性不斷有規(guī)律變化,當(dāng)然要有臨界值,我們可以看看下圖

我們可以看看需求,水波紋,肯定是要覆整個(gè)按鈕的,那么span的發(fā)散半徑肯定就是按鈕中最大的距離,如圖所示,對(duì)角線肯定最長(zhǎng)邊,一目了然。怎么求,在構(gòu)造函數(shù)Math有個(gè)方法可以求Math.sqrt(a*a+b*b)所以span的寬高是2倍的最長(zhǎng)距離。所以臨界值找到了,達(dá)到都就清除定時(shí)器,讓span的屬性不在變化。并且刪除span。

代碼實(shí)現(xiàn)

上面我們分析了分析,接下來(lái)我們用代碼實(shí)現(xiàn)。

結(jié)構(gòu):

 <div class="app">
        <h1>{{title}}</h1>
        <button v-shuibowen="">點(diǎn)我發(fā)散水波紋</button>
        <!-- <div class="box" v-shuibowen=""></div> -->
    </div>

實(shí)例化一個(gè)vue對(duì)象。

 const vm = new Vue({
            data: {
                title: "自定義指定設(shè)置水波紋"
            }
        }).$mount(".app")

自定義指令

 Vue.directive('shuibowen', {
                        //binding 指令攜帶的變量數(shù)據(jù)
            inserted: function(el, binding) {
                el.addEventListener('click', function(e) {
                    let x = e.clientX - el.offsetLeft
                    let y = e.clientY - el.offsetTop

                    //在鼠標(biāo)位置增加一個(gè)span標(biāo)簽
                    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
                        //判斷超出最大值時(shí),清除定時(shí),并且刪除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)
                })

            }
        })

總結(jié)

剛接觸Vue,代碼沒(méi)有優(yōu)化,望見(jiàn)諒。自定義水波紋指令的好處就是,哪里需要用到水波紋的效果就往哪里加。

到此這篇關(guān)于Vue自定義加水波紋效果指令的文章就介紹到這了,更多相關(guān)Vue自定義水波紋指令內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-router的鉤子函數(shù)用法實(shí)例分析

    vue-router的鉤子函數(shù)用法實(shí)例分析

    這篇文章主要介紹了vue-router的鉤子函數(shù)用法,結(jié)合實(shí)例形式分析了vue路由鉤子分類及vue-router鉤子函數(shù)相關(guān)使用技巧,需要的朋友可以參考下
    2019-10-10
  • 一定要知道的 25 個(gè) Vue 技巧

    一定要知道的 25 個(gè) Vue 技巧

    這篇文章主要給大家分享將 prop 限制為類型列表、默認(rèn)內(nèi)容和擴(kuò)展點(diǎn)、使用引號(hào)觀察嵌套值、知道何時(shí)使用 v-if、單作用域 slot 的簡(jiǎn)寫(xiě)、有條件地渲染slot等25 個(gè)Vue 技巧,下文是下相關(guān)資料,需要的朋友可以參考一下
    2021-11-11
  • vue中下拉框組件的封裝方式

    vue中下拉框組件的封裝方式

    這篇文章主要介紹了vue中下拉框組件的封裝方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue子組件內(nèi)的props對(duì)象參數(shù)配置方法

    Vue子組件內(nèi)的props對(duì)象參數(shù)配置方法

    這篇文章主要介紹了?Vue?子組件內(nèi)的??props?對(duì)象里的?default?參數(shù)是如何定義Array、?Object?、或?Function?默認(rèn)值的正確寫(xiě)法說(shuō)明,感興趣的朋友跟隨小編一起看看吧
    2022-08-08
  • Vue引入部分element.ui組件的一些小坑記錄

    Vue引入部分element.ui組件的一些小坑記錄

    這篇文章主要介紹了Vue引入部分element.ui組件的一些小坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 如何在 Vue.js 中使用第三方j(luò)s庫(kù)

    如何在 Vue.js 中使用第三方j(luò)s庫(kù)

    本篇文章主要介紹了如何在 Vue.js 中使用第三方j(luò)s庫(kù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • Element-ui 滾動(dòng)條美化的實(shí)現(xiàn)

    Element-ui 滾動(dòng)條美化的實(shí)現(xiàn)

    本文主要介紹了Element-ui 滾動(dòng)條美化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Vue設(shè)置別名聯(lián)想路徑即@/生效的方法

    Vue設(shè)置別名聯(lián)想路徑即@/生效的方法

    這篇文章主要給大家介紹了Vue設(shè)置別名聯(lián)想路徑即@/生效的方法,文中有詳細(xì)的代碼示例和圖文講解,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11
  • 詳談vue+webpack解決css引用圖片打包后找不到資源文件的問(wèn)題

    詳談vue+webpack解決css引用圖片打包后找不到資源文件的問(wèn)題

    下面小編就為大家分享一篇詳談vue+webpack解決css引用圖片打包后找不到資源文件的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 前端vue3樹(shù)形組件使用代碼示例

    前端vue3樹(shù)形組件使用代碼示例

    最近在開(kāi)發(fā)時(shí)遇到一個(gè)問(wèn)題,是在輸入框里面放一個(gè)樹(shù)形組件,這篇文章主要給大家介紹了關(guān)于前端vue3樹(shù)形組件使用的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07

最新評(píng)論

洞口县| 贵港市| 湟源县| 宜宾县| 兴国县| 江北区| 会宁县| 木兰县| 清河县| 乌鲁木齐市| 阳西县| 进贤县| 潜山县| 岢岚县| 漾濞| 资阳市| 仙游县| 宿迁市| 苗栗县| 兰西县| 和硕县| 天水市| 灵宝市| 阳信县| 怀远县| 凭祥市| 大冶市| 南华县| 连江县| 奉节县| 长治市| 襄樊市| 丘北县| 沁源县| 建湖县| 长阳| 新竹县| 松阳县| 潼南县| 庄浪县| 乐东|