Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add suppot for change positions (x, y, z) #42

Open
belozer opened this issue Nov 6, 2016 · 13 comments
Open

Add suppot for change positions (x, y, z) #42

belozer opened this issue Nov 6, 2016 · 13 comments
Labels

Comments

@belozer
Copy link
Member

belozer commented Nov 6, 2016

Example:

animate.position('x', '+100px', {duration: '200ms', delay: '1s'});
animate.position('y', '-100px', {duration: '200ms', delay: '1s'});
animate.position('z', '100px', {duration: '200ms', delay: '1s'});

or

animate.position({x: '100px', y: '-100px', z: '10px', duration: '200ms', delay: '1s'});

or

animate.start({x: '100px', y: '-100px', z: '10px', duration: '200ms', delay: '1s'});
@belozer belozer added the feature label Nov 6, 2016
@belozer belozer changed the title Add suppot for change positios (x, z, y) Add suppot for change positions (x, z, y) Nov 6, 2016
@belozer belozer changed the title Add suppot for change positions (x, z, y) Add suppot for change positions (x, y, z) Nov 6, 2016
@skad0
Copy link

skad0 commented Nov 7, 2016

How z will work?

@belozer
Copy link
Member Author

belozer commented Nov 7, 2016

@belozer
Copy link
Member Author

belozer commented Nov 7, 2016

@skad0 This is a temporary name. Here the idea is whether to make such functionality or not.

@skad0
Copy link

skad0 commented Nov 7, 2016

@belozyorcev it should be, but i think name little bit confusing
p.s. sorry, i have accidentally deleted my previous comment :-(

@belozer
Copy link
Member Author

belozer commented Nov 7, 2016

name little bit confusing
@skad0 Yes. I agree..

By analogy with CSS may be called its transform

@belozer
Copy link
Member Author

belozer commented Nov 7, 2016

Have to decide with a convenient API.

@belozer
Copy link
Member Author

belozer commented Nov 7, 2016

Example:
animate.transform3D({x: '100px', y: '-100px', z: '10px', duration: '200ms', delay: '1s'});
or
animate.transform('3d', {x: '100px', y: '-100px', z: '10px', duration: '200ms', delay: '1s'});
or
animate.translate3d({x: '100px', y: '-100px', z: '10px', duration: '200ms', delay: '1s'});

@Flyer3d
Copy link
Contributor

Flyer3d commented Nov 7, 2016

Тогда в параметры я бы еще добавил easing

@Flyer3d
Copy link
Contributor

Flyer3d commented Nov 7, 2016

Мне кажется 3D в названии/параметрах избыточно. Параметры XYZ могут быть необязательными или нулевыми по умолчанию

@Flyer3d
Copy link
Contributor

Flyer3d commented Nov 7, 2016

Мне кажется наиболее точной такая запись:

animate.translate({x: '100px', y: '-100px', z: '10px', duration: '200ms', delay: '1s', easing: 'linear'})

так как мы именно перемещаем объект в заданную точку.

Также можно ввести функции

animate.setPosition({x: '100px', y: '-100px', z: '10px'})
animate.setOrigin({x: '100px', y: '-100px', z: '10px'})

Для задания начальной позиции и точки вращения

@belozer
Copy link
Member Author

belozer commented Nov 7, 2016

У Transform в CSS есть куча разных методов

2016-11-07 16-27-13

Можно каждый сделать на каждый CSS метод аналогичный в корне блока.
А можно обернуть всё это в transform метод

@Flyer3d
Copy link
Contributor

Flyer3d commented Nov 7, 2016

В принципе можно сделать универсальный метод transform, и к нему алиасы translate, rotate, scale

@belozer
Copy link
Member Author

belozer commented Jul 17, 2018

Пока склоняюсь к чему-то такому:

// Корректировка отдельных транфсормаций
animate.translate3d('100px', '-100px', '10px', { duration: '200ms', delay: '1s', onEnd : () => {} });
animate.translateY('100px', { duration: '200ms', delay: '1s'});
animate.scaleZ('100px', { duration: '200ms', delay: '1s'});

// Несколько трансформаций одновременно
// Возможно стоит оставить только этот способ и не распылятся на "100 методов"
// Дополнительно проще контролировать кэлбэки анимаций
animate.tranform({
    translate3d : '100px, -100px, 200px', // → string или string[]?...
    scaleZ : '20px'
}, { duration: '200ms', delay: '1s', onEnd : () => {} });

Вот только есть размышления над тем, как должен работать tranform... Добавлять/обновлять свойства или заменять полностью.

Возможно имеет смысле сделать 2 метода. transform и addTransform

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants