使用jquery延迟css转换

Delaying css transition with jquery

本文关键字:转换 css 延迟 jquery 使用      更新时间:2023-09-26

我试图延迟一个基于延迟函数的元素的css过渡+附加0.2s应用于它,所以它比主包装器的初始延迟延迟0.2s。我给它添加了一个类,给它一个从右向左滑动的transition

如果我禁用这个额外的延迟(transition-delay),那么当初始延迟触发时,元素会正常滑动。如果我保留它并在这个内部div上添加0.2秒的额外延迟,那么过渡将无法工作。

jquery和fiddle的最新进展:

(function ($) {
    $.fn.testPlugin = function (options) {
        var settings = $.extend({
            showDiv: false,
            delayIt: null,
            trans: null,
            timing: null,
            speed: null,
        }, options);
        return this.each(function () {
            var self = this;
            // Show main
            if (settings.showDiv == true) {
                setTimeout(function () {
                    $(self).addClass("showIt");
                }, settings.delayIt);
            };
            // Show inner
            $(".inner").addClass(settings.trans + " " + settings.timing + " " + settings.speed).css({
                "transition-delay" : settings.delayIt / 1000 + 0.2 + "s", // if i delete this delay then inner div slides fine
            });
        });
    }
}(jQuery));
$(document).ready(function () {
    $("#testDiv").testPlugin({
        showDiv: true,
        delayIt: 500,
        trans: "left",
        timing: "ease",
        speed: "fast",
    });
});

inner的div已经具有CSS transform属性。因此,你需要将class 'left'的CSS选择器改为select through id这样它就有了更高的专一性

改变
.left {
  transform: translateX(20%);
}

#testDiv.showIt .left {
  transform: translateX(20%);
}

JSFiddle: https://jsfiddle.net/7qdyeq0x/5/

我把你的动作与".inner"延迟超时。试试下一个代码

 $.fn.testPlugin = function (options) {
    var settings = $.extend({
        showDiv: false,
        delayIt: null,
        trans: null,
        timing: null,
        speed: null,
    }, options);
    return this.each(function () {
        var self = this;
        // Show main
        if (settings.showDiv == true) {
            setTimeout(function () {
                $(self).addClass("showIt");
                // Show inner
                $(".inner").addClass(settings.trans + " " + settings.timing + " " + settings.speed);
            }, settings.delayIt);
        };

    });
}