Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.05.2012, 19:24
Аспирант
Отправить личное сообщение для Blizzart Посмотреть профиль Найти все сообщения от Blizzart
 
Регистрация: 03.02.2010
Сообщений: 63

if/else, анимации в зависимости от значений css
$(document).ready(function() { 
      $('.talksButton:has(p#topA)').click(function () {
if ($('#scroll').css('margin-top') == 360) {	 $('#scroll').animate({marginTop:'+=0'});	 }
else {$('#scroll').animate({marginTop:'+=35'}); }
}); 
       $('.talksButton:has(p#bottomA)').mousedown(function () {
if ($('#scroll').css('margin-top') <= -350) {	 $('#scroll').css({marginTop:'=-350'});	 }
else {$('#scroll').animate({marginTop:'-=35'}); }
}); 
});

Не пойму как сделать, чтобы margin-top переставал изменяться, например, когда станет меньше или равен -350 как в нижней функции. Подскажите, пожалуйста.
Сейчас условия игнорируется. пробовал другие варианты, переставали работать кнопки

Последний раз редактировалось Blizzart, 07.05.2012 в 19:27. Причина: дополнение
Ответить с цитированием
  #2 (permalink)  
Старый 07.05.2012, 21:40
Аспирант
Отправить личное сообщение для atlantis Посмотреть профиль Найти все сообщения от atlantis
 
Регистрация: 18.03.2012
Сообщений: 95

Сообщение от Blizzart
Не пойму как сделать, чтобы margin-top переставал изменяться
Не совсем понял, что именно не должно изменять значение.
Значение так же изменяется в процессе работы анимации.
Ответить с цитированием
  #3 (permalink)  
Старый 08.05.2012, 09:58
Аспирант
Отправить личное сообщение для Blizzart Посмотреть профиль Найти все сообщения от Blizzart
 
Регистрация: 03.02.2010
Сообщений: 63

Я просто не знаю как это работает по логике jquery, так бы я сделал если бы это был actionscript. Допустим без анимации:
$('.talksButton:has(p#bottomA)').mousedown(function () {
if ($('#scroll').css('margin-top') == -350) {	 $('#scroll').css({marginTop:'=-350'});	 }
else {$('#scroll').css({marginTop:'-=35'}); }
}); 
});

я предполагал, что когда значение станет margin-top:-350px, каждый клик будет приравнивать marginTop:'=-350', то есть блок никуда больше двигаться не будет. но когда доходит до -350px, всё равно продолжает вычитаться -35px.
Ответить с цитированием
  #4 (permalink)  
Старый 08.05.2012, 13:05
Аспирант
Отправить личное сообщение для atlantis Посмотреть профиль Найти все сообщения от atlantis
 
Регистрация: 18.03.2012
Сообщений: 95

Я не обратил внимание сразу... Вам нужно выставить конкретное значение (-350, -35 ...) или изменить значение относительно текущего (собственно это то что у вас и есть в коде, хоть и не совсем правильно)?
Ответить с цитированием
  #5 (permalink)  
Старый 08.05.2012, 16:20
Аспирант
Отправить личное сообщение для Blizzart Посмотреть профиль Найти все сообщения от Blizzart
 
Регистрация: 03.02.2010
Сообщений: 63

atlantis, спасибо, что обратили внимание на мою тему. я пытаюсь сделать обычный скролл текста с помощью изменение положения блока(на 35px за клик) и overflow. у меня всё работает, кроме того что дойдя до конца(здесь это -350px) блок с текстом при клике продолжает подниматься, таким способом я хотел просто ограничить его перемещение.

Последний раз редактировалось Blizzart, 08.05.2012 в 16:25. Причина: случайно
Ответить с цитированием
  #6 (permalink)  
Старый 08.05.2012, 18:53
Аспирант
Отправить личное сообщение для atlantis Посмотреть профиль Найти все сообщения от atlantis
 
Регистрация: 18.03.2012
Сообщений: 95

$(document).ready(function() { 
      $('.talksButton:has(p#topA)').click(function () {
if ($('#scroll').css('margin-top') == 360) {	 $('#scroll').animate({marginTop:'+=0'});	 }
else {$('#scroll').animate({marginTop:'+=35'}); }
}); 
       $('.talksButton:has(p#bottomA)').mousedown(function () {
if ($('#scroll').css('margin-top') <= -350) {	 $('#scroll').css({marginTop:'-350'});	 }
else {$('#scroll').animate({marginTop:'-=35'}); }
}); 
});
Ответить с цитированием
  #7 (permalink)  
Старый 15.05.2012, 12:47
Аспирант
Отправить личное сообщение для Blizzart Посмотреть профиль Найти все сообщения от Blizzart
 
Регистрация: 03.02.2010
Сообщений: 63

atlantis, спасибо, за поправку, но, к сожалению, это не изменило работу скрипта.
я изменил скрипт так, что он стал работать лучше, но всё равно не так как я задумывал. с положительными значениями работает нормально, а с отрицательными делает по своему, например, в таком варианте блок перестает перемещаться дальше при значение -105px, то есть не доходит до -350px. с анимацией он проскакивает значение если быстро нажимать на кнопку. в условие , наверное, надо какой-то диапазон значений указать...
var st = $('#scroll');
$('.talksButton:has(p#topA)').click(function () {
if (st.css('margin-top') == '0px') {     st.css('margin-top'), '0px';    }
else {st.css({marginTop:'+=35px'}); }
});
  $('.talksButton:has(p#bottomA)').click(function () {
if (st.css('margin-top') <= '-350px') {     st.css('margin-top'), '-350px';   }
else {st.css({marginTop:'-=35px'}); }
});
}

Последний раз редактировалось Blizzart, 15.05.2012 в 12:51. Причина: про анимацию
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2012, 03:01
Аспирант
Отправить личное сообщение для Blizzart Посмотреть профиль Найти все сообщения от Blizzart
 
Регистрация: 03.02.2010
Сообщений: 63

Вот этот вариант работает как надо!
$('.talksButton:has(p#topA)').click(function () {
var st = parseInt($('#scrollinner').css('margin-top'));
if (st > 0) {     $('#scrollinner').css('margin-top'), '0px';    }
else {$('#scrollinner').css({marginTop:'+=33.5px'}); }
});
$('.talksButton:has(p#bottomA)').click(function () {
var st = parseInt($('#scrollinner').css('margin-top'));
if (st <= -165) {     $('#scrollinner').css('margin-top'), '165.5px';   }
else {$('#scrollinner').css({marginTop:'-=33.5px'}); }
});

В общем понял что в условие можно сравнивать только числовые значения. А как быть если я например хочу проверить display?
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2012, 09:14
Аспирант
Отправить личное сообщение для atlantis Посмотреть профиль Найти все сообщения от atlantis
 
Регистрация: 18.03.2012
Сообщений: 95

Что значит
Сообщение от Blizzart
в условие можно сравнивать только числовые значения
???
Ответить с цитированием
  #10 (permalink)  
Старый 16.05.2012, 09:53
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Blizzart Посмотреть сообщение
В общем понял что в условие можно сравнивать только числовые значения.
вообще, можно даже строки на больше\меньше сравнивать
alert( "Б" > "А" );

Сообщение от Blizzart Посмотреть сообщение
А как быть если я например хочу проверить display?
сравнивайте оператором равенства.
$element.css("display") === "none"

а ещё лучше, использовать возможности квери - селектор :visible . вы ведь её не просто так подключали?
$element.is(":visible") // элемент виден
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплывающий блок посредством CSS анимации и JS Zub Элементы интерфейса 5 19.01.2012 14:10
Как "заморозить" конечный результат css анимации? FINoM Общие вопросы Javascript 8 28.12.2011 17:52
стили Css в зависимости от высоты активной области браузера Vladimir_Kl Javascript под браузер 3 23.03.2011 16:04
JQuery CSS анализатор javascript jQuery 2 15.08.2010 21:27
Подскажите по CSS меню Александр_1988 Элементы интерфейса 1 17.05.2010 11:58