DDR爱好者之家 Design By 杰米
本文实例为大家分享了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' "${this.turnStyleToString(_bladeStyle)}"></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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
福利放送 2024/3/29
跑跑卡丁车单机版 2020-11-1(可与AI一起玩) 天翼云/百度云
更新日志
2024年03月29日
2024年03月29日
- 苏有朋.1994-珍惜的背包(第3张)【飞碟】【WAV+CUE】
- 《宝可梦:朱紫》“蓝之圆盘”IGN7分:性能优化仍旧灾难
- 《塞尔达传说:王国之泪》大获成功!多项年度数据表现优秀
- 应景!欧任用《塞尔达传说:王国之泪》堆雪人
- 杨采妮.1996-为所欲为(国专)【EMI百代】【WAV+CUE】
- 黎姿.1993-如果真的恋爱【华纳】【WAV+CUE】
- 朱婧汐.2024-VILLAIN反派角色【StreetVoic】【FLAC分轨】
- 《喷射战士3》最新祭典公布 1月13日举办
- NS日服年度下载榜公开:《王泪》不敌《西瓜游戏》
- 科乐美《心跳回忆GS》系列推出复刻版 2月14日登陆NS
- 林峰.2012-SELF-PORTRAIT【英皇娱乐】【WAV+CUE】
- TENSION.2004-Story新歌+精丫EMI百代】【FLAC分轨】
- 草蜢.2000-环球2000超巨星系列【环球】【WAV+CUE】
- 国行Switch开启元旦折扣!《马里奥奥德赛》7折促销
- 《塞尔达》官方账号感谢玩家支持 发布王泪最新壁纸