如何控制我的 css 转换何时发生,何时不发生?



我试图只在用户对表单进行更改后显示表单的submitreset按钮。我最初的方法很简单:在页面加载时向按钮添加hidden类,并在修改表单时将其删除。这已经足够好了。但是,当我在混合中添加转换时,转换发生在我最初在页面加载时添加hidden类时,这是不需要的。

以下是相关代码(或在jsfiddle上查看):

html

<form>
    <input type="text" />
    <input type="submit" value="Save" />
    <input type="reset" value="Reset" />
</form>

CSS

input[type=submit], input[type=reset] {
    transition: all 0.6s ease-in-out;
    &.hidden {
        opacity: 0;
    }
}

javascript(使用JQuery 1.9.1)

$(document).ready(function () {
    var buttons = $('input[type="submit"], input[type="reset"]').addClass('hidden');
    $('form').on(
        'change input',
        ':input',
        function () {
            buttons.removeClass('hidden');
        }
    ).on(
        'reset',
        function () {
            buttons.addClass('hidden');
        }
    );
});

如何仅在第一次添加hidden类之后才能启用转换?

您也可以将转换移到自己的类中。在页面加载时,添加隐藏类,然后在超时后添加转换类。

在这种情况下,超时是让浏览器立即应用/渲染隐藏类的opacity:0样式,而不需要任何转换时间。一旦发生这种情况,添加转换类会导致任何进一步的更改,以便在适用的情况下使用转换时间。

类似(jsfiddle):

$(document).ready(function () {
    var buttons = $('input[type="submit"], input[type="reset"]').addClass('hidden');
    window.setTimeout(function() { buttons.addClass('txclasshere'); }, 0);
    $('form').on(
        'change input',
        ':input',
        function () {
            buttons.removeClass('hidden');
        }
    ).on(
        'reset',
        function () {
            buttons.addClass('hidden');
        }
    );
});

相关内容

  • 没有找到相关文章

最新更新