Помогите пожалуйста новичку.
Всем привет!
Делаю сайт на jQuery , совсем недавно знаком с этой библиотекой, в общем суть задачи в следующем: Есть сайт , по бокам у него стрелочки, вверх , вниз , влево и вправо , соотв. нажимая вверх , сайт как бы уезжает вниз на 3 экрана и показывается другой раздел , в общем суть в том , что экраны ездят. Я весь код написал , он работает во всех браузерах , кромее... правильно! IE! , вверх у меня экран съезжает , а вниз не возвращается , прыгает и все , потом белый экран ставновится , т.к. на том месте никаких элементов не прописано. двигаю элементы так:
var last="";
var mode=0;
function goUp() {
last="-=250%";
mode=2;
$("div.block").animate({top: "+=250%"}, 1200);
return false;
}
function goDown() {
last="+=300%";
mode=2;
$("div.block").animate({top: "-=300%"}, 1200);
return false;
}
function goLeft() {
last="-=300%";
mode=1;
$("div.block").animate({left: "+=300%"}, 1200);
return false;
}
function goRight() {
last="+=200%";
mode=1;
$("div.block").animate({left: "-=200%"}, 1200);
return false;
}
function goBack() {
if (last!="" && mode>0) {
//alert(last);
if (mode==1)
//äëÿ âîçâðàòà ïî x
$("div.block").animate({left: last}, 1200);
if (mode==2)
//äëÿ âîçâðàòà ïî y
$("div.block").animate({top: last}, 1200);
last="";
mode=0;
}
}
Кто поможет? Что я делаю не так , в Safari , Opera , Firefox и Google Chrome все ровно , работает как нужно ) |
Да , стили такие:
* {
margin:0px;
padding:0px;
}
html, body {
margin:0;
padding:0;
border:0;
height:100%;
border-collapse: collapse;
font-family: Tahoma , Helvetica , Sans serif;
font-size: 12px;
color:#000000;
overflow:hidden;
}
a {
color:#5C2E04;
font-size:12px;
font-family: Tahoma , Helvetica , Sans serif;
text-decoration:underline;
}
a:hover {
color:#261200;
font-size:12px;
font-family: Tahoma , Helvetica , Sans serif;
text-decoration:underline;
}
/*classes*/
.block {
width:100%;
height:100%;
position:absolute;
z-index:99;
}
.imglink {
cursor:pointer;
}
/*classes*/
/*id*/
#load {
z-index:1000;
width:100%;
height:100%;
text-align:center;
background:#a8a8a8;
}
#about {
width:2000px;
height:250%;
left:0;
top:-250%;
background:#683DFC url('../img/about.png') top repeat-x;
position:absolute;
}
#about_content {
z-index:101;
width:100%;
height:100%/*ie*/;
left:0;
top:-250%;
position:absolute;
}
#portfolio {
width:300%;
height:1200px;
left:-300%;
background:url('../img/portfolio.png') no-repeat center;
position:absolute;
}
#portfolio_content {
z-index:101;
width:100%;
height:100%;
left:-300%;
top:0;
position:absolute;
}
#index {
left:50%;
top:50%;
width:2000px;
height:1200px;
margin-left:-1000px;
margin-top:-600px;
background:url('../img/index.png') no-repeat center;
z-index:102;
position:absolute;
}
#index_content {
z-index:103;
top:0px;
left:0px;
position:absolute;
}
#contacts {
width:300%;
height:1200px;
left:100%;
top:0px;
background:#683DFC url('../img/contacts.png') repeat-y top right;
position:absolute;
}
#contacts_content {
z-index:101;
width:100%;
height:100%;
left:200%;
top:0;
position:absolute;
}
#clients {
width:2000px;
height:400%;
top:100%;
background:#683DFC url('../img/clients.png') bottom repeat-x;
position:absolute;
}
#clients_content {
z-index:101;
width:100%;
height:100%;
left:0;
top:300%;
position:absolute;
}
#controls {
width:300px;
height:300px;
position:absolute;
z-index:100;
}
/*id*/
На ВСЕХ div'ах стоит class="block" и соотв. его ID |
а откуда ты взял такой способ задания анимации: animate({top: "+=250%"}, 1200)?
|
С одного из учебных сайтов по jQuery )
А как будет правильно , подскажите пожалуйста ;-) ? |
сорри, не заметил, что можно и так
ну тогда аттач в топик архив со страничкой |
Весь код пока не очень хочу светить , хочу разобраться сам.
Подскажите , а как еще делается такая анимация (движение объектов)? Я попробую сам и если не получится, то напишу здесь. А если все выйдет , напишу в чем была проблема ) |
Цитата:
Цитата:
|
Вот ссылка - http://test.imagi-nation.ru
|
постепенно упрощай страницу. В какой-то момент оно заработает и ты узнаешь из-за чего оно не работало (последнее изменение)
p.s. в опере можно с помощью колесика мышки попасть на верхний/нижний экраны |
Окей, спасибо за совет )
|
Эхх, никак не решу проблему, но суть ее примерно понял:
Если left указывать не +=100% , -=100% например , а в пикселях , например +=100px , -=100px , то работает , но в IE нет анимации почему то (это уже другой вопрос). Теперь самое главное , вот совсем урезанная версия: http://test.imagi-nation.ru/test2.htm Вправо уезжает все замечательно , далее же позиции сбрасываются на определенные в CSS (видимо) и все это дело едет влево (обратно) , это некорректное поведение IE , в других браузерах позиция left вычитается от текущей (на которую еще "переехали" объекты) Как сделать , чтобы IE также возвращал объекты обратно , без сбрасывания их координат? Код , отвечающий за перемещение вправо:
$("div.block").animate({left: "-=300%"}, 1200);
Код, отвечающий , за перемещение назад:
$("div.block").animate({left: "+=300%"}, 1200);
Надеюсь понятно объяснил ))) Очень хочется уже сделать , чтобы работало все. |
это баг jQuery
попробуй заменить
if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
на
if ( !/^-?\d+(px)?$/i.test( ret ) && /^-?\d/.test( ret ) ) {
|
Дружище!
Спасибо тебе огромное! Оно работает! Осталось пару косяков, но это уже мелочи и я сам поправлю! Блин, какое же облегчение , когда проблема решена, тем более когда не знаешь еще толком библиотеку и думаешь , что это ты что то неправильно делаешь. Спасибо огромное! Удачи тебе ;-) |
учись отлаживать (хоть и чужие библиотеки). Иногда имеет смысл поискать на багтрекере - может у кого были подобные проблемы
|
Да отлаживать я умею , firebug стоит , не перый год уже с сайтами и программированием, а вот по поиску вводил , но с английским у меня не очень и все не то находил.
|
Цитата:
|
| Часовой пояс GMT +3, время: 08:47. |