亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

教你用vue實(shí)現(xiàn)一個(gè)有趣的圍繞圓弧動(dòng)畫(huà)效果

 更新時(shí)間:2022年04月24日 11:17:01   作者:海龜先生plus  
最近做的兩個(gè)項(xiàng)目都是關(guān)于vue的,做完整理一下,這篇文章主要給大家介紹了關(guān)于如何用vue實(shí)現(xiàn)一個(gè)有趣的圍繞圓弧動(dòng)畫(huà)效果的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前幾天在好朋友樓上小黑的介紹下,看到了某個(gè)平臺(tái)的官網(wǎng),里面有一個(gè)人物介紹的模塊,里面的動(dòng)畫(huà)感覺(jué)不錯(cuò),于是就自己動(dòng)手寫(xiě)了一個(gè)。

1.0 原官網(wǎng)示例

當(dāng)然這里去掉了具體信息,原網(wǎng)站是里面圓圈中是人物的頭像,旁邊是介紹信息,每個(gè)人物就沿著圓弧移動(dòng)到指定位置

2.0 我們實(shí)現(xiàn)的結(jié)果

當(dāng)點(diǎn)擊中間開(kāi)始時(shí),幾個(gè)小球一次轉(zhuǎn)動(dòng)到固定角度

3.0 簡(jiǎn)單分析下

要讓小圓在圓弧上動(dòng),我們只需要知道圓心在圓弧上的坐標(biāo)(x,y)就行了

所以當(dāng)我們知道外圓的半徑,小圓的半徑,以及角度再利用三角函數(shù)就可以計(jì)算出 小圓在圓弧上定位的位置 top right

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

這里是將 移動(dòng)的小圓封裝成一個(gè)組件 moveRound,只需要將 大圓半徑,小圓半徑轉(zhuǎn)動(dòng)的角度,剩下的就可以按自己需要添加

<template>
  <div>
      <h3>圍繞圓弧移動(dòng)動(dòng)畫(huà)</h3>
      <div class="arc_bo" >
         <move-round :minR="25" :bigR="150" :angle="30" ref="mRound1" >	     </move-round>
          <span class="start" @click="toMove" >開(kāi)始</span>
      </div>
  </div>
</template>

<script>
    import moveRound from './components/moveRound.vue'
    export default {
        name: 'arcMoveAni',
        components: {
            moveRound
        },
        methods: {
            toMove() {
                this.$refs.mRound1.toMove()
            }
        }
    }
</script>

<style scoped>
    .arc_bo{
        margin: 0 auto;
        width: 6rem;
        height: 6rem;
        border-radius: 50%;
        border: 1px solid #ccc;
        position: relative;
        margin-top: 2rem;
    }
    .start{
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%,-50%);
        color: #f40;
        width: 1rem;
        height: 1rem;
        border-radius: 50%;
        border: 1px solid #ccc;
        text-align: center;
        line-height: 1rem;
    }
</style>

moveRound組件, 角度的動(dòng)態(tài)改變計(jì)算 top,right的值,其中 raf,cafrequestAnimationFrame的兼容處理,不明白的可以看往期文章或者百度。

<template>
  <div>
      <div class="round" :style="setPosition" ></div>
  </div>
</template>

<script>
    let timer = 0
    import { raf,caf } from '../../utils/raf'
    export default {
        name: 'moveRound',
        props: {
            angle: { // 需要轉(zhuǎn)動(dòng)的角度
                type: Number,
                default: 0
            },
            bigR: { // 外層大圓半徑
                type: Number,
                default: 0
            },
            minR: { //移動(dòng)小圓半徑
                type: Number,
                default: 0
            },
            backgroundColor: {
                type: String,
                default: '#7fffd4'
            }
        },
        data() {
            return {
                top: '',
                right: '',
                setAngle: 0
            }
        },
        mounted() {

        },
        computed: {
            /**
             * sin 對(duì)應(yīng) y 的值,轉(zhuǎn)換為定位中距離頂部top等于 圓的半徑 - y - 小圓半徑(讓圓心在圓弧上)
             * cos 對(duì)應(yīng) x 的值,轉(zhuǎn)換為定位中距離右邊right等于 圓的半徑 - x - 小圓半徑
             * **/ 
            setPosition( { top, right ,setAngle, bigR, minR, backgroundColor} ) {
                let size = minR*2 + 'px'

                let x = bigR * ( 1 - Math.cos(setAngle * Math.PI/180)) - minR
                let y = bigR * ( 1 - Math.sin(setAngle * Math.PI/180))  - minR

                right = x + 'px'
                top = y + 'px'
                return {
                    top,
                    right,
                    width: size,
                    height: size,
                    backgroundColor
                }
            }
        },
        methods: {
            toMove() {
            	// 調(diào)整 累加值,改變速度
                this.setAngle += 1
                timer = raf(this.toMove)
                // 結(jié)束動(dòng)畫(huà)
                if(this.setAngle > this.angle) {
                    caf(timer)
                    // 也可以根據(jù)需要重復(fù)執(zhí)行
                    // this.setAngle = 0
                }
            }
        }
    }
</script>

<style>
 .round{
    position: absolute;
    will-change: top,right;
    border-radius: 50%;
 }
</style>

5.0 總結(jié)

主要的點(diǎn)就是根據(jù)角度計(jì)算位置,只要思路正確,應(yīng)該可以少走彎路。

到此這篇關(guān)于用vue實(shí)現(xiàn)一個(gè)有趣的圍繞圓弧動(dòng)畫(huà)效果的文章就介紹到這了,更多相關(guān)vue實(shí)現(xiàn)圓弧動(dòng)畫(huà)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-cli的eslint相關(guān)用法

    vue-cli的eslint相關(guān)用法

    本篇文章主要介紹了vue-cli的eslint相關(guān)用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • Vue 實(shí)現(xiàn)撥打電話操作

    Vue 實(shí)現(xiàn)撥打電話操作

    這篇文章主要介紹了Vue 實(shí)現(xiàn)撥打電話操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Vue項(xiàng)目中CSS?Modules和Scoped?CSS的介紹與區(qū)別

    Vue項(xiàng)目中CSS?Modules和Scoped?CSS的介紹與區(qū)別

    在vue中我們有兩種方式可以定義css作用域,一種是scoped,另一種就是css modules,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中CSS?Modules和Scoped?CSS的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • vue+element-ui中form輸入框無(wú)法輸入問(wèn)題的解決方法

    vue+element-ui中form輸入框無(wú)法輸入問(wèn)題的解決方法

    很多初次接觸element-ui的同學(xué),在用到element form組件時(shí)可能會(huì)遇到input框無(wú)法輸入文字的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于vue+element-ui中form輸入框無(wú)法輸入問(wèn)題的解決方法,需要的朋友可以參考下
    2023-04-04
  • Vue項(xiàng)目實(shí)現(xiàn)token無(wú)感刷新的示例代碼

    Vue項(xiàng)目實(shí)現(xiàn)token無(wú)感刷新的示例代碼

    最近在使用系統(tǒng)的過(guò)程中,業(yè)務(wù)人員反饋剛登錄一會(huì)就提示token過(guò)期需要重新登錄,所以本文為大家分享一個(gè)無(wú)感刷新的實(shí)現(xiàn)代碼,需要的可以參考下
    2023-07-07
  • 如何理解Vue的.sync修飾符的使用

    如何理解Vue的.sync修飾符的使用

    本篇文章主要介紹了如何理解Vue的.sync修飾符的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • vue中then后的返回值解析

    vue中then后的返回值解析

    這篇文章主要介紹了vue中then后的返回值解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue實(shí)現(xiàn)輪播圖組件的封裝

    Vue實(shí)現(xiàn)輪播圖組件的封裝

    Vue輪播圖組件的封裝可通過(guò)封裝組件、使用插件、配置化等方式實(shí)現(xiàn),主要包括圖片預(yù)加載、定時(shí)輪播、無(wú)限滾動(dòng)、手勢(shì)滑動(dòng)、響應(yīng)式布局等功能,實(shí)現(xiàn)方式可使用Vue的生命周期函數(shù)、自定義事件、計(jì)算屬性等技術(shù)
    2023-04-04
  • 使用vue3實(shí)現(xiàn)一個(gè)人喵交流小程序

    使用vue3實(shí)現(xiàn)一個(gè)人喵交流小程序

    Vue3 在經(jīng)過(guò)多個(gè)開(kāi)發(fā)版本的迭代后,終于迎來(lái)了它的正式版本,下面這篇文章主要給大家介紹了關(guān)于如何使用vue3實(shí)現(xiàn)一個(gè)人喵交流小程序的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • JS數(shù)組Array常用方法匯總+實(shí)例

    JS數(shù)組Array常用方法匯總+實(shí)例

    這篇文章主要介紹了JS數(shù)組Array常用方法匯總和實(shí)例,JavaScript創(chuàng)建數(shù)組的方式,找數(shù)組元素,數(shù)組去重,實(shí)現(xiàn)數(shù)組排序需要的朋友可以參考下
    2022-05-05

最新評(píng)論