当前位置:  开发笔记 > 前端 > 正文

你如何在jQuery中创建一个元素"flash"

如何解决《你如何在jQuery中创建一个元素"flash"》经验,为你挑选了15个好方法。

我是jQuery的新手,并且拥有使用Prototype的一些经验.在Prototype中,有一种"闪现"元素的方法 - 即.用另一种颜色短暂地突出显示它并使其淡化回正常,以便用户的眼睛被吸引到它.在jQuery中有这样的方法吗?我看到fadeIn,fadeOut和animate,但我看不到像"flash"那样的东西.也许这三者中的一个可以与适当的输入一起使用?



1> etlds..:

我的方式是.fadein,.fadeout .fadein,.fadeout ......

$("#someElement").fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);


我在fadeIn,fadeOut序列之前使用了一个延迟,比如`$('..').delay(100).fadeOut().fadeIn('slow')`
不是最美丽的解决方案,但简短,易于理解,并且不需要UI /效果.太好了!
这种方法的问题是这些事件可能相互踩踏.您应该将每个后续的fadeIn和fadeOut放在各自的回调中.例如:`var $ someElement = $("#someElement"); $ someElement.fadeIn(100,function(){$ someElement.fadeOut(100,function(){/*...etc...*/}}})`

2> curthipster..:

您可以使用jQuery Color插件.

例如,要引起对页面上所有div的注意,可以使用以下代码:

$("div").stop().css("background-color", "#FFFF9C")
    .animate({ backgroundColor: "#FFFFFF"}, 1500);

编辑 - 新的和改进的

以下使用与上述相同的技术,但它具有以下额外的好处:

参数化高亮颜色和持续时间

保留原始背景颜色,而不是假设它是白色

作为jQuery的扩展,所以你可以在任何对象上使用它

扩展jQuery对象:

var notLocked = true;
$.fn.animateHighlight = function(highlightColor, duration) {
    var highlightBg = highlightColor || "#FFFF9C";
    var animateMs = duration || 1500;
    var originalBg = this.css("backgroundColor");
    if (notLocked) {
        notLocked = false;
        this.stop().css("background-color", highlightBg)
            .animate({backgroundColor: originalBg}, animateMs);
        setTimeout( function() { notLocked = true; }, animateMs);
    }
};

用法示例:

$("div").animateHighlight("#dd0000", 1000);


来自.animate()的jquery文档:*所有动画属性应该是单个数值(除非如下所述); 使用基本jQuery功能无法为非数字属性设置动画.(例如,宽度,高度或左边可以设置动画,但背景颜色不能.)*所以我猜你正在使用插件而没有意识到它.
对我来说也不起作用 - 你确定这不依赖于彩色动画插件吗?http://plugins.jquery.com/project/color
我注意到它没有返回一个物体.我尝试堆叠这个小效果(EG:$("#qtyonhand").animateHighlight("#c3d69b",1500).delay(1500).animateHighlight("#76923C",5000);)并收到错误.我需要添加"return this;" 到方法的最后.
来自jquery .animate docs:`注意:jQuery UI项目通过允许对颜色等非数字样式进行动画处理来扩展.animate()方法. - 如果你想为颜色设置动画,你需要jQuery UI或者一些其他插件.
官方jQuery文档说你必须使用jQuery.Color()插件才能工作:https://github.com/jquery/jquery-color
我用

jQuery(vanilla,没有其他插件):

$('.element').fadeTo(100, 0.3, function() { $(this).fadeTo(500, 1.0); });

元素 - 类名

第一个数字fadeTo()-毫秒过渡

第二数量fadeTo()-对象的不透明度之后淡入/ unfade

您可以在本网页的右下角查看:https://single.majlovesreg.one/v1/

编辑(willsteel)没有重复的选择器,使用$(this)和调整值来实际执行闪存(如OP所请求的).


`fadeTo(0000)` - Metallica
像黄油一样光滑!最好的解决方案.谢谢!

5> Michiel Over..:

我猜你可以使用jQuery UI中的高亮效果来实现相同的效果.


这是jQueryUI的一部分,它非常繁重,不是标准jQuery库的一部分(尽管你可以使用它所依赖的UI效果核心).
你可以只下载效果核心+你想要的效果,其中"高亮"+"脉动"达到12 KB.不是很轻,但也不重.

6> SooDesuNe..:

如果您正在使用jQueryUI,则有pulsate功能UI/Effects

$("div").click(function () {
      $(this).effect("pulsate", { times:3 }, 2000);
});

http://docs.jquery.com/UI/Effects/Pulsate



7> okoman..:

你可以使用这个插件(把它放在一个js文件中并通过script-tag使用它)

http://plugins.jquery.com/project/color

然后使用这样的东西:

jQuery.fn.flash = function( color, duration )
{

    var current = this.css( 'color' );

    this.animate( { color: 'rgb(' + color + ')' }, duration / 2 );
    this.animate( { color: current }, duration / 2 );

}

这为所有jQuery对象添加了'flash'方法:

$( '#importantElement' ).flash( '255,0,0', 1000 );



8> 小智..:
$('#district').css({opacity: 0});
$('#district').animate({opacity: 1}, 700 );



9> Rob Evans..:

您可以通过允许迭代计数执行多次闪烁来进一步扩展Desheng Li的方法:

// Extend jquery with flashing for elements
$.fn.flash = function(duration, iterations) {
    duration = duration || 1000; // Default to 1 second
    iterations = iterations || 1; // Default to 1 iteration
    var iterationDuration = Math.floor(duration / iterations);

    for (var i = 0; i < iterations; i++) {
        this.fadeOut(iterationDuration).fadeIn(iterationDuration);
    }
    return this;
}

然后你可以用闪烁的时间和次数来调用方法:

$("#someElementId").flash(1000, 4); // Flash 4 times over a period of 1 second



10> hakunin..:

纯jQuery解决方案.

(不需要jquery-ui/animate/color.)

如果你想要的只是黄色的"闪光"效果而不加载jquery颜色:

var flash = function(elements) {
  var opacity = 100;
  var color = "255, 255, 20" // has to be in this format since we use rgba
  var interval = setInterval(function() {
    opacity -= 3;
    if (opacity <= 0) clearInterval(interval);
    $(elements).css({background: "rgba("+color+", "+opacity/100+")"});
  }, 30)
};

上面的脚本只做1s黄色淡出,非常适合让用户知道元素被更新或类似的东西.

用法:

flash($('#your-element'))



11> VonC..:

会吗? 脉冲效应(离线)JQuery插件适合你想要的东西?

您可以添加一个持续时间来及时限制脉冲效果.


正如JP在评论中提到的,现在有 更新的脉冲插件.
看看他的GitHub回购.这是一个演示.



12> rcd..:

这可能是一个更新的答案,而且更短,因为自从这篇文章以来已经有所巩固.需要jquery-ui-effect-highlight.

$("div").click(function () {
  $(this).effect("highlight", {}, 3000);
});

http://docs.jquery.com/UI/Effects/Highlight



13> 小智..:

我不敢相信这还不是这个问题.你要做的就是:

("#someElement").show('highlight',{color: '#C8FB5E'},'fast');

这完全符合您的要求,非常简单,适用于两者show()hide()方法.


注意:要使其工作,您需要添加jquery ui的效果.它不是核心jQuery的一部分

14> 小智..:

一个非常简单的答案怎么样?

$('selector').fadeTo('fast',0).fadeTo('fast',1).fadeTo('fast',0).fadeTo('fast',1)

眨眼两次......这就是所有人!



15> yPhil..:
function pulse() {
    $('.blink').fadeIn(300).fadeOut(500);
}
setInterval(pulse, 1000);

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有