jQuery에서 요소를 "플래시"로 만드는 방법


249

저는 jQuery를 처음 접했고 프로토 타입 사용 경험이 있습니다. 프로토 타입에는 요소를 "플래시"하는 방법이 있습니다. 다른 색상으로 짧게 강조 표시하고 사용자의 눈을 끌 수 있도록 다시 원래대로 돌아갑니다. jQuery에 그러한 방법이 있습니까? fadeIn, fadeOut 및 애니메이션이 표시되지만 "flash"와 같은 것은 표시되지 않습니다. 아마도이 세 가지 중 하나를 적절한 입력과 함께 사용할 수 있습니까?


4
이것은 OP에 응답하지 않지만 (느슨하게 테스트 된) 코드는 미래의 Google 검색 자 (예 : 나 자신)에게 유용 할 수 있습니다.$.fn.flash = function(times, duration) { var T = this; times = times || 3; duration = duration || 200; for ( var i=0; i < times; i++ ) { (function() { setTimeout(function() { T.fadeOut(duration, function() { T.fadeIn(duration); }); }, i*duration*2+50); })(i); } };
Cory Mawhorter

3
이 CSS를 요소에 추가 text-decoration:blink한 다음 제거하십시오.
치매


이 페이지에서 찾은 것보다 더 나은 답변이라고 생각되는 JSFiddle 데모를 여기에 넣었습니다. stackoverflow.com/a/52283660/470749
Ryan

이주의 깜박임이 공식적으로 애니메이션에 찬성되지 않습니다. 확인 : w3.org/TR/2019/CR-css-text-decor-3-20190813/#valdef-text-decoration-line-blink
OrizG

답변:


318

내 길은 .fadein, .fadeout .fadein, .fadeout ......

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


14
가장 아름다운 솔루션은 아니지만 짧고 이해하기 쉽고 UI / 효과가 필요하지 않습니다. 좋은!
Chris Jaynes

21
같은 내가 fadeIn, 페이드 아웃 순서 전에 지연을 사용, 뭔가 $('..').delay(100).fadeOut().fadeIn('slow')
alexandru.topliceanu

1
번쩍이는 배경은 종종 끈적 거려 보이거나 그냥 삐걱 거리는 것처럼 보입니다. 첫째 등 컬러 플러그인을 추가하고 플래시 배경을 시도하기 전에 이것을 시도
Simon_Weaver

4
이 방법의 문제점은 이러한 이벤트가 서로 잠재적으로 진행되고 있다는 것입니다. 각 후속 fadeIn 및 fadeOut을 해당 콜백에 배치해야합니다. 예를 들면 : var $someElement = $("#someElement"); $someElement.fadeIn(100, function(){ $someElement.fadeOut(100, function(){ /*...etc...*/ }) })
thekingoftruth

자주 호출 될 수있는 유효성 검증 코드에서이를 사용하십시오. 코드가 올바른 타이밍으로 호출되면 코드를 사용하지 말아야 할 때 (또는 그 반대)를
보여줄 수 있습니다.

122

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);

4
나에게도 효과가 없다-이것이 컬러 애니메이션 플러그인에 의존하지 않습니까? plugins.jquery.com/project/color
UpTheCreek

18
.animate ()의 jquery 문서에서 : 모든 애니메이션 속성은 단일 숫자 값이어야합니다 (아래에 언급 된 것을 제외하고); 숫자가 아닌 속성은 기본 jQuery 기능을 사용하여 애니메이션 할 수 없습니다. (예를 들어, 너비, 높이 또는 왼쪽은 애니메이션이 될 수 있지만 배경색은 애니메이션이 될 수 없습니다.) 따라서 플러그인을 실현하지 않고 활용하고 있다고 생각합니다.
UpTheCreek

4
객체를 반환하지 않는 것을 알았습니다. 이 작은 효과 (예 : $ ( "# qtyonhand"). animateHighlight ( "# c3d69b", 1500) .delay (1500) .animateHighlight ( "# 76923C", 5000);)을 쌓아서 오류가 발생했습니다. "반환"을 추가해야했습니다. 방법의 끝까지.
Sage

2
: 공식 jQuery를 문서는이 작업을 수행하려면 플러그인 jQuery.Color ()를 사용해야합니다 말을 github.com/jquery/jquery-color
jchook

3
jquery .animate 문서에서 : Note: The jQuery UI project extends the .animate() method by allowing some non-numeric styles such as colors to be animated.-색상을 애니메이션으로 표시하려면 jQuery UI 또는 다른 플러그인이 필요합니다.
Adam Tomat

101

css3 애니메이션을 사용하여 요소를 플래시 할 수 있습니다

.flash {
  -moz-animation: flash 1s ease-out;
  -moz-animation-iteration-count: 1;

  -webkit-animation: flash 1s ease-out;
  -webkit-animation-iteration-count: 1;

  -ms-animation: flash 1s ease-out;
  -ms-animation-iteration-count: 1;
}

@keyframes flash {
    0% { background-color: transparent; }
    50% { background-color: #fbf8b2; }
    100% { background-color: transparent; }
}

@-webkit-keyframes flash {
    0% { background-color: transparent; }
    50% { background-color: #fbf8b2; }
    100% { background-color: transparent; }
}

@-moz-keyframes flash {
    0% { background-color: transparent; }
    50% { background-color: #fbf8b2; }
    100% { background-color: transparent; }
}

@-ms-keyframes flash {
    0% { background-color: transparent; }
    50% { background-color: #fbf8b2; }
    100% { background-color: transparent; }
}

그리고 jQuery를 사용하여 클래스를 추가하십시오.

jQuery(selector).addClass("flash");

한 번만 작동 해야하는 경우 좋은 해결책입니다. 클래스가 추가 된 후 클래스를 추가해도 (논리적으로) 요소가 깜박이지 않습니다.
simon

7
최고의 아이디어. 나는 2 초 후에 효과 클래스를 제거에서는 setTimeout을 사용
insign

6
다음은 애니메이션이 끝난 후 클래스를 제거하여 계속 깜박이는 예제입니다. jsfiddle.net/daCrosby/eTcXX/1
DACrosby

스타일 시트 유효성 검사기를 전달하려는 경우 배경색의 올바른 속성이 '없음'이 아니라 '투명'입니다.
Jan M

1
모든 최신 브라우저는 이제 정기적으로 지원합니다 @keyframesanimation규칙, 그래서 외에 어떤 앞에 둔 버전을 사용할 필요가 없습니다 어쩌면 -webkit- (블랙 베리 브라우저 용).
coredumperror 2013 년

74

5 년 후 ... (추가 플러그인 필요 없음)

이것은 div 배경색을 그 뒤에 놓고 객체페이딩하여 원하는 색상 (예 : 흰색)으로 "펄스 화" 합니다. 아웃하고 합니다.

HTML 객체 (예 : 버튼) :

<div style="background: #fff;">
  <input type="submit" class="element" value="Whatever" />
</div>

jQuery (바닐라, 다른 플러그인은 없음) :

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

요소 -클래스 이름

첫 번째 숫자fadeTo() - 전환 (밀리 초)

제 번호fadeTo() 페이드 / unfade 후의 객체의 불투명도 -

https://single.majlovesreg.one/v1/ 웹 페이지의 오른쪽 하단에서 확인할 수 있습니다.

$ (this) 및 조정 된 값을 사용하여 플래시를 자발적으로 수행하여 (OP가 요청한대로) 중복 선택기를 편집 하지 않습니다 (willsteel).


60
fadeTo(0000)-Metallica
vulcan raven

2
버터처럼 부드럽게! 모두의 최고의 솔루션. 감사!
ColdTuna 2016 년

1
이 무한을 수행하는 방법?
tomexsans

1
링크가 끊어졌습니다.
meshy

1
@tomexsans $.fn.flashUnlimited=function(){$(this).fadeTo('medium',0.3,function(){$(this).fadeTo('medium',1.0,$(this).flashUnlimited);});}다음과 같이 호출 할 수 있습니다 -Majal 이 $('#mydiv').flashUnlimited();위에서 대답 한 것을 수행하고주기가 끝날 때 다시 호출됩니다.
Jay Dadhania

46

jQuery UI 의 강조 효과 를 사용하여 동일한 결과를 얻을 수 있다고 생각합니다.


8
그것은 jQueryUI의 일부이며 표준 jQuery 라이브러리의 일부는 아니지만 상당히 무겁습니다 (UI 효과 코어를 사용할 수는 있지만).
UpTheCreek

3
효과 코어 + 원하는 효과 만 다운로드 할 수 있습니다. "강조 표시"+ "맥동"의 경우 12KB입니다. 완전히 가볍지는 않지만 너무 무겁지는 않습니다.
Roman Starkov

45

jQueryUI를 사용하는 경우 pulsate함수 가 있습니다.UI/Effects

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

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


1
@DavidYell, 새 질문을 열고 샘플 코드를 게시하십시오. pulsateChrome에서 제대로 작동합니다.
SooDesuNe

5 초마다 깜박임 : setInterval (function () {$ ( ". red-flag"). effect ( "pulsate", {times : 3}, 2000);}, 5000);
Adrian P.

@all css3 애니메이션 및 / 또는 변환을 사용하는 사람이 있습니까? 어쨌든 좋은 (하지만 여전히 다른 답변 중 하나에서와 같이 css3을 선호합니다)
Martin Meeser

18
$('#district').css({opacity: 0});
$('#district').animate({opacity: 1}, 700 );

1
이것은 간단하고 우아합니다.
Gra

CSS 속성을 토글하기 때문에 다른 형제 요소를 사용 fadeIn하고 fadeOut영향을 주지만 display제 경우에는 이상하게 보입니다. 그러나 이것은 문제를 해결합니다. 고마워, 그것은 매력처럼 우아하게 작동합니다.
fsevenm

15

이 플러그인을 사용할 수 있습니다 (js 파일에 넣고 스크립트 태그를 통해 사용)

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 );

12

반복 횟수가 다음과 같이 여러 번 플래시를 수행하도록하여 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

로 변경 var iterationDuration = Math.floor(duration / iterations);하면 홀수 번호로 나눌 수 있도록 그것을 만든 return this;당신이 후 체인 다른 방법을 수 있도록.
user1477388

그래도 실제로 색상이 변하지 않습니까?

12

순수한 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'))

배경이 원래 상태로 돌아 가지 않는 것을 제외하고는이 솔루션을 좋아하십시오.
MrPHP

7

이 게시물 이후로 다소 통합되어 있기 때문에 더 최신 답변 일 수도 있고 더 짧을 수도 있습니다. jquery-ui-effect-highlight가 필요합니다 .

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

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


7

정말 간단한 대답은 어떻습니까?

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

두 번 깜박임 ... 모든 사람입니다!


그것은 다른 색상 (요청 된)으로 깜박이지 않고 단순히 불투명도를 페이드 인 및 페이드 아웃합니다.
Tim Eckel

6

나는 이것이이 질문에 아직 없다고 믿을 수 없다. 당신이해야 할 일은 :

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

이것은 당신이 원하는 것을 정확하게하고, 매우 쉽고, 둘 다 show()hide()방법 모두에서 작동 합니다.


15
참고 : 이것이 작동하려면 jquery ui의 효과가 추가되어야합니다. 그것은 핵심 jQuery의 일부가 아닙니다
travis-146

6

펄스 효과(오프라인) JQuery 플러그인은 찾고있는 것에 적합합니까?

시간에 펄스 효과를 제한하는 지속 시간을 추가 할 수 있습니다.


주석에서 JP 가 언급했듯이 이제 그의 업데이트 된 펄스 플러그인이 있습니다.
그의 GitHub 저장소를 참조하십시오 . 그리고 여기 데모가 있습니다.



참조하는 js 라이브러리가 존재하지 않기 때문에 데모가 중단되었습니다.
PandaWood

@PandaWood 나는 GitHub 저장소에 대한 링크를 복원하고 데모를 업데이트했습니다
VonC

6
function pulse() {
    $('.blink').fadeIn(300).fadeOut(500);
}
setInterval(pulse, 1000);

1
바로 그거죠. 페이드 인 및 페이드 아웃을 간단하고 완벽하게 제어합니다.
pollaris

5

나중에이 많은 달을 발견했지만 누군가가 걱정한다면 무언가 영구적으로 깜박이는 좋은 방법 인 것처럼 보입니다.

$( "#someDiv" ).hide();

setInterval(function(){
     $( "#someDiv" ).fadeIn(1000).fadeOut(1000);
},0)

4

다음 코드는 저에게 효과적입니다. 두 페이드 인 및 페이드 아웃 기능을 정의하고 서로의 콜백에 넣습니다.

var fIn = function() { $(this).fadeIn(300, fOut); };
var fOut = function() { $(this).fadeOut(300, fIn); };
$('#element').fadeOut(300, fIn);

다음은 플래시 시간을 제어합니다.

var count = 3;
var fIn = function() { $(this).fadeIn(300, fOut); };
var fOut = function() { if (--count > 0) $(this).fadeOut(300, fIn); };
$('#element').fadeOut(300, fIn);

4

이 문제에 대한 해결책을 찾고 있었지만 jQuery UI에 의존하지 않았습니다.

이것은 내가 생각해 낸 것으로 나를 위해 작동합니다 (플러그인이 아니라 자바 스크립트 및 jQuery 만). -여기 작동하는 바이올린-http: //jsfiddle.net/CriddleCraddle/yYcaY/2/

CSS 파일에서 현재 CSS 매개 변수를 일반 CSS로 설정하고 매개 변수를 처리하여 배경색을 변경하는 새 클래스를 만들고 기본 동작을 무시하려면 '! 중요'로 설정하십시오. 이렇게 ...

.button_flash {
background-color: #8DABFF !important;
}//This is the color to change to.  

그런 다음 아래 함수를 사용하여 DOM 요소를 문자열, 플래시가 발생하기를 원하는 횟수, 변경하려는 클래스 및 지연을위한 정수로 문자열로 전달하십시오.

참고 : 'times'변수에 짝수를 전달하면 시작한 클래스로 끝나고 홀수를 전달하면 토글 된 클래스로 종료됩니다. 둘 다 다른 것들에 유용합니다. 나는 'i'를 사용하여 지연 시간을 변경하거나 동시에 모두 발사하여 효과가 손실됩니다.

function flashIt(element, times, klass, delay){
  for (var i=0; i < times; i++){
    setTimeout(function(){
      $(element).toggleClass(klass);
    }, delay + (300 * i));
  };
};

//Then run the following code with either another delay to delay the original start, or
// without another delay.  I have provided both options below.

//without a start delay just call
flashIt('.info_status button', 10, 'button_flash', 500)

//with a start delay just call
setTimeout(function(){
  flashIt('.info_status button', 10, 'button_flash', 500)
}, 4700);
// Just change the 4700 above to your liking for the start delay.  In this case, 
//I need about five seconds before the flash started.  

3

fadein / fadeout처럼 애니메이션 CSS / 지연을 사용할 수 있습니다

$(this).stop(true, true).animate({opacity: 0.1}, 100).delay(100).animate({opacity: 1}, 100).animate({opacity: 0.1}, 100).delay(100).animate({opacity: 1}, 100);

간단하고 유연한


3
$("#someElement").fadeTo(3000, 0.3 ).fadeTo(3000, 1).fadeTo(3000, 0.3 ).fadeTo(3000, 1); 

3000은 3 초

불투명도 1에서 0.3으로, 그 다음 1로 페이딩됩니다.

더 많이 쌓을 수 있습니다.

jQuery 만 필요합니다. :)


2

애니메이션 배경 버그에 대한 해결 방법이 있습니다. 이 요지는 간단한 하이라이트 방법과 그 사용 예를 포함합니다.

/* BEGIN jquery color */
  (function(jQuery){jQuery.each(['backgroundColor','borderBottomColor','borderLeftColor','borderRightColor','borderTopColor','color','outlineColor'],function(i,attr){jQuery.fx.step[attr]=function(fx){if(!fx.colorInit){fx.start=getColor(fx.elem,attr);fx.end=getRGB(fx.end);fx.colorInit=true;}
  fx.elem.style[attr]="rgb("+[Math.max(Math.min(parseInt((fx.pos*(fx.end[0]-fx.start[0]))+fx.start[0]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[1]-fx.start[1]))+fx.start[1]),255),0),Math.max(Math.min(parseInt((fx.pos*(fx.end[2]-fx.start[2]))+fx.start[2]),255),0)].join(",")+")";}});function getRGB(color){var result;if(color&&color.constructor==Array&&color.length==3)
  return color;if(result=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
  return[parseInt(result[1]),parseInt(result[2]),parseInt(result[3])];if(result=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
  return[parseFloat(result[1])*2.55,parseFloat(result[2])*2.55,parseFloat(result[3])*2.55];if(result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
  return[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16)];if(result=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
  return[parseInt(result[1]+result[1],16),parseInt(result[2]+result[2],16),parseInt(result[3]+result[3],16)];if(result=/rgba\(0, 0, 0, 0\)/.exec(color))
  return colors['transparent'];return colors[jQuery.trim(color).toLowerCase()];}
  function getColor(elem,attr){var color;do{color=jQuery.curCSS(elem,attr);if(color!=''&&color!='transparent'||jQuery.nodeName(elem,"body"))
  break;attr="backgroundColor";}while(elem=elem.parentNode);return getRGB(color);};var colors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]};})(jQuery);
  /* END jquery color */


  /* BEGIN highlight */
  jQuery(function() {
    $.fn.highlight = function(options) {
      options = (options) ? options : {start_color:"#ff0",end_color:"#fff",delay:1500};
      $(this).each(function() {
        $(this).stop().css({"background-color":options.start_color}).animate({"background-color":options.end_color},options.delay);
      });
    }
  });
  /* END highlight */

  /* BEGIN highlight example */
  $(".some-elements").highlight();
  /* END highlight example */

https://gist.github.com/1068231


2

라이브러리를 과도하게 포함시키는 경우 여기에 작동하는 솔루션이 있습니다.

$('div').click(function() {
    $(this).css('background-color','#FFFFCC');
    setTimeout(function() { $(this).fadeOut('slow').fadeIn('slow'); } , 1000); 
    setTimeout(function() { $(this).css('background-color','#FFFFFF'); } , 1000); 
});
  1. 설정 이벤트 트리거

  2. 블록 요소의 배경색 설정

  3. setTimeout 내부에서 fadeOut 및 fadeIn을 사용하여 작은 애니메이션 효과를 만듭니다.

  4. 내부 두 번째 setTimeout은 기본 배경색을 재설정합니다.

    몇 가지 브라우저에서 테스트되었으며 잘 작동합니다.


2

불행히도 최고의 답변에는 JQuery UI가 필요합니다. http://api.jquery.com/animate/

다음은 바닐라 JQuery 솔루션입니다

http://jsfiddle.net/EfKBg/

JS

var flash = "<div class='flash'></div>";
$(".hello").prepend(flash);
$('.flash').show().fadeOut('slow');

CSS

.flash {
    background-color: yellow;
    display: none;
    position: absolute;
    width: 100%;
    height: 100%;
}

HTML

<div class="hello">Hello World!</div>

flashjQuery 객체를 만들면 정상적으로 작동합니다. var flash = $("<div class='flash'></div>"); $(".hello").prepend(flash); flash.show().fadeOut('slow');
Michael Blackburn

1

다음은 colbeerhey 솔루션의 약간 개선 된 버전입니다. 실제 jQuery 형식에서 애니메이션을 호출 한 후 이벤트를 연결하도록 return 문을 추가했습니다. 또한 대기열을 지우고 애니메이션의 끝으로 이동하는 인수를 추가했습니다.

// Adds a highlight effect
$.fn.animateHighlight = function(highlightColor, duration) {
    var highlightBg = highlightColor || "#FFFF9C";
    var animateMs = duration || 1500;
    this.stop(true,true);
    var originalBg = this.css("backgroundColor");
    return this.css("background-color", highlightBg).animate({backgroundColor: originalBg}, animateMs);
};

참고 : 배경색을 애니메이션하려면 색상 UI 플러그인을 사용해야합니다. 참조 : api.jquery.com/animate
Martlark

1

이것은 마우스 오버 이벤트가 트리거 될 때까지 요소의 배경색을 맥동합니다.

$.fn.pulseNotify = function(color, duration) {

var This = $(this);
console.log(This);

var pulseColor = color || "#337";
var pulseTime = duration || 3000;
var origBg = This.css("background-color");
var stop = false;

This.bind('mouseover.flashPulse', function() {
    stop = true;
    This.stop();
    This.unbind('mouseover.flashPulse');
    This.css('background-color', origBg);
})

function loop() {
    console.log(This);
    if( !stop ) {
        This.animate({backgroundColor: pulseColor}, pulseTime/3, function(){
            This.animate({backgroundColor: origBg}, (pulseTime/3)*2, 'easeInCirc', loop);
        });
    }
}

loop();

return This;
}

1

위의 모든 요소를 ​​결합하여 요소를 플래시하고 원래의 bgcolour로 돌아갈 수있는 쉬운 솔루션입니다 ...

$.fn.flash = function (highlightColor, duration, iterations) {
    var highlightBg = highlightColor || "#FFFF9C";
    var animateMs = duration || 1500;
    var originalBg = this.css('backgroundColor');
    var flashString = 'this';
    for (var i = 0; i < iterations; i++) {
        flashString = flashString + '.animate({ backgroundColor: highlightBg }, animateMs).animate({ backgroundColor: originalBg }, animateMs)';
    }
    eval(flashString);
}

다음과 같이 사용하십시오.

$('<some element>').flash('#ffffc0', 1000, 3);

도움이 되었기를 바랍니다!


악을 조심하십시오 eval!
Birla

나는 빠르고 더러운 솔루션이 필요하다는 것을 알고 있습니다. Eval은 때때로 사용합니다!
던컨

1

다음은 jQuery와 CSS3 애니메이션을 혼합하여 사용하는 솔루션입니다.

http://jsfiddle.net/padfv0u9/2/

기본적으로 색상을 "플래시"색상으로 변경 한 다음 CSS3 애니메이션을 사용하여 색상이 희미 해 지도록합니다. 초기 "플래시"가 페이드보다 빠르려면 전환 지속 시간을 변경해야합니다.

$(element).removeClass("transition-duration-medium");
$(element).addClass("transition-duration-instant");
$(element).addClass("ko-flash");
setTimeout(function () {
    $(element).removeClass("transition-duration-instant");
    $(element).addClass("transition-duration-medium");
    $(element).removeClass("ko-flash");
}, 500);

CSS 클래스는 다음과 같습니다.

.ko-flash {
    background-color: yellow;
}
.transition-duration-instant {
    -webkit-transition-duration: 0s;
    -moz-transition-duration: 0s;
    -o-transition-duration: 0s;
    transition-duration: 0s;
}
.transition-duration-medium {
    -webkit-transition-duration: 1s;
    -moz-transition-duration: 1s;
    -o-transition-duration: 1s;
    transition-duration: 1s;
}


1

애니메이션하려는 코드를 작성할 수있을 정도로 일반적입니다. 지연 시간을 300ms에서 33ms로 줄이고 색 등을 페이드 아웃 할 수도 있습니다.

// Flash linked to hash.
var hash = location.hash.substr(1);
if (hash) {
    hash = $("#" + hash);
    var color = hash.css("color"), count = 1;
    function hashFade () {
        if (++count < 7) setTimeout(hashFade, 300);
        hash.css("color", count % 2 ? color : "red");
    }
    hashFade();
}

1

jquery Pulsate 플러그인을 사용하여 속도와 반복 및 색상을 제어하여 HTML 요소에 집중할 수 있습니다.

JQuery.pulsate () * 데모 포함

샘플 이니셜 라이저 :

  • $ ( ". pulse4"). pulsate ({speed : 2500})
  • $ ( ". CommandBox button : visible"). pulsate ({색상 : "# f00", 속도 : 200, 도달 : 85, 반복 : 15})
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.