2013-05-20 2 views
1

У меня есть следующие CSS:Изменение параметров CSS с помощью Javascript

.makebig { 
    -webkit-animation-name: cssAnimation; 
    -webkit-animation-duration: 1s; 
    -webkit-animation-iteration-count: 1; 
    -webkit-animation-timing-function: ease; 
    -webkit-animation-fill-mode: forwards; 
} 
@-webkit-keyframes cssAnimation { 
    from { 
     -webkit-transform: rotate(0deg) scale(1) skew(0deg) translate(0px); 
    } 
    to { 
     -webkit-transform: rotate(0deg) scale(2) skew(0deg) translate(150px); 
    } 
} 
.makesmall { 
    -webkit-animation-name: cssAnimation1; 
    -webkit-animation-duration: 1s; 
    -webkit-animation-iteration-count: 1; 
    -webkit-animation-timing-function: ease; 
    -webkit-animation-fill-mode: forwards; 
} 
@-webkit-keyframes cssAnimation1 { 
    from { 
     -webkit-transform: rotate(0deg) scale(2) skew(0deg) translate(150px); 
    } 
    to { 
     -webkit-transform: rotate(0deg) scale(1) skew(0deg) translate(0px); 
    } 
} 

И это Javascript:

<script> 
    function ani(fns1) { 
    if (document.getElementById('fns1').getAttribute('clicked') == 'false') 
    { 
     document.getElementById('fns1').className = 'makebig'; 
     document.getElementById('fns1').setAttribute('clicked', true); 
    } else { 
     document.getElementById('fns1').className = 'makesmall'; 
     document.getElementById('fns1').setAttribute('clicked', false); 
    } 
} 
</script> 

Код масштабирует объект в два раза. Как я могу отправить различные параметры «шкалы» на основе объекта?

Я использую его для увеличения изображений onclick и перехода к оригинальной шкале при втором нажатии. Мои изображения имеют разный размер и положение в тексте, поэтому мне нужно сделать их масштабированными в центре экрана.

+0

Я использую только JS и CSS, но для приложения IOS – jagger

ответ

2

Одним из вариантов было бы использовать переход вместо анимации

.makebig { 
    transition: 1s transform ease; 
} 

, то вы можете установить желаемый конечный преобразование каждого элемента в отдельности с JS и браузер будет анимировать его соответствующим образом

+0

Не уверен, что он подойдет. Я изменил свой первый вопрос с полным текстом. Как вы думаете, это будет работать в моем случае? Я делаю это для браузера IOS. – jagger

+0

Я не уверен, что понимаю, что изменилось. Вот скрипка, демонстрирующая http://jsfiddle.net/qkrby/1/. Вы могли бы довольно легко экстраполировать оттуда, чтобы параметризовать цель и размер. Значит ли это, что яснее? –

+0

да, ты прав! – jagger

1

можно жёстко несколько классов CSS и анимации в соответствии с вашими потребностями:

@-webkit-keyframes scale-1 { 
    from { 
     -webkit-transform: rotate(0deg) scale(1) skew(0deg) translate(0px); 
    } 
    to { 
     -webkit-transform: rotate(0deg) scale(2) skew(0deg) translate(150px); 
    } 
} 


@-webkit-keyframes scale-2 { 
    from { 
     -webkit-transform: rotate(0deg) scale(2) skew(0deg) translate(0px); 
    } 
    to { 
     -webkit-transform: rotate(0deg) scale(3) skew(0deg) translate(150px); 
    } 
} 

#element { 
    -webkit-animation-duration: 1s; 
    -webkit-animation-iteration-count: 1; 
    -webkit-animation-timing-function: ease; 
    -webkit-animation-fill-mode: forwards; 
} 
#element.scale-1 { 
    -webkit-animation-name: scale-1; 
} 

#element.scale-2 { 
    -webkit-animation-name: scale-1; 
} 

и просто жонглировать от названий класса ЯШ:

element.className = 'scale-1'; 
// after some logic 
element.className = 'scale-2'; 
+0

gion_13, не может этого сделать, поскольку мне также нужно будет вычислить размер объекта, его позицию (поплавок влево или вправо) и, возможно, другие параметры для изменения. – jagger

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