CSS 过渡和变换
CSS Tranisitions and Transforms
我目前正在做一个需要 Windows 10 tiles/blocks 像动画 (like this) 的项目。
每个 tile/block 具有以下结构。
<div class="wrapper">
<div class="block-1">
<p>some text</p>
</div>
<div class="block-2">
<p>some other text</p>
</div>
</div>
我想制作这样的动画,block-1
最初应该覆盖 wrapper
的整个 space。 10 秒后,block-2
应从 wrapper
底部滑出,并将 block-1
推出 wrapper
。再次间隔 10 秒后,block-1
应从 wrapper
顶部滑出并将 block-2
推出 wrapper
。这应该每 10 秒进行一次。
在动画过程中,方块不应该相互重叠,而是在占据wrapper
的同时相互推动。(就像Windows10块动画一样。)
动画应该有一个整齐的过渡。我尝试使用 CSS 转换,但无法完美实现。
如果有人能做到这一点,对我帮助很大
结合使用 jQuery 和 CSS 转换,根据您的 HTML 在大约 15 分钟内完成此操作的示例。
如果您有任何问题,请告诉我!
function slide() {
var transitionPause = 3000;
setTimeout(function() {
$('.wrapper').each(function() {
$(this).find('.slider').toggleClass('active');
slide();
});
}, transitionPause);
}
slide();
.wrapper {
width: 100px;
height: 100px;
overflow: hidden;
}
.slider {
height: 200%;
transition: transform 1s;
}
.slider.active {
transform: translateY(-50%);
}
.block {
height: 50%;
}
/* styles unrelated to the animation: */
.block-1 { background: pink; }
.block-2 { background: teal; }
p {
color: white;
margin: 0;
padding: 1em;
font-family: sans-serif;
}
body {
background: #333;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<div class="slider">
<div class="block block-1">
<p>Block 1</p>
</div>
<div class="block block-2">
<p>Block 2</p>
</div>
</div>
</div>
我目前正在做一个需要 Windows 10 tiles/blocks 像动画 (like this) 的项目。
每个 tile/block 具有以下结构。
<div class="wrapper">
<div class="block-1">
<p>some text</p>
</div>
<div class="block-2">
<p>some other text</p>
</div>
</div>
我想制作这样的动画,block-1
最初应该覆盖 wrapper
的整个 space。 10 秒后,block-2
应从 wrapper
底部滑出,并将 block-1
推出 wrapper
。再次间隔 10 秒后,block-1
应从 wrapper
顶部滑出并将 block-2
推出 wrapper
。这应该每 10 秒进行一次。
在动画过程中,方块不应该相互重叠,而是在占据wrapper
的同时相互推动。(就像Windows10块动画一样。)
动画应该有一个整齐的过渡。我尝试使用 CSS 转换,但无法完美实现。
如果有人能做到这一点,对我帮助很大
结合使用 jQuery 和 CSS 转换,根据您的 HTML 在大约 15 分钟内完成此操作的示例。
如果您有任何问题,请告诉我!
function slide() {
var transitionPause = 3000;
setTimeout(function() {
$('.wrapper').each(function() {
$(this).find('.slider').toggleClass('active');
slide();
});
}, transitionPause);
}
slide();
.wrapper {
width: 100px;
height: 100px;
overflow: hidden;
}
.slider {
height: 200%;
transition: transform 1s;
}
.slider.active {
transform: translateY(-50%);
}
.block {
height: 50%;
}
/* styles unrelated to the animation: */
.block-1 { background: pink; }
.block-2 { background: teal; }
p {
color: white;
margin: 0;
padding: 1em;
font-family: sans-serif;
}
body {
background: #333;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<div class="slider">
<div class="block block-1">
<p>Block 1</p>
</div>
<div class="block block-2">
<p>Block 2</p>
</div>
</div>
</div>