jQuery“闪烁突出显示”对div的影响?

问题描述 投票:84回答:15

我正在寻找一种方法来做到以下几点。

我在页面中添加了一个<div>,并且ajax回调返回了一些值。 <div>充满了来自ajax调用的值,然后<div>被添加到另一个<div>,它充当表格列。

我想引起用户的注意,向他/他表明页面上有新内容。 我希望<div>闪烁,而不是显示/隐藏,但要高亮/不亮一段时间,让我们说5秒钟。

我一直在看blink插件,但据我所知,它只显示/隐藏在一个元素上。

顺便说一句,解决方案必须是跨浏览器,是的,不幸的是IE包括在内。我可能不得不破解一点,让它在IE中工作,但总的来说它必须工作。

jquery css highlighting effects
15个回答
168
投票

jQuery UI Highlight Effect是您正在寻找的。

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

文档和演示可以找到here

编辑

也许Pulsate效应更合适,请参阅here

编辑#2

要调整不透明度,您可以执行以下操作:

$("div").click(function() {
  // do fading 3 times
  for(i=0;i<3;i++) {
    $(this).fadeTo('slow', 0.5).fadeTo('slow', 1.0);
  }
});

所以不会低于50%的不透明度。


0
投票

我想你可以使用我给出的类似答案。你可以在这里找到它... https://stackoverflow.com/a/19083993/2063096

  • 应该适用于所有浏览器,因为它只有Javascript和jQuery。

注意:此解决方案不使用jQuery UI,还有一个小提琴,因此您可以在您的代码中实现它之前根据自己的喜好进行操作。


0
投票

只要给elem.fadeOut(10).fadeIn(10);


0
投票

尝试使用jquery.blink.js插件:

https://github.com/webarthur/jquery-blink

<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script src="/path/to/jquery.blink.js"></script>

<script>
jQuery('span').blink({color:'white'}, {color:'black'}, 50);
</script>

#请享用!


0
投票
<script>
$(document).ready(function(){
    var count = 0;
    do {
        $('#toFlash').fadeOut(500).fadeIn(500);
        count++;
    } while(count < 10);/*set how many time you want it to flash*/
});
</script

0
投票

看看这个 -

<input type="button" id="btnclick" value="click" />
var intervalA;
        var intervalB;

        $(document).ready(function () {

            $('#btnclick').click(function () {
                blinkFont();

                setTimeout(function () {
                    clearInterval(intervalA);
                    clearInterval(intervalB);
                }, 5000);
            });
        });

        function blinkFont() {
            document.getElementById("blink").style.color = "red"
            document.getElementById("blink").style.background = "black"
            intervalA = setTimeout("blinkFont()", 500);
        }

        function setblinkFont() {
            document.getElementById("blink").style.color = "black"
            document.getElementById("blink").style.background = "red"
            intervalB = setTimeout("blinkFont()", 500);
        }

    </script>

    <div id="blink" class="live-chat">
        <span>This is blinking text and background</span>
    </div>

0
投票

我找不到我想要的东西所以写了一些基本的东西,我可以做到。突出显示的类可以只是背景颜色。

var blinking = false; // global scope

function start_blinking() {
    blinking = true;
    blink();
}

function stop_blinking() {
    blinking = false;
}

function blink(x=0) {
    $("#element").removeClass("highlighted"); // default to not highlighted to account for the extra iteration after stopping

    if (blinking) {
        if (x%2 == 0) $("#element").addClass("highlighted"); // highlight on even numbers of x
        setTimeout(function(){blink(++x)},500); // increment x and recurse
    }
}

29
投票

看看http://jqueryui.com/demos/effect/。它有一个名为pulsate的效果,可以完全按照你的意愿行事。

$("#trigger").change(function() {$("#div_you_want_to_blink").effect("pulsate");});

28
投票

这是我创建的自定义闪烁效果,它使用setIntervalfadeTo

HTML -

<div id="box">Box</div>

JS -

setInterval(function(){blink()}, 1000);


    function blink() {
        $("#box").fadeTo(100, 0.1).fadeTo(200, 1.0);
    }

尽可能简单。

http://jsfiddle.net/Ajey/25Wfn/


18
投票

对于那些不想包含整个jQuery UI的人,可以使用jQuery.pulse.js代替。

要获得更改不透明度的循环动画,请执行以下操作:

$('#target').pulse({opacity: 0.8}, {duration : 100, pulses : 5});

它很轻(小于1kb),允许你循环任何类型的动画。


18
投票

如果您尚未使用Jquery UI库并且想要模仿效果,那么您可以做的非常简单

$('#blinkElement').fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100);

您还可以使用数字来获得更快或更慢的数字,以更好地适应您的设计。

这也可以是全局jquery函数,因此您可以在整个站点中使用相同的效果。另请注意,如果将此代码放在for循环中,则可以有1个百万个脉冲,因此您不限于默认值6或默认值。

编辑:将其添加为全局jQuery函数

$.fn.Blink = function (interval = 100, iterate = 1) {
    for (i = 1; i <= iterate; i++)
        $(this).fadeOut(interval).fadeIn(interval);
}

使用以下内容轻松地从您的站点闪烁任何元素

$('#myElement').Blink(); // Will Blink once

$('#myElement').Blink(500); // Will Blink once, but slowly

$('#myElement').Blink(100, 50); // Will Blink 50 times once

6
投票

您可能想要查看jQuery UI。具体来说,突出效果:

http://jqueryui.com/demos/effect/


6
投票

由于我没有看到任何基于jQuery的解决方案,这里不需要额外的库,这是一个比使用fadeIn / fadeOut更灵活的一个简单的解决方案。

$.fn.blink = function (count) {
    var $this = $(this);

    count = count - 1 || 0;

    $this.animate({opacity: .25}, 100, function () {
        $this.animate({opacity: 1}, 100, function () {
            if (count > 0) {
                $this.blink(count);
            }
        });
    });
};

像这样使用它

$('#element').blink(3); // 3 Times.

1
投票

我使用不同的预定义颜色:

theme = {
    whateverFlashColor: '#ffffaa',
    whateverElseFlashColor: '#bbffaa',
    whateverElseThenFlashColor: '#ffffff',
};

并像这样使用它们

$('#element').effect("highlight", {color:theme.whateverFlashColor}, 1000);

简单 :)


0
投票

如果您不想要jQuery UI的开销,我最近使用.animate()编写了一个递归解决方案。您可以根据需要自定义延迟和颜色。

function doBlink(id, count) {
    $(id).animate({ backgroundColor: "#fee3ea" }, {
        duration: 100, 
        complete: function() {

            // reset
            $(id).delay(100).animate({ backgroundColor: "#ffffff" }, {
                duration: 100,
                complete: function() {

                    // maybe call next round
                    if(count > 1) {
                        doBlink(id, --count);
                    }
                }
            });

        }
    });
}

当然,您需要使用颜色插件才能让backgroundColor.animate()一起使用。 https://github.com/jquery/jquery-color

并提供一些上下文,这就是我所说的。我需要将页面滚动到目标div,然后将其闪烁。

$(window).load(function(){
    $('html,body').animate({
        scrollTop: $(scrollToId).offset().top - 50
    }, {
        duration: 400,
        complete: function() { doBlink(scrollToId, 5); }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.