本文实例为大家分享了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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
js,扇子
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“JS实现transform实现扇子效果”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2025年01月09日
2025年01月09日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]