jquery изменение цвета фона пользовательская прокрутка
Возможно ли с помощью jquery, что когда пользователь прокручивает страницу вниз, фон анимируется от 50% белого до 90% белого или что-то еще?
Поэтому сначала это цвет rgba(255,255,255,.5) , а когда пользователь прокручивает 210px ниже цвета become rgba(255,255,255,.9).
5 ответов:
Здесь вы идете (это изменит цвет страницы на синий, когда вы прокручиваете больше, чем 210px, и вернется обратно к красному, если вы вернетесь назад):
$(document).ready(function(){ var scroll_pos = 0; $(document).scroll(function() { scroll_pos = $(this).scrollTop(); if(scroll_pos > 210) { $("body").css('background-color', 'blue'); } else { $("body").css('background-color', 'red'); } }); });
Обновленная, более общая версия:
var tStart = 100 // Start transition 100px from top , tEnd = 500 // End at 500px , cStart = [250, 195, 56] // Gold , cEnd = [179, 217, 112] // Lime , cDiff = [cEnd[0] - cStart[0], cEnd[1] - cStart[1], cEnd[2] - cStart[2]]; $(document).ready(function(){ $(document).scroll(function() { var p = ($(this).scrollTop() - tStart) / (tEnd - tStart); // % of transition p = Math.min(1, Math.max(0, p)); // Clamp to [0, 1] var cBg = [Math.round(cStart[0] + cDiff[0] * p), Math.round(cStart[1] + cDiff[1] * p), Math.round(cStart[2] + cDiff[2] * p)]; $("body").css('background-color', 'rgb(' + cBg.join(',') +')'); }); });Если вы хотите плавное, градиентное изменение при прокрутке, вы должны попробовать
$(document).ready(function(){ $(document).scroll(function() { var alpha = Math.min(0.5 + 0.4 * $(this).scrollTop() / 210, 0.9); var channel = Math.round(alpha * 255); $("body").css('background-color', 'rgb(' + channel + ',' + channel + ',' + channel + ')'); }); });
Для плавного эффекта перехода вы должны проверить положение прокрутки, соответственно вы можете изменить bg-цвет. используйте .анимировать функцию jquery.
I found the perfect what I was looking for here
С помощью @redmoon7777
Css
body{ height:5000px; } .fifty { background:rgba(25,20,25,.5) } .ninty { background:rgba(25,20,25,.9) }JQuery
$(document).ready(function(){ var scroll_pos = 0; $(document).scroll(function() { scroll_pos = $(this).scrollTop(); if(scroll_pos > 210) { $("body").removeClass().addClass('ninty'); } else { $("body").removeClass('ninty').addClass('fifty'); } }); });
С анимацией
<html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> <!--for RGBA support. http://pioupioum.fr/sandbox/jquery-color/ --> <script type="text/javascript" src="https://raw.github.com/piouPiouM/jquery-color/master/jquery.color.js"></script> <!--the magic --> <script type="text/javascript"> $(document).ready(function(){ $(document).scroll(function(){ if($(this).scrollTop() > 210) $('#bk').animate({backgroundColor: 'rgba(255,255,255,.9)'}, 1000); }); }); </script> </head> <body style="background: black"> <div id="bk" style="background-color: rgba(255,255,255,.5); height: 200%; min-height: 400px"> <!--change this element's background transparency instead of body so that you will see the effect --> </div> </body> </html>
Comments