Ответ 1
Если вы хотите переключить несколько значений для одного и того же свойства, вам нужно вручную создать текст свойства (fiddle):
function createToggleFunction(element$) {
var transforms = {
flip: 'rotateX(120deg)',
spin: 'rotateZ(180deg)',
};
var state = {};
return function(transform) {
state[transform] ^= true;
var text = "";
for(var key in transforms) {
if(state[key]) text += transforms[key] + ' ';
}
element$.css('transform', text);
};
}
var toggle = createToggleFunction($('#box'));
$("#flipBtn").on("click", function() {
toggle('flip');
});
$("#spinBtn").on("click", function() {
toggle('spin');
});
Более простым решением было бы иметь два вложенных элемента для представления "окна", причем одно из преобразований применяется к внешнему, а одно - к внутреннему:
(см. эта отредактированная версия jblasco fiddle)
#spinner {
width: 100px;
height: 100px;
transition: all 1s;
}
#flipper {
width: 100%;
height: 100%;
transition: all 1s;
border: 1px solid blue;
}
HTML:
<div id="spinner">
<div id="flipper">
a
</div>
</div>
JQuery
$("#flipBtn").on("click", function() {
$("#flipper").toggleClass("flip");
});
$("#spinBtn").on("click", function() {
$("#spinner").toggleClass("spin");
});