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

JS實(shí)現(xiàn)transform實(shí)現(xiàn)扇子效果

 更新時(shí)間:2020年01月17日 08:34:35   作者:SSSkyCong  
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)transform實(shí)現(xiàn)扇子效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JS實(shí)現(xiàn)transform實(shí)現(xiàn)扇子效果的具體代碼,供大家參考,具體內(nèi)容如下

描述:

JS面向?qū)ο蟆胻ransform實(shí)現(xiàn)扇子效果

效果:

實(shí)現(xiàn):

<!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>
  <div class="fan"></div>
  <div class="fan-other"></div>
 
  <script>
  (function(){
    
    // 扇子類
    class Fan {
      // Fan類的構(gòu)造器,接收傳入的參數(shù)
      // params selector 容器的選擇器
      // params options 一些配置參數(shù)
      // options size 尺寸
      // ...
      // void return 
      constructor ( selector, options ) {
        // 扇子容器
        this.selector = selector
        this.wrapper = document.querySelector(selector)
        // 默認(rèn)配置項(xiàng)
        let _options = {
          size: 'normal' // large
        }
        // 配置項(xiàng)
        this.options = options || _options
        // 扇葉的尺寸
        this.size = {
          width: 50, height: 150
        }
        // 進(jìn)行初始化操作
        this.init()
      }
      // 初始化函數(shù)
      init () {
        // 創(chuàng)建扇葉
        this.createFanBlade()    
      }
      // 創(chuàng)建扇葉
      createFanBlade () {
        // 扇葉的數(shù)量 當(dāng)new時(shí)size不為normal時(shí),輸出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()//背景顏色隨機(jī)
           _fragmentStr += `<div style="${this.turnStyleToString(_bladeStyle)}"></div>`
        }
        // 放入扇葉
        this.wrapper.innerHTML = _fragmentStr ;
        this.createTransition(_bladeNumbers);
      }
      // 制作動(dòng)效Style并插入到head中
 
      createTransition (_bladeNumbers) {
        let _result = '<style>';
        _result += `
          ${this.selector} div { transition: all 0.5s; transform-origin: center bottom; }
        `;
        // 0 1 2 3 4 5 6 7 8 角度轉(zhuǎn)化 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 div:nth-child(${i+1}){ 
            transform: rotate(${_angle}deg); }
          `
        }
        _result += '</style>'
        document.querySelector('head').innerHTML += _result;
      }
 
      // 轉(zhuǎn)換樣式對(duì)象為字符串
      turnStyleToString (styleObject) {
        let _result = ''
        for (const key in styleObject) {
        _result += key + ':' + styleObject[key] + ';'
        }
        return _result;
      }
 
      // 隨機(jī)創(chuàng)建顏色
      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>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • js實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證詳解

    js實(shí)現(xiàn)二代身份證號(hào)碼驗(yàn)證詳解

    本文給大家分享一段超級(jí)全面的二代身份證號(hào)碼驗(yàn)證程序,由JS編寫而成,可以校驗(yàn)身份證的地址碼、出生日期碼、順序碼和數(shù)字校驗(yàn)碼。是身份證去偽存真的一大利器。
    2014-11-11
  • 淺談jQuery異步對(duì)象(XMLHttpRequest)

    淺談jQuery異步對(duì)象(XMLHttpRequest)

    文章淺顯易懂的將jQuery異步對(duì)象分為了5個(gè)步奏,非常有利于我們學(xué)習(xí)記憶,是篇相當(dāng)不錯(cuò)的學(xué)習(xí)jQuery異步對(duì)象的文章,這里推薦給大家。
    2014-11-11
  • JavaScript數(shù)組迭代方法

    JavaScript數(shù)組迭代方法

    本文主要介紹了JavaScript數(shù)組迭代方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • 微信小程序裁剪頭像插件使用方法詳解

    微信小程序裁剪頭像插件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了微信小程序裁剪頭像插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 熱點(diǎn)新聞滾動(dòng)特效的js代碼

    熱點(diǎn)新聞滾動(dòng)特效的js代碼

    我們?cè)诤芏啻笮烷T戶網(wǎng)站都會(huì)有看到有些一熱點(diǎn)新聞都會(huì)一直向上滾動(dòng),下面我就來(lái)給大家推薦一款Javascript中熱點(diǎn)新聞滾動(dòng)特效代碼,有需要了解的朋友可以參考一下
    2013-08-08
  • JS生態(tài)系統(tǒng)加速桶裝文件使用探索

    JS生態(tài)系統(tǒng)加速桶裝文件使用探索

    這篇文章主要為大家介紹了JS?生態(tài)系統(tǒng)加速桶裝文件使用實(shí)例探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • js的各種排序算法實(shí)現(xiàn)(總結(jié))

    js的各種排序算法實(shí)現(xiàn)(總結(jié))

    下面小編就為大家?guī)?lái)一篇js的各種排序算法實(shí)現(xiàn)(總結(jié))。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-07-07
  • JavaScript高級(jí)程序設(shè)計(jì) XML、Ajax 學(xué)習(xí)筆記

    JavaScript高級(jí)程序設(shè)計(jì) XML、Ajax 學(xué)習(xí)筆記

    JavaScript高級(jí)程序設(shè)計(jì) XML、Ajax 學(xué)習(xí)筆記,需要的朋友可以參考下。
    2011-09-09
  • JS圖片預(yù)加載插件詳解

    JS圖片預(yù)加載插件詳解

    這篇文章主要為大家詳細(xì)介紹了JS圖片預(yù)加載插件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • 微信小程序全局文件的使用詳解

    微信小程序全局文件的使用詳解

    在小程序開發(fā)時(shí),每個(gè)頁(yè)面都對(duì)應(yīng)一個(gè)目錄,每個(gè)目錄又分別有wxml、wxss、js和json四個(gè)文件。詳細(xì)說(shuō)明可查看后續(xù)文章介紹,本文主要詳解全局文件
    2022-08-08

最新評(píng)論

海安县| 栾城县| 蓝田县| 兴仁县| 固阳县| 徐州市| 光泽县| 阳信县| 临泽县| 永清县| 普洱| 客服| 牟定县| 桂平市| 贵溪市| 益阳市| 诏安县| 海伦市| 北流市| 化德县| 四会市| 潞城市| 柞水县| 中阳县| 昌宁县| 库伦旗| 鲁甸县| 凉城县| 武夷山市| 竹溪县| 石家庄市| 汽车| 江安县| 阿勒泰市| 视频| 通榆县| 仪陇县| 车险| 唐海县| 五大连池市| 新密市|