JQuery анимация backgroundColor

Я пытаюсь оживить изменение backgroundColor с помощью jQuery при наведении курсора мыши.

Я проверил несколько примеров и, похоже, все правильно, он работает с другими свойствами, такими как fontSize, но с backgroundColor я получаю и ошибку "Invalid Property" js. Элемент, с которым я работаю, - это div.

$(".usercontent").mouseover(function() {
    $(this).animate({ backgroundColor: "olive" }, "slow");
});

Есть идеи?

Для jquery 1.4.2 с эффектом jquery 1.8 я должен признать, что решение Andrew работает идеально. Смотрите его пост ниже.

Patrick Desjardins 22.03.2010 19:50

Примечание: этот плагин определяет текущий цвет фона элемента - браузер Chrome возвращает rgba(0, 0, 0, 0) вместо ожидаемого пустого / нулевого значения, если цвет фона не определен. Чтобы «исправить» это, элемент должен иметь исходный цвет фона.

Shadow Wizard is Vaccinating 30.12.2010 14:23

Связанная страница кажется неработающей (по крайней мере, страница проекта и демонстрационная страница).

Paolo Stefan 02.05.2011 09:26
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
330
3
494 050
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

Для всех, кто это найдет. Лучше использовать версию jQuery UI, потому что она работает во всех браузерах. У плагина цвета есть проблемы с Safari и Chrome. Это срабатывает только иногда.

-1 Последняя версия цветового плагина отлично работает в Chrome.

Andrew 20.02.2010 14:30

Тяжело включать дополнительный скрипт, чтобы просто анимировать фон

oneiros 24.07.2012 18:12

У меня была такая же проблема, и я исправил ее, включив jQuery UI. Вот полный сценарий:

<!-- include Google's AJAX API loader -->
<script src = "http://www.google.com/jsapi"></script>
<!-- load JQuery and UI from Google (need to use UI to animate colors) -->
<script type = "text/javascript">
google.load("jqueryui", "1.5.2");
</script>


<script type = "text/javascript">
$(document).ready(function() {
$('#menu ul li.item').hover(
    function() {
        $(this).stop().animate({backgroundColor:'#4E1402'}, 300);
        }, function () {
        $(this).stop().animate({backgroundColor:'#943D20'}, 100);
    });
});
</script>

В наши дни плагин цвета jQuery поддерживает следующие именованные цвета:

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]

Не могли бы вы процитировать источник. Кстати, спасибо за объявление.

Shrikant Sharat 04.10.2009 16:07

Этот список взят из плагина цвета jQuery: plugins.jquery.com/project/color

spoulson 27.11.2009 19:06

-1 Ваш список цветов относится к устаревшей версии. В текущей версии есть по крайней мере один дополнительный цвет, который я заметил.

Andrew 20.02.2010 14:31
Ответ принят как подходящий

Плагин цвета стоит всего 4 КБ, что намного дешевле, чем библиотека пользовательского интерфейса. Конечно, вы захотите использовать достойная версия плагина, а не какая-то старая глючная вещь, который не обрабатывает Safari и вылетает, когда переходы слишком быстрые. Поскольку минимизированная версия не предоставляется, вы можете протестировать различные компрессоры и минимальную версию сделать свой собственный. YUI получает лучшее сжатие в этом случае, требуя всего 2317 байт, и, поскольку он такой маленький, вот он:

(function (d) {
    d.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "color", "outlineColor"], function (f, e) {
        d.fx.step[e] = function (g) {
            if (!g.colorInit) {
                g.start = c(g.elem, e);
                g.end = b(g.end);
                g.colorInit = true
            }
            g.elem.style[e] = "rgb(" + [Math.max(Math.min(parseInt((g.pos * (g.end[0] - g.start[0])) + g.start[0]), 255), 0), Math.max(Math.min(parseInt((g.pos * (g.end[1] - g.start[1])) + g.start[1]), 255), 0), Math.max(Math.min(parseInt((g.pos * (g.end[2] - g.start[2])) + g.start[2]), 255), 0)].join(",") + ")"
        }
    });

    function b(f) {
        var e;
        if (f && f.constructor == Array && f.length == 3) {
            return f
        }
        if (e = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)) {
            return [parseInt(e[1]), parseInt(e[2]), parseInt(e[3])]
        }
        if (e = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)) {
            return [parseFloat(e[1]) * 2.55, parseFloat(e[2]) * 2.55, parseFloat(e[3]) * 2.55]
        }
        if (e = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)) {
            return [parseInt(e[1], 16), parseInt(e[2], 16), parseInt(e[3], 16)]
        }
        if (e = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)) {
            return [parseInt(e[1] + e[1], 16), parseInt(e[2] + e[2], 16), parseInt(e[3] + e[3], 16)]
        }
        if (e = /rgba\(0, 0, 0, 0\)/.exec(f)) {
            return a.transparent
        }
        return a[d.trim(f).toLowerCase()]
    }
    function c(g, e) {
        var f;
        do {
            f = d.css(g, e);
            if (f != "" && f != "transparent" || d.nodeName(g, "body")) {
                break
            }
            e = "backgroundColor"
        } while (g = g.parentNode);
        return b(f)
    }
    var a = {
        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);

Хорошо, перейдите по ссылке, предложенной Андреем. Загрузите файл. Вам нужно добавить его в свой проект. У вас все еще может быть jquery.effects.core в вашем проекте, это будет отлично работать. Спасибо за ответ. +1

Patrick Desjardins 22.03.2010 19:49

Я просто вставил это в свой существующий файл jquery-ui-1.8.2.min.js и ... все по-прежнему работало :-)

Dave Everitt 04.02.2011 14:55

Привет, Эндрю, я разместил аналогичный вопрос здесь, но с другой проблемой вы можете проверить это stackoverflow.com/questions/5024981/flash-effect-with-jquery

Gowri 16.04.2011 10:33

@gowri Вы хотите отправить сообщение каждому браузеру, который в данный момент подключен к вашему сайту, как аукцион, на котором мигают цвета. У вас проблема связи клиент-сервер, а не изменение цвета.

Andrew 19.04.2011 08:50

вы имеете в виду, обновить div с помощью ajax? каждую секунду !

Gowri 19.04.2011 09:01

@gowri использует технологию кометы для заполнения событий, сгенерированных сервером, на стороне клиента

Dmitry Evseev 19.04.2011 10:45

Я хотел бы отметить, что в прошлом году (2011) автор этого плагина выпустил версию 2, в которой есть много хороших функций, но они не требуются для базовой функциональности, которую обычно ищут в этой библиотеке. Теперь он больше 20 кбайт. Вы можете выбрать ветвь v1, чтобы получить старую версию (которая все еще работает), но она намного легче.

Aren 11.06.2011 02:48

Минифицированный компилятором Google Closure, он по-прежнему составляет всего 6 КБ.

Klemen Tusar 13.11.2011 14:03

FWIW - вы можете удалить отображение цвета в rgb в коде и дополнительно уменьшить размер: raw.github.com/gist/1891361/…. Обратной стороной является то, что вы не можете использовать названия цветов для анимации. Вам нужно будет использовать значения rgb.

Niyaz 23.02.2012 11:44

Сейчас 2012 год. Чтобы было понятно, я только что загрузил (скопировал) файл jquery-color.js. Добавил его в свой каталог JS, и тогда я могу делать такие вещи, как: $ (this) .animate ({borderColor: "# 289312"}, "fast");

Toadums 19.06.2012 20:51

jQuery 1.8 ломает этот плагин, кстати. curCSS больше не входит в jQuery.

Rich Bradshaw 14.09.2012 18:27

jQuery 1.10.1 и (как минимум) backgroundColor все еще работают! Спасибо!

m.spyratos 30.06.2013 23:27

Работа с jQuery 1.10.2. Замените curCSS на css.

Chad von Nau 06.08.2013 12:04

Вы можете использовать 2 div:

Вы можете поместить клон поверх него и затемнить оригинал, постепенно добавляя клона.

Когда фейдеры закончены, восстановите оригинал с новым bg.

$(function(){
    var $mytd = $('#mytd'), $elie = $mytd.clone(), os = $mytd.offset();

      // Create clone w other bg and position it on original
    $elie.toggleClass("class1, class2").appendTo("body")
         .offset({top: os.top, left: os.left}).hide();

    $mytd.mouseover(function() {            
          // Fade original
        $mytd.fadeOut(3000, function() {
            $mytd.toggleClass("class1, class2").show();
            $elie.toggleClass("class1, class2").hide();            
        });
          // Show clone at same time
        $elie.fadeIn(3000);
    });
});​

jsFiddle пример


.toggleClass()
.offset()
.fadeIn()
.fadeOut()

возможно, в какой-то момент это сработало, по крайней мере, верно, но не похоже, что он делает то, что от него ожидается.

epeleg 15.07.2013 13:27

@epeleg - у меня работает в Mac Chrome. Вы нажимаете на цветной прямоугольник, и он меняет цвет (2013 - 07 - 15)

Peter Ajtai 15.07.2013 22:40

Я не знаю как, но теперь он действительно работает на моем Windows 7 Chrome. может быть связано с обновлением хрома, которое я сделал вчера ?! в любом случае, как я уже сказал, теперь он действительно работает.

epeleg 16.07.2013 09:45

Мне нравится использовать delay () для этого, вот пример:

jQuery(element).animate({ backgroundColor: "#FCFCD8" },1).delay(1000).animate({ backgroundColor: "#EFEAEA" }, 1500);

Это может быть вызвано функцией, где «element» является классом / именем элемента / и т. д. Элемент мгновенно появится с фоном # FCFCD8, задержитесь на секунду, а затем исчезнет до #EFEAEA.

Плагин ColorBlend делает именно то, что вам нужно

http://plugins.jquery.com/project/colorBlend

Вот мой код выделения

$("#container").colorBlend([{
    colorList:["white",  "yellow"], 
    param:"background-color",
    cycles: 1,
    duration: 500
}]);

Bitstorm имеет лучший плагин цветной анимации jquery, который я когда-либо видел. Это улучшение цветового проекта jquery. Он также поддерживает rgba.

http://www.bitstorm.org/jquery/color-animation/

Я не могу отблагодарить вас за то, что вы заявили, что он поддерживает 'rgba', что именно то, что я искал

Onimusha 17.07.2016 21:51

Попробуй это:

jQuery(".usercontent").hover(function() {
    jQuery(this).animate({backgroundColor:"pink"}, "slow");
},function(){
    jQuery(this).animate({backgroundColor:"white"}, "slow");
});

Доработанный способ с эффектами:

jQuery(".usercontent").hover(function() {

    jQuery(this).fadeout("slow",function(){
        jQuery(this).animate({"color","yellow"}, "slow");
    });
});

Вы можете использовать jQuery UI, чтобы добавить эту функциональность. Вы можете взять только то, что вам нужно, поэтому, если вы хотите оживить цвет, все, что вам нужно включить, - это следующий код. Я получил if из последнего пользовательского интерфейса jQuery (в настоящее время 1.8.14)

/******************************************************************************/
/****************************** COLOR ANIMATIONS ******************************/
/******************************************************************************/

// override the animation for color styles
$.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor',
    'borderRightColor', 'borderTopColor', 'borderColor', 'color', 'outlineColor'],
function(i, attr) {
    $.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], 10), 255), 0) + ',' +
            Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1], 10), 255), 0) + ',' +
            Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2], 10), 255), 0) + ')';
    };
});

// Color Conversion functions from highlightFade
// By Blair Mitchelmore
// http://jquery.offput.ca/highlightFade/

// Parse strings looking for color tuples [255,255,255]
function getRGB(color) {
        var result;

        // Check if we're already dealing with an array of colors
        if ( color && color.constructor == Array && color.length == 3 )
                return color;

        // Look for rgb(num,num,num)
        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],10), parseInt(result[2],10), parseInt(result[3],10)];

        // Look for rgb(num%,num%,num%)
        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];

        // Look for #a0b1c2
        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)];

        // Look for #fff
        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)];

        // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
        if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
                return colors['transparent'];

        // Otherwise, we're most likely dealing with a named color
        return colors[$.trim(color).toLowerCase()];
}

function getColor(elem, attr) {
        var color;

        do {
                color = $.curCSS(elem, attr);

                // Keep going until we find an element that has color, or we hit the body
                if ( color != '' && color != 'transparent' || $.nodeName(elem, "body") )
                        break;

                attr = "backgroundColor";
        } while ( elem = elem.parentNode );

        return getRGB(color);
};

Это всего 1,43 КБ после сжатия с помощью YUI:

$.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","borderColor","color","outlineColor"],function(b,a){$.fx.step[a]=function(c){if (!c.colorInit){c.start=getColor(c.elem,a);c.end=getRGB(c.end);c.colorInit=true}c.elem.style[a] = "rgb("+Math.max(Math.min(parseInt((c.pos*(c.end[0]-c.start[0]))+c.start[0],10),255),0)+","+Math.max(Math.min(parseInt((c.pos*(c.end[1]-c.start[1]))+c.start[1],10),255),0)+","+Math.max(Math.min(parseInt((c.pos*(c.end[2]-c.start[2]))+c.start[2],10),255),0)+")"}});function getRGB(b){var a;if (b&&b.constructor==Array&&b.length==3){return b}if (a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(b)){return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)]}if (a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(b)){return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55]}if (a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(b)){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}if (a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(b)){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}if (a=/rgba\(0, 0, 0, 0\)/.exec(b)){return colors.transparent}return colors[$.trim(b).toLowerCase()]}function getColor(c,a){var b;do{b=$.curCSS(c,a);if (b! = ""&&b! = "transparent"||$.nodeName(c,"body")){break}a = "backgroundColor"}while(c=c.parentNode);return getRGB(b)};

Вы также можете анимировать цвета с помощью переходов CSS3, но это поддерживается только современными браузерами.

a.test {
  color: red;
  -moz-transition-property: color;  /* FF4+ */
  -moz-transition-duration: 1s;
  -webkit-transition-property: color;  /* Saf3.2+, Chrome */
  -webkit-transition-duration: 1s;
  -o-transition-property: color;  /* Opera 10.5+ */
  -o-transition-duration: 1s;
  -ms-transition-property: color;  /* IE10? */
  -ms-transition-duration: 1s;
  transition-property: color;  /* Standard */
  transition-duration: 1s;
  }

  a.test:hover {
  color: blue;
  }

Использование сокращенного свойства:

/* shorthand notation for transition properties */
/* transition: [transition-property] [transition-duration] [transition-timing-function] [transition-delay]; */

a.test {
  color: red;
  -moz-transition: color 1s;
  -webkit-transition: color 1s;
  -o-transition: color 1s;
  -ms-transition: color 1s;
  transition: color 1s;
  }

a.test {
  color: blue;
 }

В отличие от обычных переходов javascript, переходы CSS3 ускоряются аппаратно и, следовательно, более плавные. Вы можете использовать Modernizr, чтобы узнать, поддерживает ли браузер переходы CSS3, если нет, вы можете использовать jQuery в качестве запасного варианта:

if ( !cssTransitions() ) {
    $(document).ready(function(){
        $(".test").hover(function () {
                $(this).stop().animate({ backgroundColor: "red" },500)
             }, function() {
                 $(this).stop().animate({ backgroundColor: "blue" },500)}    
             );
    }); 
}

Не забудьте использовать stop (), чтобы остановить текущую анимацию перед запуском новой, в противном случае, когда вы проходите мимо элемента слишком быстро, эффект будет мигать некоторое время.

Попробуйте использовать это

-moz-transition: background .2s linear;
-webkit-transition: background .2s linear;
-o-transition: background .2s linear;
transition: background .2s linear;

Я наткнулся на эту страницу с той же проблемой, но со следующими проблемами:

  1. Я не могу включить дополнительный файл плагина jQuery в мою текущую настройку.
  2. Мне неудобно вставлять большие блоки кода, которые у меня нет времени читать и проверять.
  3. У меня нет доступа к CSS.
  4. У меня почти не было времени на реализацию (это было только визуальное улучшение админки)

С учетом вышеизложенного, это в значительной степени исключало любой ответ. Учитывая, что мое обесцвечивание было очень простым, я использовал вместо этого следующий быстрый прием:

element
  .css('color','#FF0000')
;
$('<div />')
  .css('width',0)
  .animate(
    {'width':100},
    {
      duration: 3000,
      step:function(now){
        var v = (255 - 255/100 * now).toString(16);
        v = (v.length < 2 ? '0' : '') + v.substr(0,2);
        element.css('color','#'+v+'0000');
      }
    }
  )
;

Вышеупомянутый создает временный div, который никогда не помещается в поток документов. Затем я использую встроенную анимацию jQuery для анимации числового свойства этого элемента - в данном случае width - которое может представлять процент (от 0 до 100). Затем, используя пошаговую функцию, я переношу эту числовую анимацию на цвет текста с помощью простого шестнадцатеричного обозначения.

То же самое можно было бы достичь с помощью setInterval, но с помощью этого метода вы можете извлечь выгоду из методов анимации jQuery, таких как .stop(), и вы можете использовать easing и duration.

Очевидно, что это полезно только для простого исчезновения цвета, для более сложных преобразований цветов вам нужно будет использовать один из приведенных выше ответов или закодировать свою собственную математику исчезновения цвета :)

Я использовал комбинацию переходов CSS с JQuery для желаемого эффекта; очевидно, что браузеры, которые не поддерживают переходы CSS, не будут анимировать, но это легкий вариант, который хорошо работает для большинства браузеров и для моих требований является приемлемым ухудшением.

JQuery для изменения цвета фона:

   $('.mylinkholder a').hover(
        function () {
            $(this).css({ backgroundColor: '#f0f0f0' }); 
        },
        function () {
            $(this).css({ backgroundColor: '#fff' });
        }
    );

CSS с использованием перехода для постепенного изменения цвета фона

   .mylinkholder a
   {
   transition: background-color .5s ease-in-out;
   -moz-transition: background-color .5s ease-in-out;
   -webkit-transition: background-color .5s ease-in-out; 
  -o-transition: background-color .5s ease-in-out; 
   }

Если вы не хотите анимировать фон, используя только основные функции jQuery, попробуйте следующее:

jQuery(".usercontent").mouseover(function() {
      jQuery(".usercontent").animate({backgroundColor:'red'}, 'fast', 'linear', function() {
            jQuery(this).animate({
                backgroundColor: 'white'
            }, 'normal', 'linear', function() {
                jQuery(this).css({'background':'none', backgroundColor : ''});
            });
        });

Сделайте это с помощью CSS3-Transitions. Поддержка отличная (все современные браузеры, даже IE). С Compass и SASS это делается быстро:

#foo {background:red; @include transition(background 1s)}
#foo:hover {background:yellow}

Чистый CSS:

#foo {
background:red;
-webkit-transition:background 1s;
-moz-transition:background 1s;
-o-transition:background 1s;
transition:background 1s
}
#foo:hover {background:yellow}

Я написал немецкую статью на эту тему: http://www.solife.cc/blog/animation-farben-css3-transition.html

Поиграйте с переходами парить и щелкнуть в: jsfiddle.net/K5Qyx

Dem Pilafian 02.01.2014 02:07

Попробуй это:

(function($) {  

            var i = 0;  

            var someBackground = $(".someBackground");  
            var someColors = [ "yellow", "red", "blue", "pink" ];  


            someBackground.css('backgroundColor', someColors[0]);  

            window.setInterval(function() {  
                i = i == someColors.length ? 0 : i;  
                someBackground.animate({backgroundColor: someColors[i]}, 3000);  
                i++;  
            }, 30);  

})(jQuery);  

Вы можете просмотреть пример здесь: http://jquerydemo.com/demo/jquery-animate-background-color.aspx

Просто добавьте следующий фрагмент под свой скрипт jquery и наслаждайтесь:

<script src = "https://cdn.jsdelivr.net/jquery.color-animation/1/mainfile"></script>

См. Пример

Ссылка для получения дополнительной информации

Пожалуйста, вставьте примеры, чтобы они не были подвержены гниению ссылок.

Ege Özcan 09.11.2018 21:58

Другие вопросы по теме