2012-03-09 2 views
1

Я пытаюсь применить переход css3 на лету, но jquery ничего не делает.

код

var test = $("#test"); 
test.css("transition","all 500ms"); 

я также попытался

var delay = "500ms"; 

test.css({ 
    'transition': 'all ' + delay, 
    '-moz-transition': 'all ' + delay, 
    '-webkit-transition': 'all ' + delay, 
    '-o-transition': 'all ' + delay 
}); 

Что случилось с моим кодом?

Обновлено:

«JQuery не делать ничего» буквально означает, что он не применяется стиль к элементу. Я не имею в виду, что элемент не перемещается.

Исправление:

это на самом деле работает ... это был мой браузер.

+0

вы проверили на отладчик, если эти стили действительно применяются? не только, но глядя на него? – Joseph

+0

@Joseph // Да .. я проверил его. jquery не применял никаких стилей. Я пытаюсь выяснить, почему – Moon

+0

Используйте .addClass, чтобы добавить класс css, который определяет ваш переход: работает в одной строке кода. См. Мой ответ ниже. – frenchie

ответ

0
var delay = "500ms", 
    test = $("#test"); 

test.css({ 
    'transition': 'all ' + delay, 
    '-moz-transition': 'all ' + delay, 
    '-webkit-transition': 'all ' + delay, 
    '-o-transition': 'all ' + delay 
}).on('click', function() { 
    $(this).css({ left : '+=100' }); 
});​ 

http://jsfiddle.net/YwfjF/

Вы можете видеть, что это работает, но вы должны изменить свойство для того, чтобы быть анимированными.

Вот отличная ссылка для переходов CSS3: https://developer.mozilla.org/en/CSS/transition (обратите внимание на ссылки внизу, описывающие разные части декларации перехода).

+0

Jasper // странно ... он не работает на моем хроме ;; но он работает на моем ff. Должен быть мой браузер. – Moon

+0

@Moon Поскольку вы погружаетесь в мир экспериментальных функций здесь, я рекомендую прочитать об общих ошибках использования префиксов vender: http://paulirish.com/2012/vendor-prefixes-are-not-developer-friendly/ – Jasper

+0

Понятное дело о дате голосования. Мне всегда нравится знать, как улучшить код. – Jasper

1

Я не думаю, что вы понимаете, как работают CSS3-переходы. Параметры перехода CSS3 управляют тем, как обрабатываются свойства для объекта, и получают ли они немедленный эффект, или инициируют ли они переход, чтобы он переходил к новому значению с течением времени.

У вас должно быть фактическое изменение свойства, чтобы иметь переход. Установка самого значения перехода не вызывает переход - он просто устанавливает правила, когда переход произойдет в будущем.

В вашем примере вам необходимо изменить какое-либо значение, чтобы увидеть изменение. Например:

test.css("height", "100px"); 

Поскольку у вас есть transition: all, что повлечет за собой переход от текущего значения высоты на новое значение высоты.

Например, вот переход CSS3, который я создал для другого вопроса пару дней назад: http://jsfiddle.net/jfriend00/P2H4Z/.

В этом примере есть этот CSS отношение к переходу:

.element 
{ 
    background: blue; 
    position: absolute; 
    left: -100%; 
    padding: 0 10px; 

    -moz-transition: left 1s; 
    -webkit-transition: left 1s; 
    -o-transition: left 1s; 
    -ms-transition: left 1s; 
    transition: left 1s; 
} 


.element.seen { 
    left: 0; 
} 

Это создает почву для перехода left собственности. Это не вызывает переход. Переход может быть инициирован путем внесения изменений в свойство left на товар с class="element". Это изменение значения left может быть сделано:

  1. Добавление класса для элемента или родительского элемента, который вызывает различные left значения вступили в силу с правилами CSS.
  2. Срабатывание класс псевдо вступили в силу (например, :hover)
  3. Программным изменения значения .left с JavaScript.

В этом конкретном примере seen класса добавляется к объекту, который вызывает левое значение для перехода от -100% к 0.Поскольку определяется transition left 1s, браузер переходит от текущего значения -100% к новому значению 0 в течение 1 секунды, и, таким образом, объект будет помещаться на место.

+0

jfriend00 // Я понимаю, что ... обновлено – Moon

0

Шаг 1: определить класс CSS для переходов:

.CustomTransitionClass{ 
    -webkit-transition:all 0.5s ease; 
    -moz-transition:all 0.5s ease; 
    -o-transition:all 0.5s ease; 
    transition:all 0.5s ease;} 

Шаг 2: добавить класс:

$("#test").addClass('CustomTransitionClass'); 
+0

Или вы даже можете применить 'width' через класс, тогда вы удаляете код CSS из JS-кода (что обычно полезно для обслуживания кода). Я делаю это, когда я запускаю анимации CSS3, в основном в очередях различных классов в разное время, чтобы создать многоступенчатую анимацию. – Jasper

+0

Да, я действительно использую его так, чтобы показать пользователю что-то, что произошло на блоке на странице: $ ('# MyDiv'). AddClass ('BrightRedBackGround CustomTransition'); $ ('# MyDiv') removeClass ('BrightRedBackGround'). – frenchie

+0

frenchie вы просто не ответили на вопрос. Я не думаю, что если кто-то задаст вопрос, ответ должен быть другим. Я согласен с тем, что вы можете получить тот же эффект с классом css, но если вы хотите полностью настроить, и хотите, чтобы его можно было повторно использовать в качестве плагина, ваш ответ просто неправильный ... вы просто кодируете вместо кодирования. По-моему, вы пишете код для повторного использования, иначе почему вы должны вообще писать о чем-то ... просто найдите то, что для вас написало другое! – Dinuz

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

  • Нет связанных вопросов^_^