!!!! Изменение цвета при скролле SOS!!!
В общем вся проблема в том что скрипт некорректно работает во время скролла
т.е во время скролла цвета блоков не меняются а вся идея в том чтобы цвета плавно менялись во время скроллинга http://learn.javascript.ru/play/EGRaKb
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="admin" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<title>Untitled - 1</title>
<style>
.active{
}
dbody {
min-height: 750px;
}
.body div{
display: block;
text-align: center;
border: 10px solid #000;
height: 250px;
width: 70%;
padding-top: 200px;
}
.menu{
position: fixed;
right: 20px;
top: 20px;
border: 2px solid #000;
}
</style>
</head>
<body>
<ul class="menu">
<li><a href="#1">11111</a></li>
<li><a href="#2">22222</a></li>
<li><a href="#3">33333</a></li>
<li><a href="#4">44444</a></li>
<li><a href="#5">55555</a></li>
<li><a href="#6">66666</a></li>
</ul>
<div class="body">
<a name="1" ></a><br /><div id="f1">1</div>
<a name="2" ></a><br /><div id="f2">2</div>
<a name="3" ></a><br /><div id="f3">3</div>
<a name="4" ></a><br /><div id="f4">4</div>
<a name="5" ></a><br /><div id="f5">5</div>
<a name="6" ></a><br /><div id="f6">6</div>
</div>
<script>
$(document).ready(function(){
var link = window.location.hash.replace("#","");
$('.body a[name="'+link+'"]').next().next().addClass('active');
$('.menu a').click(function(){
var _name = $(this).attr("href");
document.location.href = _name;
location.reload();
});});
$(function() {
$(window).scroll(function(){
var distanceTop1 = $('#f1').offset().top - 450;
var distanceTop2 = $('#f2').offset().top - 450;
var distanceTop3 = $('#f3').offset().top - 450;
var distanceTop4 = $('#f4').offset().top - 450;
var distanceTop5 = $('#f5').offset().top - 450;
var distanceTop6 = $('#f6').offset().top - 450;
if ($(window).scrollTop() > distanceTop1){
$('#f2,#f3,#f4,#f5,#f6').stop(true).animate({ backgroundColor: "none"}, 500);
$('#f1').animate({ backgroundColor: "green"}, 500);}
else
$('#f1').stop(true).animate({ backgroundColor: "none" }, 500);
if ($(window).scrollTop() > distanceTop2){
$('#f1,#f3,#f4,#f5,#f6').stop(true).animate({ backgroundColor: "none"}, 500);
$('#f2').animate({ backgroundColor: "green"}, 500);}
else
$('#f2').stop(true).animate({ backgroundColor: "none" }, 500);
if ($(window).scrollTop() > distanceTop3){
$('#f2,#f1,#f4,#f5,#f6').stop(true).animate({ backgroundColor: "none"}, 500);
$('#f3').animate({ backgroundColor: "green"}, 500);}
else
$('#f3').stop(true).animate({ backgroundColor: "none" }, 500);
if ($(window).scrollTop() > distanceTop4){
$('#f2,#f3,#f1,#f5,#f6').stop(true).animate({ backgroundColor: "none"}, 500);
$('#f4').animate({ backgroundColor: "green"}, 500);}
else
$('#f4').stop(true).animate({ backgroundColor: "none" }, 500);
if ($(window).scrollTop() > distanceTop5){
$('#f2,#f3,#f4,#f1,#f6').stop(true).animate({ backgroundColor: "none"}, 500);
$('#f5').animate({ backgroundColor: "green"}, 500);}
else
$('#f5').stop(true).animate({ backgroundColor: "none" }, 500);
if ($(window).scrollTop() > distanceTop6) {
$('#f2,#f3,#f4,#f5,#f1').stop(true).animate({ backgroundColor: "none"}, 500);
$('#f6').animate({ backgroundColor: "green"}, 500);
}
else
$('#f6').stop(true).animate({ backgroundColor: "none" }, 500);
});
});
</script>
</body>
</html>
ПОМОГИТЕ!!! :help: |
:help: :help: :help: :help: :help: :help: :help: :help: :help: :help: :help: :help:
|
Чет там кода слишком много. Удали дубли, а то вломы разбираться..
|
danik.js,
В принципе весь код слизан отсюда http://dnzl.ru/view_post.php?id=188 Только вот это сам кое-как нацарапал (ну почти сам) и с этим кодом вроде бы проблем нет
$(document).ready(function () {
var link = window.location.hash.replace("#", "");
$('.body a[name="' + link + '"]').next().next().addClass('active');
$('.menu a').click(function () {
var _name = $(this).attr("href");
document.location.href = _name;
location.reload();
});
});
Без дублей
$(function () {
$(window).scroll(function () {
var distanceTop1 = $('#f1').offset().top - 450;
if ($(window).scrollTop() > distanceTop1) {
$('#f1').animate({
backgroundColor: "green"
}, 500);
} else $('#f1').stop(true).animate({
backgroundColor: "none"
}, 500);
});
});
|
а в логи ошибки валятся?
или может условие не выполняется.. выведите в консоль результаты при скроле:
...
var distanceTop1 = $('#f1').offset().top - 450;
console.log(distanceTop1);
console.log(($(window).scrollTop() > distanceTop1) ? 'условие выполнилось' : 'условие не выполнилось');
if ($(window).scrollTop() > distanceTop1) {
...
|
В принципе всё работает только надо было чтобы цвета блоков менялись при скроллинге а не только после его остановки
(в логах ошибок нет) |
Может есть какая-то библиотека jq?
|
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<style>
dbody {
min-height: 750px;
}
div {
text-align: center;
border: solid 1px lightgreen;
width: 80%;
height: 200px;
margin: 2em;
}
</style>
<div class="f">1</div>
<div class="f">2</div>
<div class="f">3</div>
<div class="f">4</div>
<div class="f">5</div>
<div class="f">6</div>
<script>
jQuery(function ($) {
$(window).scroll(function(){
$(".f").each(function() {
if ($(this).offset().top < $(window).scrollTop() + 50) {
$(this).animate({backgroundColor: "green"}, 200);
} else {
$(this).animate({backgroundColor: "none"}, 200);
}
});
});
});
</script>
ну и подумай как это использовать, чтобы не было each |
http://www.xiper.net/examples/js-plu...lor/color.html
вот пример. но вот почему то jquery.color.js с jquery-1.10.1.min.js дружить не хочет.. |
Огромное спасибо за то что потрудились написать скрипт, однако надобно чтобы когда блок в центре экрана он окрашивался а у других цвет изчезал
(всё это дело для интернет магазина, для страницы представления товаров) Вот уже целый день бьюсь головой об стену:( ссори за то что не объяснил суть проблемы |
| Часовой пояс GMT +3, время: 03:47. |