Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript prependTo之后现有div上的jQuery幻灯片动画_Javascript_Jquery_Css - Fatal编程技术网

Javascript prependTo之后现有div上的jQuery幻灯片动画

Javascript prependTo之后现有div上的jQuery幻灯片动画,javascript,jquery,css,Javascript,Jquery,Css,我有一个半滑块样式的UI,其中从左侧添加了新术语:。我使用jQuery prependTo函数来实现这一点。我的问题是,我希望已经显示的术语在添加新术语时向右执行动画幻灯片,而不是突然“出现”在正确的位置。我确实尝试过在已经成功显示的术语中添加一个“显示”类,然后尝试在右侧动画中添加一个幻灯片,但这并没有达到我想要的效果(“显示”的对象被移动到了比我预期的更右侧) 下面是有问题的代码(您可能希望查看小提琴,以便在上下文中看到它): 函数addToStream(术语,延迟){ setTimeout

我有一个半滑块样式的UI,其中从左侧添加了新术语:。我使用jQuery prependTo函数来实现这一点。我的问题是,我希望已经显示的术语在添加新术语时向右执行动画幻灯片,而不是突然“出现”在正确的位置。我确实尝试过在已经成功显示的术语中添加一个“显示”类,然后尝试在右侧动画中添加一个幻灯片,但这并没有达到我想要的效果(“显示”的对象被移动到了比我预期的更右侧)

下面是有问题的代码(您可能希望查看小提琴,以便在上下文中看到它):

函数addToStream(术语,延迟){
setTimeout(函数(){
$("")
.addClass(“流_术语”)
.html(学期)
.css({
不透明度:0
})
.prependTo(“流式术语”)
.animate({opacity:1}),
{持续时间:1000,
完成:函数(){
$(此).addClass(“显示”);
}
});
},延误);
}
这里的任何帮助都将不胜感激。谢谢大家!

*注意:我可以在代码中访问jQueryUI,尽管它没有链接到fiddle中。另外,如果有人知道一个插件能比我做得更好,请告诉我。我能找到的最接近的一个是,但我没有发现如何用它创建类似的用户界面(对于我来说,这可能也有点过头了)。

这里有一个方法:

function addToStream(term, delay) {
    setTimeout(function(){
        var newDiv = $("<div />");

        newDiv.addClass("stream_term")
        .html(term)
        .css({
            opacity: 0,
            display: 'none'
        }).prependTo("#stream_terms");

        var width = newDiv.width();
        var height = newDiv.height();

        newDiv.css({
            width: 0,
            height: height,
            display: 'inline-block'
        })
        .animate({
            width: width,
            margin: '0 10px',
            padding: '5px 10px'
        }, 1000)
        .animate({opacity: 1}, 1000, function(){
            $(this).addClass("displayed");
        });
    }, delay);
}

演示:

是的,这样就可以了-非常感谢!我确实注意到动画有点起伏,但这可能没什么帮助。@Brutalisk设置边距和填充值的动画应该可以消除这个问题。我更新了我的答案和演示。完美!工作起来很有魅力!
function addToStream(term, delay) {
    setTimeout(function(){
        var newDiv = $("<div />");

        newDiv.addClass("stream_term")
        .html(term)
        .css({
            opacity: 0,
            display: 'none'
        }).prependTo("#stream_terms");

        var width = newDiv.width();
        var height = newDiv.height();

        newDiv.css({
            width: 0,
            height: height,
            display: 'inline-block'
        })
        .animate({
            width: width,
            margin: '0 10px',
            padding: '5px 10px'
        }, 1000)
        .animate({opacity: 1}, 1000, function(){
            $(this).addClass("displayed");
        });
    }, delay);
}
.stream_term {
    padding: 0;
    margin: 0;
    overflow: hidden;
}