如何使元素“闪烁”? 在 jQuery 中
我是 jQuery 的新手,并且有一些使用 Prototype 的经验。 在 Prototype 中,有一种方法可以“闪烁”元素——即。 用另一种颜色短暂地突出显示它,然后让它淡出回到正常状态,以便吸引用户的眼睛。 jQuery中有这样的方法吗? 我看到淡入、淡出和动画,但没有看到“flash”之类的东西。 也许这三者之一可以通过适当的输入来使用?
I'm brand new to jQuery and have some experience using Prototype. In Prototype, there is a method to "flash" an element — ie. briefly highlight it in another color and have it fade back to normal so that the user's eye is drawn to it. Is there such a method in jQuery? I see fadeIn, fadeOut, and animate, but I don't see anything like "flash". Perhaps one of these three can be used with appropriate inputs?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(30)
5年后...(并且不需要额外的插件)
这个通过在其后面放置div背景颜色,然后褪色,将其“脉冲”为您想要的颜色(例如白色)物体再次进出。
HTML 对象(例如按钮):
jQuery(普通,无其他插件):
元素 - 类名
第一个数字 in
fadeTo()
- 过渡的毫秒数第二个数字 in
fadeTo()
- 淡入淡出/取消淡出后对象的不透明度您可以查看一下在此网页的右下角:https://single.majlovesreg.one/v1/
<通过使用 $(this) 和调整值来实际执行 flash(按照 OP 的要求),strong>编辑 (willsteel) 没有重复的选择器。
After 5 years... (And no additional plugin needed)
This one "pulses" it to the color you want (e.g. white) by putting a div background color behind it, and then fading the object out and in again.
HTML object (e.g. button):
jQuery (vanilla, no other plugins):
element - class name
first number in
fadeTo()
- milliseconds for the transitionsecond number in
fadeTo()
- opacity of the object after fade/unfadeYou may check this out in the lower right corner of this webpage: https://single.majlovesreg.one/v1/
Edit (willsteel) no duplicated selector by using $(this) and tweaked values to acutally perform a flash (as the OP requested).
如果您使用的是 jQueryUI,
UI/Effects
中有pulsate
函数http://docs.jquery.com/UI/Effects/Pulsate
If you're using jQueryUI, there is
pulsate
function inUI/Effects
http://docs.jquery.com/UI/Effects/Pulsate
我想,您可以在 jQuery UI 中使用 突出显示效果 来实现相同的效果。
You could use the highlight effect in jQuery UI to achieve the same, I guess.
纯 jQuery 解决方案。
(不需要 jquery-ui/animate/color。)
如果您想要的只是黄色“闪光”效果而不加载 jquery 颜色:
上面的脚本仅执行 1 秒黄色淡出,非常适合让用户知道元素已更新或类似的内容。
用法:
Pure jQuery solution.
(no jquery-ui/animate/color needed.)
If all you want is that yellow "flash" effect without loading jquery color:
Above script simply does 1s yellow fadeout, perfect for letting the user know the element was was updated or something similar.
Usage:
您可以使用此插件(将其放入js文件中并通过脚本标签使用它)
http://plugins .jquery.com/project/color
然后使用类似这样的内容:
这会向所有 jQuery 对象添加一个“flash”方法:
You could use this plugin (put it in a js file and use it via script-tag)
http://plugins.jquery.com/project/color
And then use something like this:
This adds a 'flash' method to all jQuery objects:
您可以通过允许迭代计数来执行多次闪烁来进一步扩展 Desheng Li 的方法,如下所示:
然后您可以使用时间和闪烁次数来调用该方法:
You can extend Desheng Li's method further by allowing an iterations count to do multiple flashes like so:
Then you can call the method with a time and number of flashes:
一个非常简单的答案怎么样?
$('selector').fadeTo('fast',0).fadeTo('fast',1).fadeTo('fast',0).fadeTo('fast',1)
闪烁两次……就这些了!
How about a really simple answer?
$('selector').fadeTo('fast',0).fadeTo('fast',1).fadeTo('fast',0).fadeTo('fast',1)
Blinks twice...that's all folks!
我不敢相信这还没有涉及到这个问题。 您要做的就是:
这完全符合您想要的功能,非常简单,适用于
show()
和hide()
方法。I can't believe this isn't on this question yet. All you gotta do:
This does exactly what you want it to do, is super easy, works for both
show()
andhide()
methods.这可能是一个更新的答案,而且更短,因为自这篇文章以来,事情已经得到了一定程度的整合。 需要jquery-ui-effect-highlight。
http://docs.jquery.com/UI/Effects/Highlight
This may be a more up-to-date answer, and is shorter, as things have been consolidated somewhat since this post. Requires jquery-ui-effect-highlight.
http://docs.jquery.com/UI/Effects/Highlight
我一直在寻找解决这个问题的方法,但不依赖 jQuery UI。
这是我想出的,它对我有用(没有插件,只有 Javascript 和 jQuery);
-- 这是工作小提琴 -- http://jsfiddle.net/CriddleCraddle/yYcaY/2/
将 CSS 文件中的当前 CSS 参数设置为普通 css,并创建一个新类,仅处理更改即背景颜色的参数,并将其设置为 '!important' 以覆盖默认行为。 像这样...
然后只需使用下面的函数并将 DOM 元素作为字符串传入,一个表示您希望闪烁发生的次数的整数,您想要更改为的类,以及一个表示延迟的整数。
注意:如果您为“times”变量传递偶数,则最终将得到开始时的类,如果传递奇数,则最终将得到切换后的类。 两者对于不同的事情都有用。 我使用“i”来更改延迟时间,否则它们会同时触发并且效果会丢失。
I was looking for a solution to this problem but without relying on jQuery UI.
This is what I came up with and it works for me (no plugins, just Javascript and jQuery);
-- Heres the working fiddle -- http://jsfiddle.net/CriddleCraddle/yYcaY/2/
Set the current CSS parameter in your CSS file as normal css, and create a new class that just handles the parameter to change i.e. background-color, and set it to '!important' to override the default behavior. like this...
Then just use the function below and pass in the DOM element as a string, an integer for the number of times you would want the flash to occur, the class you want to change to, and an integer for delay.
Note: If you pass in an even number for the 'times' variable, you will end up with the class you started with, and if you pass an odd number you will end up with the toggled class. Both are useful for different things. I use the 'i' to change the delay time, or they would all fire at the same time and the effect would be lost.
脉冲效果(离线)JQuery插件适合您正在寻找的东西吗?您可以添加持续时间以及时限制脉冲效果。
正如 JP 在评论中提到的,现在有他的 更新了脉冲插件。
请参阅他的 GitHub 存储库。 这是演示。
Would a
pulse effect(offline) JQuery plugin be appropriate for what you are looking for ?You can add a duration for limiting the pulse effect in time.
As mentioned by J-P in the comments, there is now his updated pulse plugin.
See his GitHub repo. And here is a demo.
后来发现了这么多卫星,但如果有人关心的话,这似乎是让某些东西永久闪烁的好方法:
Found this many moons later but if anyone cares, it seems like this is a nice way to get something to flash permanently:
以下代码对我有用。 定义两个淡入和淡出函数,并将它们放在彼此的回调中。
以下控制闪烁次数:
The following codes work for me. Define two fade-in and fade-out functions and put them in each other's callback.
The following controls the times of flashes:
如果包含库有点过分,那么这里是一个保证有效的解决方案。
设置事件触发器
设置块元素的背景颜色
在setTimeout内部使用fadeOut和fadeIn创建一个小动画效果。
在第二个setTimeout内重置默认背景颜色
在一些浏览器中进行了测试,效果很好。
If including a library is overkill here is a solution that is guaranteed to work.
Setup event trigger
Set the background color of block element
Inside setTimeout use fadeOut and fadeIn to create a little animation effect.
Inside second setTimeout reset default background color
Tested in a few browsers and it works nicely.
像淡入/淡出一样,您可以使用 animate css / 延迟
简单灵活
Like fadein / fadeout you could use animate css / delay
Simple and flexible
3000 是 3 秒,
从不透明度 1 渐变到 0.3,然后渐变到 1,依此类推。
您可以堆叠更多这些。
只需要 jQuery。 :)
3000 is 3 seconds
From opacity 1 it is faded to 0.3, then to 1 and so on.
You can stack more of these.
Only jQuery is needed. :)
对于动画背景错误有一个解决方法。 这个要点包括一个简单的突出显示方法及其使用的示例。
https://gist.github.com/1068231
There is a workaround for the animate background bug. This gist includes an example of a simple highlight method and its use.
https://gist.github.com/1068231
不幸的是,最重要的答案需要 JQuery UI。 http://api.jquery.com/animate/
这是一个普通的 JQuery 解决方案
http://jsfiddle.net/EfKBg/
JS
CSS
HTML
Unfortunately the top answer requires JQuery UI. http://api.jquery.com/animate/
Here is a vanilla JQuery solution
http://jsfiddle.net/EfKBg/
JS
CSS
HTML
这是 colbeerhey 解决方案的稍微改进版本。 我添加了一个 return 语句,以便以真正的 jQuery 形式,在调用动画后链接事件。 我还添加了用于清除队列并跳转到动画末尾的参数。
Here's a slightly improved version of colbeerhey's solution. I added a return statement so that, in true jQuery form, we chain events after calling the animation. I've also added the arguments to clear the queue and jump to the end of an animation.
这个将改变元素的背景颜色,直到触发鼠标悬停事件
This one will pulsate an element's background color until a mouseover event is triggered
将以上所有内容放在一起 - 一个简单的解决方案,用于闪烁元素并返回原始背景颜色...
像这样使用:
希望这有帮助!
Put this together from all of the above - an easy solution for flashing an element and return to the original bgcolour...
Use like this:
Hope this helps!
这是一个混合使用 jQuery 和 CSS3 动画的解决方案。
http://jsfiddle.net/padfv0u9/2/
本质上,您首先将颜色更改为您的“ flash”颜色,然后使用 CSS3 动画让颜色淡出。 您需要更改过渡持续时间,以使初始“闪烁”比淡入淡出更快。
其中 CSS 类如下。
Here's a solution that uses a mix of jQuery and CSS3 animations.
http://jsfiddle.net/padfv0u9/2/
Essentially you start by changing the color to your "flash" color, and then use a CSS3 animation to let the color fade out. You need to change the transition duration in order for the initial "flash" to be faster than the fade.
Where the CSS classes are as follows.
只需给 elem.fadeOut(10).fadeIn(10);
just give elem.fadeOut(10).fadeIn(10);
这足够通用,您可以编写任何您喜欢的动画代码。 您甚至可以将延迟从 300ms 减少到 33ms,以及淡入淡出颜色等。
This is generic enough that you can write whatever code you like to animate. You can even decrease the delay from 300ms to 33ms and fade colors, etc.
您可以使用 jquery Pulsate 插件强制将注意力集中在任何 html 元素上,并控制速度、重复和颜色。
JQuery.pulsate() * 带演示
示例初始值设定项:
you can use jquery Pulsate plugin to force to focus the attention on any html element with control over speed and repeatation and color.
JQuery.pulsate() * with Demos
sample initializer:
我的方式是.fadein,.fadeout .fadein,.fadeout ......
My way is .fadein, .fadeout .fadein, .fadeout ......
您可以使用 jQuery Color 插件。
例如,要引起人们对页面上所有 div 的注意,您可以使用以下代码:
编辑 - 新增和改进
以下代码使用与上面相同的技术,但它具有以下优点:
扩展 jQuery 对象:
使用示例:
You can use the jQuery Color plugin.
For example, to draw attention to all the divs on your page, you could use the following code:
Edit - New and improved
The following uses the same technique as above, but it has the added benefits of:
Extend the jQuery Object:
Usage example:
您可以使用 css3 动画来闪烁元素
,然后使用 jQuery 添加类
You can use css3 animations to flash an element
And you jQuery to add the class