javascript - 有没有大神,来看看这段代码
PHP中文网
PHP中文网 2017-04-11 12:43:33
[JavaScript讨论组]

下面这些代码实在是看不懂,都不知道他正则在那里的作用,有没有大神帮忙注释下,万分感激!!!
// 代码可以直接复制运行(能写这代码的真的是大神啊):





YuGiOh




    
    

ROTATE

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
伊谢尔伦

匹配css中
transform:rotate(100deg)
正则作用是提取出100

PHP中文网

rotate(10deg)来说

(rotate\([\-\+]?((\d+)(deg))\))
有四个括号对应的$1-4 注意\(是匹配(
第二个括号((\d+)(deg))
第三个(\d+) 提取出10
第四个(deg) $4 = deg 说白了

wt.replace ($2, parseFloat (RegExp.$3) + limit + RegExp.$4);
limit=1
10deg变成11deg的节奏 然后1112...(以此类推)
我个人感觉很多括号加的没意义 不知道写程序的人怎么想的

怪我咯
var reg = /(rotate\([\-\+]?((\d+)(deg))\))/i;
var wt = p.style['-webkit-transform'], wts = wt.match (reg);

其中 wt = rotate(10deg)
这两句执行完毕后

wts.$2 = 10deg;
wts.$3 = 10;
wts.$4 = deg;

最后的 wt.replace ($2, parseFloat (RegExp.$3) + limit + RegExp.$4)
实际就是 'rotate(10deg)'.replace('10deg', 10 + 1 + 'deg') = rotate(11deg)

要实现的是一个旋转的动画效果。

高洛峰

正则在这的作用就是装逼,不用正则也很简单,就是实现每30毫秒转limit度的旋转效果;
不用正则大概这样:
var oriDeg=10,timer=null;
timer=setInterval(function(){

p.style['-webkit-transform']='rotate('+oriDeg+'deg)';
oriDeg+=limit;
if(oriDeg>360) oriDeg=0;

},30);
差不多就这么个意思;
正则用来拆分transform的值,再和limit拼接成不断变化的值;
比如:rotate(10deg);正则match会把它拆分成["rotate(10deg)", "rotate(10deg)", "10deg", "10", "deg"]这个结果,$1-$4分别对应为这个数组从1开始的值;

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号