見習いSEの脳内見える化ブログ -3ページ目

見習いSEの脳内見える化ブログ

本ブログは変動の激しいIT業界に足を突っ込んでしまった
しがない見習いSEの脳内見える化ブログです。
基本的には己の知識整理ため、
たまには私と同じく道に迷える同志のためになればと思ってます。

前回に引き続き、trabsitionを利用した動作、アニメーションを

試してみました。

今回は、transformsプロパティを活用してみました。

実際の指定値を弄る場合と比べて、

いくつか注意しなければならない点もありそうです。

 

http://sysgole.web.fc2.com/index.html

 

前回同様、左右それぞれの●に色々試してみました。

あとは、しれっと以前から使ってましたが、

メニューバーのアニメーションもこの組み合わせを使ってます。

 

<CSS transforms>
◎transforms
 [特徴・使用上の注意]
 1. 要素に2D変形、または、3D変形を適用する。
 2. マトリクス変形、移動、縮尺、回転、傾斜を利用できる。
 3. 親要素から子要素へのスタイルの継承(値の継承)は無い。※1
 4. 2017/5/4時点でWDの為※2ベンダープレフィックスを利用する。※3
 5. ()内の数値はカンマ区切りで記載する。
 6. X軸(水平)、Y軸(垂直)、Z軸(奥行き)の概念がある。ピンとこない人はグラフを思い出すと良い。
 7. 一つのプロパティで複数のプロパティ値を決められるので組み合わせは熟慮する。
 8. none≠0である。
  9. marginが効かなくなる。
 10.ブロックレベル要素・インライン要素に適用可能。 ※5


 ■transforms: ☆;

  [凡例]
   ■ベンダープレフィックス
   ☆プロパティ値
    matrix() ・・・要素を2D変形させる。
    matrix3d() ・・・要素を3D変形させる。
    translate() ・・・要素の表示位置を移動させる。
    scale() ・・・要素を拡大・縮小させる。
    rotate() ・・・要素を回転させる。
    skew() ・・・要素を傾斜変形させる。
    perspective() ・・・3D変形の遠近効果を調節する。


☆matrix(a, b, c, d, e, f)
 行列を使用して、
 数Cとか線形代数学でしたっけ。
 ここで、行列の概念を思い起こしたり、
 学びなおすよりも、それぞれの値が、
 どのプロパティ値に対応しているかを
 覚えておく方が重要。

 [凡例]
  a ・・・水平方向の縮尺   ・・・scaleX();と同義
  b ・・・垂直方向の傾斜率  ・・・skewY();と同義
  c ・・・水平方向の傾斜率  ・・・skewX();と同義
  d ・・・垂直方向の縮尺   ・・・scaleY();と同義
  e ・・・水平方向の移動距離 ・・・translateX();と同義
  f ・・・垂直方向の移動距離 ・・・translateY();と同義

 ☆こんなプロパティ値もあります。
  none ★初期値
  
☆matrix3d()
 ちょっと数学的要素が多すぎるので、
 今回は割愛。

☆translate()
 [特徴・使用上の注意]
 1. Z軸方向の指定効果がいまいちつかめず。←課題

 要素の表示位置を変更させることが出来る。
 X方向は左右、Y方向は上下、Z方向は奥・手前を指します。
 単位は基本的にどれでも行けそうだが、
 translateZ()プロパティ値ではパーセンテージ値(%)を指定することができない。
 
  transform:translate(X方向の距離, Y方向の距離);
  transform:translateX(X方向の距離);
  transform:translateY(Y方向の距離);
  transform:translateZ(Z方向の距離);
  transform:translate3d(X方向の距離, Y方向の距離, Z方向の距離);

 ☆こんなプロパティ値もあります。
  none ★初期値
  
☆scale()
 [特徴・使用上の注意]
 1. 各要素値を指定しないと、変化が完了した後に消える。変化させない場合は1倍指定する。
 2. z方向をnoneとした際の動きがいまいちつかめない。←課題
 
 X方向は左右、Y方向は上下、Z方向は奥・手前を指すので、
 X: width
 Y: hieght
 に対応していると言えますね。
 ただここでは、元の大きさに対しする比率を指定します。
 0.5: 元のサイズの1/2
 1:   元のサイズと同等
 2:   元のサイズの2倍
 
 マイナス値を指定すると、縮小した後に上下反転します。
 これが正しい挙動なのかは不明ですが…。

  transform:scale(X方向の倍率, Y方向の倍率);
  transform:scaleX(X方向の倍率);
  transform:scaleY(Y方向の倍率);
  transform:scaleZ(Z方向の倍率);
  transform:scale3d(X方向の倍率, Y方向の倍率, Z方向の倍率);

 ☆こんなプロパティ値もあります。
  none ★初期値
  
☆rotate()
 [特徴・使用上の注意]
 1. 角度の指定単位はdeg(degree)もしくは、rad(radian)。
 2. よっぽどの事が無い限り1°=1degとなるdegの方が使い勝手が良いと思う。
 3. 360degで1回転、720degで2回転なので、回転させたい回数に合わせて指定する。
 4. 2D回転=Z軸方向への回転。なので、rotate();=rotateZ();となる。
 5. X・Y・Zはどの軸を回転軸にするかを指す。
 6. rotate3d()を使う事で、複数の回転軸に対する回転角度を指定できる。

  アクロバティックな変化をさせるなら、rotate3d()が便利。
  その他については、どの軸に対して回転させたいかをイメージしながら指定するとよい。

  transform:rotate(回転角度); ・・・Z軸に対する回転角度と同義
  transform:rotateX(X軸に対する回転角度);
  transform:rotateY(Y軸に対する回転角度);
  transform:rotateZ(Z軸に対する回転角度);
  transform:rotate3d(X方向の比率, Y方向の比率, Z方向の比率);

☆skew()
 [特徴・使用上の注意]
 1. 角度の指定単位はdeg(degree)もしくは、rad(radian)。
 2. よっぽどの事が無い限り1°=1degとなるdegの方が使い勝手が良いと思う。

  transform:skewX(X軸の傾斜角度);
  transform:skewY(Y軸の傾斜角度);
  transform:skew(X軸の傾斜角度,Y軸の傾斜角度);    

☆perspective()
 いまいち効果を感じなかったので要確認。

 

 

一部挙動が正しいのかどうなのか怪しい部分あり。

skew()が、正しく動作してるのかと言うところと、

各プロパティ値の、Z軸方向への指定が上手く効いてるのかですね。

そもそも奥行きの概念てどういうときに使うべきなんでしょうね。

頭でイメージ出来てても、いまいちそれを形にできませんでした。

怒涛のメモ書きうpはこれがやりたかったからなんですね~。

エビデンスとは違いますけど、

ちゃんと、自分が分からない事を調べたというアウトプットを

追いたかったんです。

 

それさえ覚えて居れば、次からはロジック考える為の

時間が短縮されますしね。

 

と言うのが、お給料もらって進めている案件で気づきました。

結局、同じ作業やるのに、毎回1からロジック組み立ててちゃ、

いくら時間合っても足りないんです。

 

おかげさまで、

インプット&アウトプットで理解がだいぶ進みました。

 

「何がしたい」が明確になると、「何が必要だ」がハッキリして、

整理も捗りますね。

 

他の方が発信されているを熟読させていただき、

過去に書いた記事も含めて、全てをインプット材料にして、

情報を極力絞ってアウトプットしました。

 

<CSS trabsition>

最終的なアウトプット

http://sysgole.web.fc2.com/index.html

サイドの水玉にマウスオンすると動きます。


◎transition(時間的変化)
 [特徴・使用上の注意]
 1. 経時的な変化(遷移)をさせたい時に使う。
 2. 親要素から子要素へのスタイルの継承(値の継承)は無い。※1
 3. 2017/5/4時点でWDの為※2ベンダープレフィックスを利用する。※3
 4. 各要素に順番あり。下記の順番通り指定する事。
 5. 全要素に適用可能。疑似要素としては、:before疑似要素や:after疑似要素に適用可能。 ※4

 以下のように記載すると、下記のプロパティ値を
 まとめて指定することが出来る。

 ■transition: ◇ 〇s □ △s;

  [プロパティ]
   ■ベンダープレフィックス
   ◇transition-property
   〇transition-duration
   □transition-timing-function
   △transition-delay

 それぞれのプロパティについては、次に記載。

◇transition-property
 変化させる対象を指定するプロパティ値。

 複数のCSSプロパティに変化を適用する場合には、
 変化させるプロパティのリストをカンマ区切りで指定する。

 ◇例 背景と要素の横幅を変更したい。
  background-color:背景色
  width:要素の横幅

  ■transition-property: background-color,height;

 ◇こんなプロパティ値もあります
  all ・・・変化を適用できるプロパティすべてが変化する。★初期値
  none ・・・どのプロパティも変化しない。

  ■transition-property: all;
  ■transition-property: none;

〇transition-duration
 変化にかかる時間を指定するプロパティ値。

 〇例 1秒かけて変化させたい。
  ■transition-duration: 1s

   1sのs=secですね。

 〇こんなプロパティ値もあります
  0 ・・・変化しない★初期値

□transition-timing-function
 変化のタイミング・進行割合を指定する際に使用する。
 変化の進行割合を3次ベジェ曲線で指定する
 
 [プロパティ値]
  ease ・・・開始・終了を滑らかに変化する。★初期値
  linear ・・・一定速度で変化する。
  ease-in ・・・開始だけゆっくり変化する。
  ease-out ・・・終了だけゆっくり変化する。
  ease-in-out ・・・開始と終了をゆっくりにする。
 
 □例 滑らかなアニメーションにしたい。
  ■transition-timing-function: ease;

 □こんなプロパティ値もあります
  cubic-bezier(数値, 数値, 数値, 数値) ・・・ベジェ曲線ってなんやねん…。※4。

△transition-delay
 変化がいつ始まるかを指定する。
 
 〇例 すぐに変化させたい。
  ■transition-delay: 1s;

   1sのs=secですね。

 〇こんなプロパティ値もあります
  0 ・・・すぐに変化させたい★初期値
  マイナス指定 ・・・-1sと指定すると、1秒前から始まっている体で、変化の途中から開始される。

 

分からない所はおおよそ潰した感がある今回のアウトプット。

情報を取捨選択していく間に、あれもこれも…と調査事項が増えました。



<インプット情報(過去のアウトプット結果)>
 ゆる~~く理解するウェブページの仕組み~HTMLとCSSって?~
 ゆる~~く理解するウェブページの仕組み~HTMLの要素・タグ・属性??~
 ゆる~~く理解するウェブページの仕組み~CSSのセレクタ?プロパティ?値?~

 ゆる~~く理解するウェブページの仕組み~CSSを正しく使うためのメモ~

 ゆる~~く理解するウェブページの仕組み~スタイルの継承~

 ゆる~~く理解するウェブページの仕組み~ベンダープレフィックス~

 ゆる~~く理解するウェブページの仕組み~ベンダープレフィックス~

 ブロックレベル要素・インライン要素

要点メモ書きです。

 

<ベジェ曲線>
 遠い昔にやった記憶ありますが、理論から勉強し直していると、
 日が暮れてしまいますので、フィーリングで捉えます。
 概念を感覚的に捉えたい際には、
「にせねこメモ様」が参考になりそう。
 ってか凄い…。


 線を残した図を見ていると、小学生の頃、
 PC好きの先生がこれと同じことを算数の時間に

 やらせてた事を思い出しました。
 
 これを見た上で「HTML クイックリファレンス様」

 このページを見てみましょう。


 何となく、感覚つかめたら、自分で数値を弄っても良いし、
 特に興味なければ、既定のプロパティ値を使うと便利と思います。