JS實(shí)現(xiàn)transform實(shí)現(xiàn)扇子效果
本文實(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(){ // 扇子類(lèi) class Fan { // Fan類(lèi)的構(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)文章
javascript實(shí)現(xiàn)2016新年版日歷
這篇文章主要為大家介紹了javascript實(shí)現(xiàn)2016新年版日歷的詳細(xì)代碼,感興趣的小伙伴們可以參考一下2016-01-01Bootstrap幻燈片輪播圖支持觸屏左右手勢(shì)滑動(dòng)的實(shí)現(xiàn)方法
最近在研究用bootstrap搭建網(wǎng)站,Bootstrap能自適應(yīng)pc端和手機(jī)端,并且移動(dòng)設(shè)備優(yōu)先,適合現(xiàn)如今移動(dòng)營(yíng)銷(xiāo),大家用的設(shè)備基本是觸屏的了,能用滑動(dòng)交互在小屏幕上體驗(yàn)會(huì)更好,那么如何實(shí)現(xiàn)呢?下面小編給大家介紹下bootstrap 手勢(shì)滑動(dòng)輪播圖的實(shí)現(xiàn)方法2016-10-10原生JS實(shí)現(xiàn)的多個(gè)彩色小球跟隨鼠標(biāo)移動(dòng)動(dòng)畫(huà)效果示例
這篇文章主要介紹了原生JS實(shí)現(xiàn)的多個(gè)彩色小球跟隨鼠標(biāo)移動(dòng)動(dòng)畫(huà)效果,涉及javascript事件響應(yīng)、頁(yè)面元素屬性動(dòng)態(tài)修改及隨機(jī)數(shù)應(yīng)用等相關(guān)操作技巧,需要的朋友可以參考下2018-02-02基于 antd pro 的短信驗(yàn)證碼登錄功能(流程分析)
這篇文章主要介紹了基于 antd pro 的短信驗(yàn)證碼登錄功能(流程分析),本文通過(guò)實(shí)例代碼流程分析給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-05-05微信小程序下面商品左右滑動(dòng)上面tab也跟隨變動(dòng)功能實(shí)現(xiàn)
這篇文章主要介紹了小程序下面商品左右滑動(dòng)上面tab也跟隨變動(dòng)功能,也就是點(diǎn)擊tab切換下面的商品信息,滑動(dòng)下面的商品信息tab也進(jìn)行切換,本文給大家分享實(shí)現(xiàn)代碼,需要的朋友可以參考下2022-07-07js使用DOM設(shè)置單選按鈕、復(fù)選框及下拉菜單的方法
這篇文章主要介紹了js使用DOM設(shè)置單選按鈕、復(fù)選框及下拉菜單的方法,較為詳細(xì)的分析了單選按鈕、復(fù)選框及下拉菜單的具體用法及實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-01-01利用js的Node遍歷找到repeater的一個(gè)字段實(shí)例介紹
本文教大家使用js的Node遍歷找到repeater的一個(gè)字段的具體實(shí)現(xiàn)思路,感興趣的朋友可參考下,希望可以幫助到你2013-04-04