91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

JS實現transform實現扇子效果

發布時間:2020-08-24 10:41:11 來源:腳本之家 閱讀:160 作者:SSSkyCong 欄目:web開發

本文實例為大家分享了JS實現transform實現扇子效果的具體代碼,供大家參考,具體內容如下

描述:

JS面向對象——利用transform實現扇子效果

效果:

JS實現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>
  <div class="fan"></div>
  <div class="fan-other"></div>
 
  <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 += `<div ></div>`
        }
        // 放入扇葉
        this.wrapper.innerHTML = _fragmentStr ;
        this.createTransition(_bladeNumbers);
      }
      // 制作動效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 角度轉化 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;
      }
 
      // 轉換樣式對象為字符串
      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

樟树市| 六枝特区| 漳州市| 凤凰县| 荆门市| 象山县| 台南市| 灌南县| 毕节市| 陈巴尔虎旗| 武山县| 获嘉县| 德昌县| 定边县| 和田县| 石台县| 浙江省| 平原县| 天台县| 四平市| 乾安县| 读书| 当雄县| 丘北县| 荆门市| 泉州市| 鄂托克旗| 高雄市| 罗江县| 伊春市| 姚安县| 汶川县| 绥中县| 黎平县| 太湖县| 六盘水市| 滨海县| 翁源县| 禄劝| 广宗县| 福鼎市|