中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中怎么利用transform實現扇子效果

發布時間:2021-08-10 14:48:43 來源:億速云 閱讀:109 作者:Leah 欄目:開發技術

JavaScript中怎么利用transform實現扇子效果,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

實現:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta http-equiv="X-UA-Compatible" content="ie=edge">  <title>Document</title></head><style>.fan { margin: 0 auto; position: relative; top: 100px; width: 50px;}.fan-other { margin: 0 auto; position: relative; top: 300px; width: 50px;}</style><body>  <p class="fan"></p>  <p class="fan-other"></p>  <script>  (function(){    // 扇子類    class Fan {      // Fan類的構造器,接收傳入的參數      // params selector 容器的選擇器      // params options 一些配置參數      // options size 尺寸      // ...      // void return      constructor ( selector, options ) {        // 扇子容器        this.selector = selector        this.wrapper = document.querySelector(selector)        // 默認配置項        let _options = {          size: 'normal' // large        }        // 配置項        this.options = options || _options        // 扇葉的尺寸        this.size = {          width: 50, height: 150        }        // 進行初始化操作        this.init()      }      // 初始化函數      init () {        // 創建扇葉        this.createFanBlade()      }      // 創建扇葉      createFanBlade () {        // 扇葉的數量 當new時size不為normal時,輸出11片扇葉的扇子        let _bladeNumbers = this.options.size === 'normal' ? 9 : 11;        let _fragmentStr = '';        let { width, height } = this.size;        // 扇葉樣式        let _bladeStyle = {          width: width + 'px',          height: height+ 'px',          position: 'absolute',          top: 0, left: 0        }        for (let i = 0; i < _bladeNumbers; i++) {          _bladeStyle.background = this.createRandomColor()//背景顏色隨機           _fragmentStr += `<p ></p>`        }        // 放入扇葉        this.wrapper.innerHTML = _fragmentStr ;        this.createTransition(_bladeNumbers);      }      // 制作動效Style并插入到head中      createTransition (_bladeNumbers) {        let _result = '<style>';        _result += `          ${this.selector} p { transition: all 0.5s; transform-origin: center bottom; }        `;        // 0 1 2 3 4 5 6 7 8 角度轉化 0-8 中間是0° -70°~70°        for (let i = 0; i < _bladeNumbers; i++) {          let _num = (_bladeNumbers - 1) / 2          let _angle = (i - _num) * 70 / _num          _result += `            ${this.selector}:hover p:nth-child(${i+1}){            transform: rotate(${_angle}deg); }          `        }        _result += '</style>'        document.querySelector('head').innerHTML += _result;      }      // 轉換樣式對象為字符串      turnStyleToString (styleObject) {        let _result = ''        for (const key in styleObject) {        _result += key + ':' + styleObject[key] + ';'        }        return _result;      }      // 隨機創建顏色      createRandomColor () {        return "#"+(function(color){          return new Array(7-color.length).join("0")+color;        })((Math.random() * 0x1000000 | 0).toString(16));      }    }    new Fan('.fan')    new Fan('.fan-other', {      size: 'large'    })  })();  </script></body></html>

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜山县| 凤山县| 确山县| 苍溪县| 休宁县| 德保县| 三原县| 佛学| 元江| 剑阁县| 巴彦县| 从化市| 军事| 新密市| 托克逊县| 余干县| 临武县| 新宾| 雷州市| 定兴县| 临清市| 盐山县| 陆河县| 固原市| 建平县| 高雄市| 临高县| 安塞县| 体育| 彭泽县| 溆浦县| 肥西县| 酉阳| 长顺县| 乌兰浩特市| 松溪县| 旬阳县| 临沭县| 巩留县| 德惠市| 郑州市|