ティファニーの新しい本「CSSマスター、第2版」からの抜粋
CSS変換機能により、他の方法では達成できない効果と相互作用を作成する能力が得られます。トランジションとアニメーションを組み合わせて、回転、踊り、拡大する要素とインターフェイスを作成できます。特に3次元変換により、物理的なオブジェクトをシミュレートできます。この記事では、2次元変換関数について説明します(ここでは3次元関数が紹介されています)。
主に、回転、スケーリング、傾斜、変位の4種類の2次元変換関数があります。他の6つの機能により、単一の次元に沿って変換できます。
回転変形指定された角度で変換オリジンの周りの要素を回転させます。 Rotate()を使用して、要素を時計回り(正角値)または反時計回り(負の角度値)を傾ける。その効果は、以下に示すように、風車や風車によく似ています。
rotate()関数は、角度単位の値を受け入れます。角度単位は、CSS値とユニットモジュールレベル3で定義されます。これらは、deg(degre)、rad(radian)、grad(勾配)、またはターンユニットです。完全な回転は、360DEG、6.28RAD、400グラデーション、または1ターンに等しい。
アニメーションまたは遷移しない限り、1回の回転を超える回転値(540DEGまたは1.5ターンなど)は、残りの値に基づいてレンダリングされます。言い換えれば、540 degのレンダリング効果は180 deg(540度マイナス360度)のレンダリング効果と同じであり、1.5ターンのレンダリング効果は.5ターン(1.5 - 1)のレンダリング効果と同じです。ただし、0DEGから540DEGから1ターンから1.5回転までの遷移またはアニメーションは、要素を1.5回回転させます。
2次元スケーリング関数:スケール、スケーレックス、スケール
各スケーリング関数は、パラメーターとして乗数または因子を受け入れます。この乗数は、ほぼすべての正または負の数になります。パーセンテージ値はサポートされていません。 1を超える正の乗数は、要素のサイズを増加させます。たとえば、スケール(1.5)は、x方向とy方向の要素のサイズを1.5倍増加させます。 0〜1の間の正の乗数は、要素のサイズを縮小します。 0未満の値は、要素のサイズをスケーリングまたは減少させ、反射(フリップ)変換を作成します。
警告:スケール(0)を使用すると、数値にゼロを掛けた結果がゼロになるため、要素が消えます。スケール(1)を使用してアイデンティティ変換を作成します。つまり、スケーリング変換が適用されていないかのように画面に描画されます。スケール(-1)を使用しても、要素の抽選サイズは変更されませんが、負の値は要素を反映します。要素が変換を表示しなくても、新しいスタッキングコンテキストをトリガーし、ブロックを含みます。
スケール関数を使用して、それぞれxおよびyの寸法をスケーリングできます。スケール(1.5、2)の2つのパラメーターを渡すだけです。最初のパラメーターはxディメンションをスケーリングします。たとえば、スケール(-1、1)を使用して、X軸に沿って個別にオブジェクトを反映できます。単一のパラメーターを渡すと、同じ要因によって2つの次元がスケーリングされます。
2次元翻訳関数:translatex、translatey、翻訳翻訳要素は、指定された距離による描画位置とレイアウト位置の間の距離を相殺します。他の変換と同様に、翻訳要素はオフセットレフトまたはオフセットの位置を変更しません。ただし、画面上の視覚位置に影響します。
transtex関数は、要素の水平レンダリング位置を変化させます。要素が左から0ピクセルの場合、Transform:TransmitionX(50px)は、レンダリング位置50ピクセルを開始位置の右に移動します。同様に、翻訳は要素の垂直レンダリング位置を変更します。 Transitiony(50px)は、要素を垂直に50ピクセルでシフトします。
翻訳する単一のパラメーターを渡すことは、yranslatexの使用と同等です。翻訳()を使用することは、より簡潔な選択です。翻訳(100px、200px)の適用は、translatex(100px)translatey(200px)に相当します。 正の変換値は、要素を右(translatexの場合)または下(translateyの場合)に移動します。負の値は、要素を左(translatex)またはup(translatey)に移動します。 パンニングは、アイテムを左、右、上、または下に移動するのに特に役立ちます。左、右、上部、および下の属性の値を更新すると、ブラウザはドキュメント全体のレイアウト情報を再計算するようになります。ただし、レイアウトが計算された後、変換は計算されます。それらは、画面上の要素のディスプレイの位置に影響しますが、実際のサイズではありません。はい、ドキュメントのレイアウトとレンダリングを個別の概念と考えるのは奇妙ですが、ブラウザの観点からは、それらは実際に別々です。
変換プロパティは、近くのブラウザに表示される場合があります 執筆時点では、変換プロパティのブラウザサポートはまだ非常にまばらです。 ChromeとSamsungのインターネットは、箱から出してサポートしています。 Firefox 60以降では、サポートがフラグの後ろに隠されています。
スキュー、スキュー、スキューイ 傾斜変換により、ポイント間の角度と距離が同じ平面上に置かれます。傾斜変換は チルト関数(Skew、Skewx、およびSkewy)は、ほとんどの角度単位をパラメーターとして受け入れます。程度、勾配、およびラジアンは、傾斜関数の有効な角度単位であり、ターンユニット(おそらく明らかに)はそうではありません。
同様に、ゆっくりはy方向または垂直方向に要素をカットします。次の図は、変換の効果を示しています:Skewy(30Deg)。原点の右側のポイントは、正の値が増加すると下方に移動します。負の値はこれらのポイントを上向きに移動します。 これはスキュー関数につながります。スキュー関数には1つのパラメーターが必要ですが、最大2つのパラメーターを受け入れることができます。最初のパラメーターはx方向の要素を傾け、2番目のパラメーターはy方向の要素を傾けます。 1つのパラメーターのみが提供されている場合、2番目の値はゼロであると想定されており、X方向のみの傾斜と同等になります。言い換えれば、Skew(45Deg)のレンダリング効果はSkewx(45Deg)と同じです。 これまでのところ、変換関数について個別に説明しましたが、それらを組み合わせることもできます。オブジェクトをスケーリングして回転させたいですか?問題ありません:変換リストを使用します。たとえば、 これにより、以下に示す結果が生成されます。 シーケンスが重要です。これはイラストで最もよく示されているので、例を見てみましょう。次のCSSは要素を傾けて回転させます: 以下に示すように結果が得られます。 最初に要素を回転させてから傾けるとどうなりますか? 効果(以下に示すように)は非常に異なります。 各変換には、変換関数の順に作成された異なる電流変換マトリックスがあります。理由を完全に理解するには、いくつかのマトリックスの乗算を学ぶ必要があります。これは、MatrixおよびMatrix3D機能を理解するのにも役立ちます。 マトリックスは、長方形の行と列に配置された数字または式の配列です。以下に示すように、4×4マトリックスを使用してすべての変換を表すことができます。 このマトリックスは、4×4マトリックスの値に対応する各パラメーターを受け入れるMatrix3D関数に対応します。以下に示すように、3×3マトリックスを使用して2次元変換を表すこともできます。 この3×3マトリックスは、マトリックス変換関数に対応しています。 Matrix()関数は、それぞれが値aから fに対応する6つのパラメーターを受け入れます。 各変換関数は、マトリックスとマトリックスまたはマトリックス3D関数を使用して説明できます。以下の図は、scale3D関数の4×4マトリックスを示しています。ここで、sx、sy、szはx、y、zのスケーリング係数です。それぞれ寸法。 変換(たとえば、変換:スケール(2)翻訳(30px、50px))を組み合わせると、ブラウザは新しいマトリックスを作成して各関数のマトリックスを乗算します。この新しいマトリックスは、要素に適用されるマトリックスです。 しかし、マトリックスの乗算は次のようなものです。それは交換可能ではありません。単純な値の場合、3×2の積は2×3の積と同じです。ただし、マトリックスの場合、a ×bの積は、必ずしもb×aの積と同じではありません。例を見てみましょう。変換のマトリックス積:スケール(2)翻訳(30px、50px)を計算します。 私たちの要素は、スケーリングとして2回スケーリングされ、その後、60ピクセルを水平方向に、100ピクセルを垂直に翻訳しました。また、マトリックス関数を使用して、この製品を表すこともできます。変換:マトリックス(2、0、0、2、60、100)。ここで、これらの変換の順序、つまり変換:翻訳(30px、50px)スケール(2)を切り替えましょう。結果を以下に示します。 私たちのオブジェクトはまだスケーリングされた2倍のスケーリングであることに注意してくださいが、ここでは水平方向に30ピクセル、垂直方向に50ピクセルでパンします。マトリックス関数を使用すると、これは変換です:マトリックス(2、0、0、2、30、50)。
どちらの場合も、P要素の電流変換マトリックスは同じです。これまでのところ、2次元変換に焦点を当ててきましたが、上記は3次元変換にも適用されます。 3番目の次元は、深さの幻想を追加します。また、新しい機能とプロパティの形でいくつかの余分な複雑さをもたらします。 の2次元変換関数に関するよくある質問
CSSの翻訳()関数は、要素を現在の位置から移動するために使用されます。 X軸値とY軸値の2つのパラメーターがあります。たとえば、要素を50ピクセルを右に、20ピクセルをダウンに移動する場合は、次のコードを使用できます。変換:翻訳(50px、20px);これにより、ページ上の他の要素のレイアウトに影響を与えることなく、要素が新しい場所に移動します。 はい、CSSの複数の2D変換関数を組み合わせることができます。これを行うには、変換プロパティに各関数をリストし、スペースで分離します。たとえば、要素を2倍のサイズにスケーリングしてから45度回転させる場合、次のコードを使用できます。変換:スケール(2)回転(45DEG);変換はリストされている順序で適用されます。 CSSのMatrix()関数は、複数の変換を同時に実行できる非常に強力な変換関数です。 2×3マトリックスの値を表す6つのパラメーターがあります。このマトリックスは、スケーリング、回転、傾き、および翻訳変換の組み合わせを実行するために使用されます。他の変換関数よりも複雑ですが、変換プロセスを高度な制御を提供します。 CSSのskew()関数は、x軸とy軸に沿って要素をねじるために使用されます。 x軸の傾斜角とy軸の傾斜角の2つのパラメーターがあります。たとえば、X軸に沿って30度、Y軸に沿って20度を30度傾ける場合、次のコードを使用できます。変換:Skew(30Deg、20Deg);。これにより、要素が歪んで、傾斜効果が生じます。 はい、CSSの任意のHTML要素に2D変換関数を使用できます。これには、ブロックレベルの要素(divなど)とインライン要素(スパンなど)が含まれます。ただし、変換の適用方法は、要素の種類とレイアウト内の位置によって異なる場合があることを忘れないでください。 CSSの翻訳()関数の単位を指定しない場合、これらの値はピクセル値として扱われます。これは、変換を意味します。翻訳(50、20);ただし、通常は、明確さと一貫性を確保するために、常にユニットを指定することが最善です。 Transitionプロパティを使用して、CSSの2D変換をアニメーション化できます。このプロパティを使用すると、遷移の期間、タイミング機能、および遅延を指定できます。たとえば、2秒で回転をアニメーション化する場合は、次のコードを使用できます。これにより、指定された期間の回転がスムーズにアニメーション化されます。 CSSのrotate()およびskew()関数は、さまざまな方法で要素で動作します。回転()関数は特定のポイントの周りに要素を回転させ、skew()関数はxおよびy軸に沿って要素をひねります。これは、Rotate()が要素の方向を変化させ、Skew()が要素の形状を変更することを意味します。 はい、他のCSSプロパティを使用してCSSで2D変換関数を使用できます。たとえば、Transform PropertyをBorder-Radiusプロパティと組み合わせて使用して、丸い角を持つ回転要素を作成できます。ただし、プロパティが適用される順序は最終結果に影響することを忘れないでください。 CSS変換仕様の最新バージョンは、翻訳、回転、および拡張属性をCSSに追加します。変換プロパティは、対応する変換関数と非常に同様に機能しますが、値はコンマ分離ではなく空間分離されています。たとえば、変換を表現できます:rotate3d(1、1、1、45deg):回転:1 1 1 45deg。同様に、翻訳:15%10%300pxは視覚的に変換と同じです:translate3d(15%、10%、300px)、およびスケール:1.5 1.5 3は変換と同じです:scale3d(1.5、1.5、3)。これらのプロパティを使用して、他のプロパティではなく、個別に回転、翻訳、またはスケーリング変換を管理できます。
とも呼ばれ、以下に示すように要素の形状を歪めます。
電流変換マトリックス
<code>.rotatescale {
transform: rotate(45deg) scale(2);
}</code>
<code>.transformEl {
transform: skew(10deg, 15deg) rotate(45deg);
}</code>
<code>.transformEl {
transform: rotate(45deg) skew(10deg, 15deg);
}</code>
マトリックスの乗算とマトリックス関数
<code>.rotatescale {
transform: rotate(45deg) scale(2);
}</code>
<code>.transformEl {
transform: skew(10deg, 15deg) rotate(45deg);
}</code>
CSSには多くのタイプの2次元変換関数があります。これらには、translate()、rotate()、scale()、skew()、およびmatrix()が含まれます。各関数を使用すると、さまざまな方法で要素を操作できます。たとえば、翻訳()関数は現在の位置から要素を移動し、rotate()関数は特定のポイントの周りに要素を回転させます。スケール()関数は要素のサイズを変更し、スキュー()関数はx軸とy軸に沿って要素をひねります。 Matrix()関数は、これらすべての変換を1つに組み合わせます。
CSSで翻訳()関数を使用する方法は?
CSSの複数の2D変換関数を組み合わせることはできますか?
CSSのMatrix()関数の目的は何ですか?
skew()関数はCSSでどのように機能しますか?
CSSのHTML要素に2D変換関数を使用できますか?
CSSで翻訳()関数にユニットを指定しないとどうなりますか?
CSSで2D変換をアニメーション化する方法は?
CSSのrotate()とskew()関数の違いは何ですか?
CSSの他のCSSプロパティで2D変換関数を使用できますか?
以上がCSSで2D変換関数を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。