2016-11-01 2 views
1

Я пытаюсь сделать уровень яркости страницы анимированным, когда нажимается кнопка. Мне нужно значение для внесения изменений каждый раз, когда нажимается кнопка. Как это.Использование анимации jQuery с фильтром css.

$(".brightness-minus").click(function() { 
    if(b < 11){ 
    $(".settings-inner-bar").animate({width: "-=3.3vw"}); 
    b++; 
    console.log(b); 
    } 

В приведенном выше коде я использую «- =» для анимации ширины каждый раз. То, что я пытаюсь сделать, это реплицировать этот эффект на этот тег.

-webkit-filter: brightness(1); 
    filter: brightness(1); 

Я пытаюсь свести его с шагом 0,02 за раз.

Из-за того, что слово «яркость» там тоже не работает.

Кто-нибудь знает, как я могу изменить значение этого таким же образом.

Заранее благодарен!

+0

если б <11 звуков, как вы хотите увеличить. Может быть, вы имели в виду, если b **> ** 11? –

+0

Привет и спасибо, что ответили! Эта часть предназначена только для того, чтобы внутренняя панель не выходила из контейнера. Поэтому, если панель пуста, кнопка не будет работать. Это остановит пользователей, понижающих яркость ниже того, что я планирую установить как мин. – Allan

+1

Попробуйте запустить код здесь: http://www.pythontutor.com –

ответ

1

Вдохновленного this отличного ответа

Вы можете использовать функцию animate() на переменном с числовым значением, а затем вызвать функцию на каждом этапе, а затем присвоить значение из переменных к свойству CSS. Поэтому вместо использования оператора -= вам нужно будет сохранить текущую яркость в переменной и вычесть из нее. Я сделал JSFiddle, чтобы продемонстрировать (использовал изображение для демонстрации яркости): https://jsfiddle.net/0ccgjgL8/1/

<button class="brightness-minus"> 
- minus 
</button> 

<div class="wrapper"> 
<img class="settings-inner-bar" src="http://lorempixel.com/output/technics-q-c-640-480-4.jpg" /> 
</div> 

JQuery

var b = 0; 
var currentBrightness = 1; 
$(function(){ 
    $(".brightness-minus").click(function() { 
    if(b < 11){ 

     $({brightness: currentBrightness}).animate({brightness: currentBrightness-0.10}, { 
      duration: 500, 
      easing: 'swing', // or "linear" 
      step: function() { 
       console.log(this.brightness); 
       $(".settings-inner-bar").css({ 
        "-webkit-filter": "brightness("+this.brightness+")", 
        "filter": "brightness("+this.brightness+")" 
       }); 
       currentBrightness = this.brightness; 
      } 
     }); 
     b++; 
    } 
    }); 
}); 
+0

WOW это невероятно! Большое спасибо! – Allan

+0

FYI ребята другое исправление, которое я обнаружил, помещало черный div за контейнер и уменьшало непрозрачность вместо фильтра. На всякий случай кто-то сталкивается с этим, ища другое решение. :) – Allan

Смежные вопросы