【问题标题】:jQuery fading glow special text effectjQuery 褪色发光特殊文字效果
【发布时间】:2012-08-24 14:02:05
【问题描述】:

我想让黑色错误消息文本“发光”,红色轮廓在一秒钟后消失,但是,如果更新,返回“全发光”并再次开始消失,即使它没有一开始就彻底消失了。有没有相当简单的 jQuery/CSS 方法来做到这一点?我认为两种同时的淡入淡出技术会相互竞争,它们都是异步的,而且我不太清楚如何生成发光效果,或者是否可以使用标准样式。

【问题讨论】:

  • 谷歌搜索“css动画发光”给我带来了here

标签: javascript jquery jquery-ui animation css-transitions


【解决方案1】:

这是 barlasapaydin 的答案的一个版本,适用于负面动画:

$.fn.glowEffect = function(start, end, duration, callback) {
    // Fetch last animation position
    if (this.data("last-glow")) 
        start = this.data("last-glow");

    return this.animate({
        'placeholder': end // This can be anything, it's just a placeholder to allow the animation to run
    }, {
        duration:duration,
        step: function(now, fx) {
            // Calculate current position
            now = parseInt(start + (end - start)*(fx.pos));
            // Set current animation position
            $(fx.elem).css("text-shadow","0px 0px "+now+"px #c61a1a")
                // Save position (if animation is interrupted)
                .data("last-glow", now);
        },
        complete:callback
    });
};

$(".red").click(function() {
    $(this)
        .stop()
        .glowEffect(0,50,1000, // Fade in
                    function() 
                    { 
                        $(this).glowEffect(50,0,1000);  // Fade out
                    });
});

代码有点复杂,但运行良好。

http://jsfiddle.net/Jf4vB/38/

关于“step”对象的一些有用的第三方文档:

http://cdmckay.org/blog/2010/03/01/the-jquery-animate-step-callback-function/

【讨论】:

【解决方案2】:

您不需要使用任何外部插件,只需 jQuery 1.8css3 就可以做到这一点,但这并不容易。您需要将 css3 text-shadow 属性与 animate() 结合起来

更新:已修复错误。

Here is working jsFiddle text glow effect.

jQuery:

var red = $(".red");
red.click(function() {
   if ( !$(this).is(':animated') )

    //you just adjust here
    red.glowEffect(0,40,500);
    //which is:
    //red.glowEffect( start value , destination value , duration );
});

$.fn.glowEffect = function(start, end, duration) {
    var $this = this;
    return this.css("a", start).animate({
        a: end
    }, {
        duration: duration,
        step: function(now) {
            $this.css("text-shadow","0px 0px "+now+"px #c61a1a");
        }
    });
};​

css:

.red { text-shadow: 0px 0px 0px #c61a1a; }

注意:不需要像-webkit- -ms- -moz- -o-这样定义供应商前缀,jQuery 1.8 会自动修复。

来源:上周我问了类似的问题,得到了很好的答案:

How to combine jQuery animate with css3 properties without using css transitions?

【讨论】:

  • 这个可以自己中断重置吗?
  • @JeremyHolovacs 是的。你可以做任何你需要的动画,只需在点击内调整red.glowEffect函数。我在更新中解释并指出了这一点。
  • 嗯...这不是我真正想要的。如果它正在消失,看起来这将忽略后续动画......如果事件发生在最后一个动画完成之前,我希望它重置为“新鲜,明亮的发光”状态。
  • 没有关于你的问题的例子,所以我是这样做的,如果你真的理解这种方式,你就会意识到你可以用这个做任何事情
  • 做了一些测试,因为css属性“a”不存在,所以总是从0开始。
【解决方案3】:

我会使用 CSS3 “text-shadow” 属性来实现发光效果,并使用 $(".textid").stop().addClass("glow", 1000);用于动画。

编辑:好的,那不起作用:http://jsfiddle.net/2pBxP/ :)

【讨论】:

    【解决方案4】:

    here无耻盗取的纯CSS3解决方案:

    a.glow, a.glow:hover, a.glow:focus {  
        text-decoration: none;  
        color: #aaf;  
        text-shadow: none;  
        -webkit-transition: 500ms linear 0s;  
        -moz-transition: 500ms linear 0s;  
        -o-transition: 500ms linear 0s;  
        transition: 500ms linear 0s;  
        outline: 0 none;  
    } 
    a.glow:hover, a.glow:focus  {  
        color: #fff;  
        text-shadow: -1px 1px 8px #ffc, 1px -1px 8px #fff;  
    }  
    

    【讨论】:

    • 有趣...我会试试这个。
    • 这个效果很好,但是只回答了问题的第一部分;我将如何实现这种发光并让它慢慢消失,除非再次触发使它发光并开始褪色的事件,此时它将“重置”为完全“发光”?
    • 你试过修补它吗?如果将a.glowa.glow:hover, a.glow:focus 的样式分开,则可以分别调整开和关转换的时间。 jsfiddle.net/mblase75/GzTC7
    【解决方案5】:

    要在 JQuery 中制作循环动画,您可以执行以下操作:

    JQuery fade with loop and delay

    然后您可以使用 CSS3 添加文本发光(或阴影),但请注意,某些浏览器不支持此功能。

    【讨论】:

      【解决方案6】:

      使用 jQuery UI 的动画插件,您可以在文本后面创建一个模糊的红色阴影(使用 CSS3 属性),然后对其不透明度、大小等进行动画处理。

      【讨论】:

      • 可以肯定的是,如果你打算使用 CSS3 属性,你不妨一路走下去,并用 CSS 过渡为其设置动画。
      猜你喜欢
      • 2017-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多