jquery를 사용하여 배경색을 어떻게 페이드 인 / 아웃합니까?


96

jQuery를 사용하여 텍스트 콘텐츠를 페이드 인하려면 어떻게합니까?

요점은 메시지에 사용자의주의를 끄는 것입니다.



1
배경색을 애니메이션하기 위해 색상이나 UI 플러그인을 사용할 필요가 없습니다. 여기 에서이 질문에 답 했습니다 .
matadur 2011

답변:



90

요소의 배경색에 특별히 애니메이션을 적용하려면 jQueryUI 프레임 워크를 포함해야한다고 생각합니다. 그런 다음 다음을 수행 할 수 있습니다.

$('#myElement').animate({backgroundColor: '#FF0000'}, 'slow');

jQueryUI에는 유용 ​​할 수있는 몇 가지 기본 제공 효과가 있습니다.

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


3
나는 JQuery와 문서 (에 또한 이것에 대한 "jQuery를 색상"포함했다 "예를 들어, 폭, 높이의 경우를 (또는 왼쪽 애니메이션을 적용 할 수 있지만 jQuery.Color 플러그인을 사용하지 않는 배경 색이 될 수 없음)" ).
Boris

'slow'초로 바꿀 수 있습니다 ... 여기서 1000은 1 초와 같습니다 ... 등등.
Pathros

25

질문이 Jquery로 수행하는 방법이라는 것을 알고 있지만 간단한 CSS와 약간의 jquery로 동일한 효과를 얻을 수 있습니다.

예를 들어 'box'클래스가있는 div가있는 경우 다음 CSS를 추가합니다.

.box {
background-color: black;
-webkit-transition: background 0.5s linear;
-moz-transition: background 0.5s linear;
-ms-transition: background 0.5s linear;
-o-transition: background 0.5s linear;
transition: background 0.5s linear;
}

그런 다음 AddClass 함수를 사용하여 '상자 강조 표시'와 같은 다른 배경색을 가진 다른 클래스를 추가하거나 다음 CSS를 사용합니다.

.box.highlighted {
  background-color: white;
}

저는 초보자이고이 방법의 단점이있을 수도 있지만 누군가에게 도움이 될 수도 있습니다.

다음은 코드 펜입니다 : https://codepen.io/anon/pen/baaLYB


멋진 솔루션. 감사합니다.
thedp

이는 추가 라이브러리없이 작동하며 모든 최신 브라우저에서 기본적으로 지원되는 훌륭한 솔루션입니다. 감사!
rprez

14

일반적으로 .animate () 메서드를 사용하여 임의의 CSS 속성을 조작 할 수 있지만 배경색의 경우 색상 플러그인 을 사용해야합니다 . 이 플러그인을 포함하면 다른 사람이 지정한 것과 같은 것을 사용 $('div').animate({backgroundColor: '#f00'})하여 색상을 변경할 수 있습니다.

다른 사람들이 작성한 것처럼이 중 일부는 jQuery UI 라이브러리를 사용하여 수행 할 수도 있습니다.


9

jQuery 만 사용 (UI 라이브러리 / 플러그인 없음). jQuery도 쉽게 제거 할 수 있습니다.

//Color row background in HSL space (easier to manipulate fading)
$('tr').eq(1).css('backgroundColor','hsl(0,100%,50%');

var d = 1000;
for(var i=50; i<=100; i=i+0.1){ //i represents the lightness
    d  += 10;
    (function(ii,dd){
        setTimeout(function(){
            $('tr').eq(1).css('backgroundColor','hsl(0,100%,'+ii+'%)'); 
        }, dd);    
    })(i,d);
}

데모 : http://jsfiddle.net/5NB3s/2/

  • SetTimeout은 밝기를 50 %에서 100 %로 증가시켜 기본적으로 배경을 흰색으로 만듭니다 (색상에 따라 값을 선택할 수 있음).
  • SetTimeout은 루프에서 제대로 작동하도록 익명 함수로 래핑됩니다 ( reason ).

8

브라우저 지원에 따라 CSS 애니메이션을 사용할 수 있습니다. 브라우저 지원은 CSS 애니메이션에 대한 IE10 이상입니다. 이것은 작은 이스터 에그 만 있다면 jquery UI 의존성을 추가 할 필요가 없기 때문에 좋습니다. 사이트에 필수적인 경우 (IE9 이하에서 필요함) jquery UI 솔루션을 사용하십시오.

.your-animation {
    background-color: #fff !important;
    -webkit-animation: your-animation-name 1s ease 0s 1 alternate !important;
}
//You have to add the vendor prefix versions for it to work in Firefox, Safari, and Opera.
@-webkit-keyframes your-animation-name {
    from { background-color: #5EB4FE;}
    to {background-color: #fff;}
}
-moz-animation: your-animation-name 1s ease 0s 1 alternate !important;
}
@-moz-keyframes your-animation-name {
    from { background-color: #5EB4FE;}
    to {background-color: #fff;}
}
-ms-animation: your-animation-name 1s ease 0s 1 alternate !important;
}
@-ms-keyframes your-animation-name {
    from { background-color: #5EB4FE;}
    to {background-color: #fff;}
}
-o-animation: your-animation-name 1s ease 0s 1 alternate !important;
}
@-o-keyframes your-animation-name {
    from { background-color: #5EB4FE;}
    to {background-color: #fff;}
}
animation: your-animation-name 1s ease 0s 1 alternate !important;
}
@keyframes your-animation-name {
    from { background-color: #5EB4FE;}
    to {background-color: #fff;}
}

다음 your-animation으로 애니메이션을 적용하려는 요소에 클래스를 추가하는 jQuery 클릭 이벤트를 생성하여 한 색상에서 다른 색상으로 배경 페이드를 트리거합니다.

$(".some-button").click(function(e){
    $(".place-to-add-class").addClass("your-animation");
});

2
이것은 단연 최고의 솔루션입니다. 여기 JSfiddle.net의 데모
리카르도 ZEA

4

이와 유사한 작업을 수행하기 위해 매우 간단한 jQuery 플러그인을 작성했습니다. 나는 정말 가벼운 것을 원했기 때문에 (732 바이트 축소) 큰 플러그인이나 UI를 포함하는 것은 나에게 의문의 여지가 없었습니다. 여전히 가장자리가 약간 거칠기 때문에 피드백을 환영합니다.

https://gist.github.com/4569265 에서 플러그인을 확인할 수 있습니다 .

플러그인을 사용하면 배경색을 변경 한 다음를 추가 setTimeout하여 원래 배경색으로 페이드 백하는 플러그인을 실행 하여 하이라이트 효과를 만드는 것은 간단 합니다.


Dominik P : 'little'플러그인에 감사드립니다. 내 필요에 잘 맞습니다!
psulek

3

간단한 자바 스크립트 만 사용하여 두 가지 색상 사이에서 페이드하려면 :

function Blend(a, b, alpha) {
  var aa = [
        parseInt('0x' + a.substring(1, 3)), 
        parseInt('0x' + a.substring(3, 5)), 
        parseInt('0x' + a.substring(5, 7))
    ];

  var bb = [
        parseInt('0x' + b.substring(1, 3)), 
        parseInt('0x' + b.substring(3, 5)), 
        parseInt('0x' + b.substring(5, 7))
    ];

  r = '0' + Math.round(aa[0] + (bb[0] - aa[0])*alpha).toString(16);
  g = '0' + Math.round(aa[1] + (bb[1] - aa[1])*alpha).toString(16);
  b = '0' + Math.round(aa[2] + (bb[2] - aa[2])*alpha).toString(16);

  return '#'
        + r.substring(r.length - 2)
        + g.substring(g.length - 2)
        + b.substring(b.length - 2);
}

function fadeText(cl1, cl2, elm){
  var t = [];
  var steps = 100;
  var delay = 3000;

  for (var i = 0; i < steps; i++) {
    (function(j) {
         t[j] = setTimeout(function() {
          var a  = j/steps;
          var color = Blend(cl1,cl2,a);
          elm.style.color = color;
         }, j*delay/steps);
    })(i);
  }

  return t;
}

var cl1 = "#ffffff";
var cl2 = "#c00000";
var elm = document.getElementById("note");
T  = fadeText(cl1,cl2,elm);

출처 : http://www.pagecolumn.com/javascript/fade_text.htm


0

jQuery 또는 기타 라이브러리없이 자바 스크립트가 흰색으로 페이드 :

<div id="x" style="background-color:rgb(255,255,105)">hello world</div>
<script type="text/javascript">
var gEvent=setInterval("toWhite();", 100);
function toWhite(){
    var obj=document.getElementById("x");
    var unBlue=10+parseInt(obj.style.backgroundColor.split(",")[2].replace(/\D/g,""));
    if(unBlue>245) unBlue=255;
    if(unBlue<256) obj.style.backgroundColor="rgb(255,255,"+unBlue+")";
    else clearInterval(gEvent)
}
</script>

인쇄에서 노란색은 파란색 마이너스이므로 255 미만의 세 번째 rgb 요소 (파란색)부터 시작하여 노란색 강조 표시로 시작합니다. 그런 다음 값 10+을 설정 var unBlue하면 255에 도달 할 때까지 마이너스 파란색이 증가합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.