ホームページ > ウェブフロントエンド > CSSチュートリアル > css3 アニメーション プロパティの変換例のチュートリアル

css3 アニメーション プロパティの変換例のチュートリアル

零下一度
リリース: 2017-06-16 17:34:18
オリジナル
1848 人が閲覧しました

フロントエンドであろうとデザイナーであろうと、Web ページの 2 次元空間での操作にはすでに慣れており、JS を使用したタイムライン アニメーションの処理にはすでに慣れていると思います。今日から、いくつかの「新しい」もの、Web ページの 3 次元、純粋な CSS で実装されたアニメーションについて共有します。紙面の都合上、基本的なものから複雑な 3D アニメーションまで 3 ~ 4 回に分けて説明します。まずは、基本的なことから始めましょう。これらの知識は、ほとんどが資料に基づいて個人的に理解したものです。したがって、多くの学生が理解している内容とは異なる場合や、矛盾している場合もありますので、記事の下にある間違いを皆さんに指摘していただき、一緒に学んでいただければと思います。

以前に絶対位置決めを使用したときに、すでに Z 軸についての予備的な接触がありましたが、ここでは、より強力な属性である Transform を導入します。

文字通りの意味からわかるように、Transform は変換を意味し、その値には主に回転、傾斜、スケール、平行移動、および行列変換行列が含まれます。

今回は主に回転を使用して例を作成します。これは、後で他のパラメータを 1 つずつ置き換えるだけで、その使用法を理解できるためです。

3D Transform での回転には、rotateX(角度) X 軸回転、rotateY(角度) Y 軸回転、rotateZ(角度) Z 軸回転の 3 つの方法があります。

XYZは平面を回転させる軸を示し、中の値がその角度を表します。より鮮明にするには、この図を見てください


transform: perspective(800);
ログイン後にコピー

または、perspective 属性を直接使用してください:


perspective: 800;
ログイン後にコピー

perspective は、キャンバス (親要素) に書くことも、要素自体に直接書くこともできます、キャンバスのバリアントが 1 つしかない場合、ほとんど違いはありません。しかし、キャンバス上に複数のバリエーションがある場合、2 つの書き込み方法の違いはすぐにわかります。この図のように、黄色の部分はカラーブロックに直接パースを書いており、紫の部分はキャンバスをパース要素として親コンテナにパースを書いているため、子要素の形状が異なります。 。

遠近感の値は、3D変形効果の強度を決定します。この値は、おおよその距離として理解できます。大きいほど、オブジェクトから遠くなります。遠くにある立方体(ルービックキューブなど)が回転している場合と同様に、視覚的な効果は相対的に弱くなりますが、目の前でルービックキューブが回転している場合には、その効果はより強くなります。

そしてここでは、新しい Transform パラメータ、translateZ を使用します。

RotateZ を使用すると、すでに Z 軸を見つけることができ、translateZ を使用して Z 軸の座標を処理できます。要素が目の前に近くまたは遠くに見えるようにします。その値は、親要素のパースペクティブ値に基づきます。

たとえば、親要素のパースペクティブ値が800の場合、子要素のtranslateZの値が小さいほど、子要素は遠くにあり、小さく見えます。子要素のtranslateZが800に近いが800未満(790+など)の場合、要素は画面全体に表示されます(ブラウザを超えることに注意してください)。これは、要素が次の場所に到着したことを意味するためです。目の前に小さな葉があり、その後ろにもすべてを覆うことができます。子要素の数が 800 を超えると、その要素が目の奥に到達し、頭の後ろにあるものが見えなくなり、要素が消えてしまいます。

(ここで少し触れておきますが、上の 3 つの平面回転の図では、Y 軸または Y 軸が 90 度回転すると、グラフィックスが消えることがわかります。これは、90 度で平面が接触しているためです。視線は平行で面に厚みがないため、角度が大きくなると再び現れます)

遠近法について簡単に説明した後、属性を見てみましょう。視点の原点、視点の原点。

この属性は理解しやすいです。フラッシュを使用できる場合、パースペクティブ原点はアニメーション化するときにこの配置ポイントを中心に回転します。スピンとか。 CSS3 のデフォルトの視点原点は要素の中心です。

遠近感と変換ができたら、transform-style 属性を使用します。これには、 flat と prepare-3d という 2 つのパラメーターがあります。 flat はデフォルト値で、平面を示します。後者、preserve-3d は 3D パースペクティブを示します。

これは 3D 空間を開くためのメソッドであることを簡単に理解できます。


transform-style: preserve-3d;
ログイン後にコピー

は単なるスイッチです。フラットを使用しない限り、この属性は画像に影響を与えません。

3D世界里还有一个原理就是,你无法穿过一个物体看到他后面的物体,除非这个物体是透明的,这里我们就用到一个属性,backface-visibility,当他的值为hidden的时候,就是正常的3D世界,当不写这个属性的时候…….我建议大家试试。

现在简单的几何原理都有了,我们可以让平面变3D的过程动态的演示出来了,就是css3的 Animation !

在了解Animation之前,我们必须了解另一个特殊的东西,Keyframes。

这里用过flash的同学一看就能明白,就是关键帧,每一个关键帧代表动画的一个过程节点,Keyframes具有其自己的语法规则,他的命名是 由”@keyframes”开头,后面紧接着是这个“动画的名称”加上一对花括号“{}”,括号中就是一些不同时间段样式规则,有点像我们css的样式写 法一样。例如:


@-moz-keyframes name{     0% {       -moz-transform:rotateY(0deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     25% {       -moz-transform:rotateY(90deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     50% {       -moz-transform:rotateY(180deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     75% {       -moz-transform:rotateY(90deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     100% {       -moz-transform:rotateY(0eg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }
  }
ログイン後にコピー

这里,name是动画的名称,百分比里边只要写你要实现的动画就行,可以写位移啊,色值变化啊,透明度变化啊等等。

然后我们再看一下Animation的几个常用属性:


animation-name:'name';/*动画属性名,也就是我们前面keyframes定义的动画名*/animation-duration: 2s;/*动画持续时间*/animation-timing-function: linear;/*动画频率,有匀速,先快后慢    linear:动画以匀速运动
ease:默认值,开始慢,中间快,结束慢,不对称
ease-in:开始慢,后面快
ease-out:开始快,后面慢
ease-in-out:开始慢,中间快,结束慢,对称(注意与ease的区别)
cubic-bezier(n,n,n,n):可以使用cubic-bezier自定义速度,n的取值从0到1*/animation-delay: 2s;/*动画延迟时间*/animation-iteration-count: 1;/*定义循环资料,infinite为无限次*/animation-direction: alternate;/*定义动画方式, normal 动画仅正向播放。 alternate 动画正向播放奇数次迭代,并反向播放偶数次迭代。在反向播放周期中,与 animation-timing-function 关联的值也会反转。*/
ログイン後にコピー

这些属性,看字面就能理解了,就不详细解释,用在例子里是最形象的。这里先写一个简单平面旋转的例子,就本例子而言,webkit核心的浏览器处理变型跟动画明显是最好的,而moz下会有明显的锯齿出现。


  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style>
*{margin:0;
padding:0;}
.wrapper1{
    width:150px;
    height:191px;
    border:#eee 1px solid;
    border-radius:10px;
    padding:2px;    float:left;
    margin:200px 0 0 50px;    -moz-perspective:800px;      -moz-transform-style:preserve-3d;      -webkit-perspective:800px;      -webkit-transform-style:preserve-3d;      -moz-backface-visibility:;    -webkit-backface-visibility:hidden;
}
.box1{
    width:150px;
    height:191px;
    background:url(http://www.internetke.com/uploads/imgbg/other/rut.jpg);
    border-radius:10px;    -webkit-animation-name:wobble;  -webkit-animation-duration: 5s;  -webkit-animation-timing-function: linear;  -webkit-animation-delay: 0;  -webkit-animation-iteration-count: infinite;  -webkit-animation-direction: ;  -moz-animation-name:wobble;  -moz-animation-duration: 5s;  -moz-animation-timing-function: linear;  -moz-animation-delay: 0;  -moz-animation-iteration-count: infinite;  -moz-animation-direction: ;
}
@-webkit-keyframes wobble{     0% {          -webkit-transform:rotateY(0deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     25% {          -webkit-transform:rotateY(90deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     50% {          -webkit-transform:rotateY(180deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     75% {          -webkit-transform:rotateY(90deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     100% {          -webkit-transform:rotateY(0deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }
  }
@-moz-keyframes wobble{     0% {           -moz-transform:rotateY(0deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     25% {           -moz-transform:rotateY(90deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     50% {           -moz-transform:rotateY(180deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     75% {           -moz-transform:rotateY(90deg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }     100% {           -moz-transform:rotateY(0eg) rotateX(0deg) rotateZ(0deg) translateZ(0px);
     }
  }</style>
</head>
<body>
<p class="wrapper1">
    <p class="box1"></p>
</p>
</body>
</html>
ログイン後にコピー

View Code

题外话:希望大家不要因为IE9以下版本的不兼容就延迟学习新的东西,那就会处处比别人慢一步。另外,从Safari开始,浏览器已经可以由3D函数触发硬件加速。

以上がcss3 アニメーション プロパティの変換例のチュートリアルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート