Css3 Animation 动画原则一

2019-03-28 17:29:55 浏览数 (1)

挤压和拉伸 (Squash and stretch)

挤压和拉伸

这是物体存在质量且运动时质量保持不变的概念。当一个球在弹跳时,碰击到地面会变扁,恢复的时间会越来越短。

创建对象的时候最有用的方法是参照实物,比如人、时钟和弹性球。

当它和网页元件一起工作时可能会忽略这个原则。DOM 对象不一定和实物相关,它会按需要在屏幕上缩放。例如,一个按钮会变大并变成一个信息框,或者错误信息会出现和消失。

尽管如此,挤压和伸缩效果可以为一个对象增加实物的感觉。甚至一些形状上的小变化就可以创造出细微但抢眼的效果。

HTML
代码语言:javascript复制
<h1>Principle 1: Squash and stretch</h1>
<h2><a href="https://cssanimation.rocks/principles/" target="_parent">Animation Principles for the Web</h2>
<article class="principle one">
    <div class="shape"></div>
    <div class="surface"></div>
</article>
CSS
代码语言:javascript复制
.one .shape {
 animation: one 4s infinite ease-out;
}

.one .surface {
 background: #000;
 height: 10em;
 width: 1em;
 position: absolute;
 top: calc(50% - 4em);
 left: calc(50%   10em);
}

@keyframes one {
 0%, 15% {
   opacity: 0;
 }
 15%, 25% {
   transform: none;
   animation-timing-function: cubic-bezier(1,-1.92,.95,.89);
   width: 4em;
   height: 4em;
   top: calc(50% - 2em);
   left: calc(50% - 2em);
   opacity: 1;
 }
 35%, 45% {
   transform: translateX(8em);
   height: 6em;
   width: 2em;
   top: calc(50% - 3em);
   animation-timing-function: linear;
   opacity: 1;
 }
 70%, 100% {
   transform: translateX(8em) translateY(5em);
   height: 6em;
   width: 2em;
   top: calc(50% - 3em);
   opacity: 0;
 }
}

body {
 margin: 0;
 background: #e9b59f;
 font-family: HelveticaNeue, Arial, Sans-serif;
 color: #fff;
}

h1 {
 position: absolute;
 top: 0;
 left: 0;
 right: 0;
 text-align: center;
 font-weight: 300;
}

h2 {
 font-size: 0.75em;
 position: absolute;
 bottom: 0;
 left: 0;
 right: 0;
 text-align: center;
}

a {
 text-decoration: none;
 color: #333;
}

.principle {
 width: 100%;
 height: 100vh;
 position: relative;
}

.shape {
 background: #2d97db;
 border: 1em solid #fff;
 width: 4em;
 height: 4em;
 position: absolute;
 top: calc(50% - 2em);
 left: calc(50% - 2em);
}

0 人点赞