根據要求應答。
請參閱更詳細的小提琴..
(我現在的版本是使用二維變換。我做這個之前,我發現這個問題) 這可能幫助,但.. http://jsfiddle.net/pixelass/a74Eu/32/
我正在爲此做一個jQuery插件。
我目前的jQuery(請看小提琴)
$(document).ready(function() {
var button = $('button#folder'),
buttonSet = $('button#setter'),
fold = $('.wrapper'),
odd = $('.wrapper .part:nth-child(1)'),
even = $('.wrapper .part:nth-child(2)'),
gVal = $('input.perc').attr('value')/25,
hVal = $('input.heig').attr('value'),
shadHeight = hVal/2,
closed = false;
buttonSet.click(function() {
gVal = $('input.perc').attr('value')/25;
hVal = $('input.heig').attr('value');
fold.find('.part').css('height',hVal + 'px');
shadHeight = hVal/2;
});
button.click(function() {
var rePos = hVal/4 * gVal,
rePosWrap = rePos * 2,
newDeg = 90/4 * gVal,
newScal = 1 - (1/4 * gVal);
if (closed) {
button.text('fold');
fold.css('-webkit-transform', 'translateY(0px) translateX(0px)');
odd.css('-webkit-transform', 'skewX(0deg) scaleY(1)').css('box-shadow','-4px 4px 4px rgba(0,0,0,0.2), 0 0 0 rgba(0,0,0,0) inset, 0 0 0 rgba(0,0,0,0) inset');
even.css('-webkit-transform', 'skewX(0deg) scaleY(1)').css('box-shadow','-4px 4px 4px rgba(0,0,0,0.2), 0 0 0 rgba(0,0,0,0) inset, 0 0 0 rgba(0,0,0,0) inset');
$(".partwrap").each(function() {
$(this).css('-webkit-transform', 'translateY(0px)');
});
fold.toggleClass('close');
closed = false;
} else {
button.text('unfold');
fold.css('-webkit-transform', 'translateY(-' + rePos + 'px) translateX(' + rePos + 'px)');
odd.css('-webkit-transform', 'skewX(' + newDeg + 'deg) scaleY(' + newScal + ')').css('box-shadow','-4px 4px 8px rgba(0,0,0,0.2), 0 ' + shadHeight + 'px ' + shadHeight + 'px rgba(111,111,111,0.2) inset, 0 -' + shadHeight + 'px ' + shadHeight + 'px rgba(255,255,255,0.2) inset');
even.css('-webkit-transform', 'skewX(-' + newDeg + 'deg) scaleY(' + newScal + ')').css('box-shadow','-4px 4px 8px rgba(0,0,0,0.2), 0 ' + shadHeight + 'px ' + shadHeight + 'px rgba(111,111,111,0.2) inset, 0 -' + shadHeight + 'px ' + shadHeight + 'px rgba(0,0,0,0.2) inset');
$(".partwrap").each(function() {
var goUp = $(".partwrap").index(this) * rePosWrap;
$(this).css('-webkit-transform', 'translateY(-' + goUp + 'px)');
});
fold.toggleClass('close');
closed = true;
console.log('-webkit-transform', 'skewX(' + newDeg + 'deg) scaleY(' + newScal + ')');
}
});
});
你還需要嗎?我正在爲這種動畫製作一個jQuery插件。如果需要,我可以展示我的進展。否則,我會等待插件準備好公開。 – pixelass
@pixelass那太棒了。這個項目比任何事情都更有趣,但它仍然是我感興趣的東西。我特別喜歡看到一個內容不可知的版本。 –
我有一個完全動態的版本(使用2d trasnsforms雖然傾斜雖然..所以三維視圖是一個角度)。我有範圍控制器來控制摺疊部分的高度和「活」摺疊百分比。我會用我的第一個版本發佈答案。 (沒有實時更改範圍控制器) – pixelass