javascript - 单独为页面上的每个字符制作动画

标签 javascript jquery html css

目前,我有一个我蹒跚而行的大部分工作脚本。我分多个阶段进行此操作,以使其尽可能模块化。

//This grabs every element on page.
$('body').find('*').each(function(){
//This filters for text nodes only
$(this).contents().filter(function() { return this.nodeType == Node.TEXT_NODE;       }).each(function(){
    //Wraps each text node in a span.
    $(this).wrap("<span class='text'></span>")
});
})
//
$('.text').each(function(){
    //Splits each text node into a character array and wraps each char in a span.
    var test = $(this).text().split('');
        var curStr = '';
        for(var i = 0; i < test.length; i++){
           if(test[i] !=  " " || test[i] != ''){
            curStr = curStr + "<span class='char'>" +test[i] + "</span>";
           } else {
            curStr = curStr + test[i];
           }
        }
        $(this).html(curStr);
})

我的问题来自尝试随机设置元素的样式。我正在使用以下代码来执行此操作:

setInterval(function(){
    $($('.char')[Math.floor((Math.random()*$('.char').length)+1)]).each(function(){
        $(this).css('color', 'green');
        $(this).css('position', 'absolute');
        $(this).css('background-color', 'red');
        $(this).animate({
        top: $(window).height + 'px'
    }, 1000, 'swing', function(){$(this).remove()});
    })  
    }, 100)

问题是,它设法应用了颜色样式,但我的位置和动画似乎不起作用。

最佳答案

jQuery height()方法需要括号:

改变这个:

top: $(window).height + 'px'

对此:

top: $(window).height() + 'px'

Working Example

关于javascript - 单独为页面上的每个字符制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25065882/

相关文章:

javascript - 我如何只允许文本框只有数字和以下百分号?

javascript - 在 CasperJS 的 XPath 表达式中使用 contains(text(), "string") 时如何使用忽略大小写?

javascript - Facebook API登录的安全性

javascript - 准备好 100 个文件比准备好 1 个文件好还是坏?

javascript - 捕获重定向下载链接的 HTTP 状态 300

java - 使用jquery和ajax时html中的表单操作?

javascript - chrome.identity.launchWebAuthFlow 的正确重定向 URL 是什么?

javascript - 如何读取当前页面的 HTML 以从 Chrome 扩展程序访问元素?

html - 使用 Bootstrap 在导航栏的左侧和右侧添加填充的问题

HTML 容器随着每个添加的 child 而扩展宽度 - 全部在一行中?