GreenSock Animation Platform (GSAP) с TweenLite
/ TweenMax
обеспечивает гораздо более плавные переходы с гораздо большей настройкой, чем переходы jQuery или CSS3. Чтобы анимировать свойства CSS с помощью TweenLite / TweenMax, вам также понадобится их плагин под названием «CSSPlugin». TweenMax включает это автоматически.
Сначала загрузите библиотеку TweenMax:
Или облегченную версию, TweenLite:
Затем вызовите анимацию:
var myObj= document.getElementById("myDiv");
// Syntax: (target, speed, {distance, ease})
TweenLite.to(myObj, .7, { x: 500, ease: Power3.easeOut});
Вы также можете вызвать ее с помощью селектора идентификаторов:
TweenLite.to("#myID", .7, { x: 500, ease: Power3.easeOut});
Если у вас есть jQuery загружены, вы можете использовать более расширенные широкие селекторы, как и все элементы, содержащие определенный класс:
// This will parse the selectors using jQuery's engine.
TweenLite.to(".myClass", .7, { x: 500, ease: Power3.easeOut});
Для получения полной информации см .: Документация TweenLite
Согласно их веб-сайту: «TweenLite - чрезвычайно быстрый, легкий и гибкий инструмент анимации, который служит основой GreenSock Animation Platform (GSAP)».
Причина, по которой функциональные объекты поддерживают произвольные атрибуты, заключается в том, что до того, как мы добавили эту функцию, несколько фреймворков (например, парсеров-генераторов) злоупотребляли строками документации функций (и другими атрибутами функциональных объектов), чтобы спрятать их на - информация о функциях, которая была для них критически важна - необходимость в такой ассоциации произвольных именованных атрибутов с объектами функций, доказываемых на примерах, поддерживающих их непосредственно в языке, а не позволяя (например) злоупотреблять строками документации, была довольно очевидна. 1280] Для поддержки произвольных атрибутов экземпляра тип должен предоставить каждому из своих экземпляров __ dict __
- это не проблема для функций (которые в любом случае никогда не являются крошечными объектами), но вполне может быть для других объектов. предполагал, что будет крошечным.Сделав тип объекта
максимально легким, а также предоставив __ слоты __
, чтобы можно было избежать отдельных экземпляров __ dict __
в подтипах объекта
, мы в меру своих возможностей поддерживали небольшие специализированные "ценностные" типы.
Алекс Мартелли опубликовал отличный ответ на ваш вопрос. Для тех, кто ищет хороший способ выполнения произвольных атрибутов для пустого объекта, сделайте следующее:
class myobject(object):
pass
o = myobject()
o.anything = 123
Или более эффективно (и лучше задокументировано), если вы знаете атрибуты:
class myobject(object):
__slots__ = ('anything', 'anythingelse')
o = myobject()
o.anything = 123
o.anythingelse = 456
Причина в том, что экземпляр of object ()
является вырожденным частным случаем. Это «объект», но он не предназначен для использования сам по себе.
Думайте о объекте
как о временном приеме, связывающем типы и классы старого стиля. В Python 3.0 он уйдет в небытие, потому что он больше не будет использоваться как часть
class Foo( object ):
pass
f = Foo()
f.randomAttribute = 3.1415926