目次
translate() とrotate()
transform 属性
レンズ、ステージ、組み合わせ
最後の「3D位置の保持」
ホームページ ウェブフロントエンド htmlチュートリアル CSS3 3D 効果の最初の紹介、 Understanding_html/css_WEB-ITnose についての簡単な説明

CSS3 3D 効果の最初の紹介、 Understanding_html/css_WEB-ITnose についての簡単な説明

Jun 24, 2016 am 11:27 AM

CSS3 の 3D 変換に触れたばかりですが、本当に素晴らしく感じたので、その興奮を利用して自分の考えと理解を記録しました。何か間違っている場合は、修正してください。

CSS3 には 2D と 3D の 2 つの変形方法が用意されており、いわゆる変形は主に変位と回転です。2D と 3D の違いはおそらく Z 軸方向の変形があるかどうかだけです。

それでは、後で 3D 変換をよりよく理解するために、最初に 2D 変換について話しましょう。

translate() とrotate()

上記の 2 つのメソッドは 2D 変換の一般的なメソッドであり、もちろん他にもありますが、ここでは説明しません。まずはこの2つ。具体的な構文は次のようになります。たとえば、div を変換したいとします。

#div1{transform:translate(100px,100px);}
ログイン後にコピー
#div2{transform:rotate(50deg);}
ログイン後にコピー

Transform は CSS3 によって提供される属性で、特にグラフィックスの変換に使用されます。この属性は現在、ほとんどのブラウザーでサポートされていますが、時間を節約するために、3D 効果で使用される次の属性には互換性が必要です。テクノロジー自体は、後で互換性を考慮する必要はありません。

本題に戻りますが、上記の 2 つのメソッドはパラメータだけで簡単に理解できます。translate() はそれぞれ x 軸方向と y 軸方向に一定の距離を移動します。ネガティブになる。 rotate() は、原点を中心に時計回りに角度を回転させる回転メソッドです。そこで質問なのですが、その起源はどこにあるのでしょうか?変換なので、正確な変換効果を実現するには参照系が必要です。したがって、2D であっても 3D であっても、正しい座標系を見つけて、正しい座標系を見つけてください。とても大切なことなので3回言います。

一般的に、原点は要素の中心点に設定されます。もちろん、この属性を使用して、この原点を調整することもできます。ここでの 50% 50% は、要素のデフォルトの位置を表します。 center は「Others」に変更できます。たとえば、左上隅は Tansform-origin:0% 0%; と記述する必要があります。このようにして原点を調整できます。

transform 属性

2D を理解したら、さらに一歩進んでみましょう。簡単に言うと、transform 属性は x、y、z にそれぞれ設定されます。

#div1{

Transform:translateX(100px) TranslationY(100px)translateZ(100px)rotateX(30deg)rotateY(30deg)rotateZ(30deg);

}
ログイン後にコピー

回転部分については特別な説明が必要です、rotateX()は回転を意味しますの回転角度。初期状態では、原点は要素の中心にあり、x 軸の正の方向は原点から水平右方向、y 軸の正の方向は原点から垂直下方向です。正の Z 軸方向は原点から画面に向かう方向です。つまり、 要素が向いている方向がそれ自体の Z 軸方向です。これを必ず覚えておいてください。 結局のところ、transform は単なる属性なので、省略形は上記のようになります。カンマではなくスペースで区切られることに注意してください。また、中国語のtransformは「変身」ではなく「変身」という意味だと個人的には理解しています。変身が完了した後の様子を表します。

レンズ、シミュレートされた 3D 効果

上記の変換が完了したら、3D 効果がありますか? デモを見てみましょう。

まだ変換はありません。 次に、変換属性を追加します。

確かにデフォルメされていることが分かりましたが、

しかし、

は私たちが想像していた 3D 効果とは程遠く、完全にフラットな効果であるとも言えます。

実際、CSS3 の 3D 効果は、ブラウザによって計算、レンダリングされ、最終的にシミュレートされる 3 次元効果です。人の目を欺くことができる画像をシミュレートしたい場合は、遠近感、つまり被写界深度を考慮する必要があります。より簡単に言うと、手前が広く、奥が狭いということです。これが満たされた場合にのみ、CSS3 の 3D 変換で 3D 効果が得られます。そうでない場合、たとえ 3D 変換が実際に実行されたとしても、ブラウザは 3D 効果をまったく持たずに平面に投影します。では、遠近感や被写界深度を追加するにはどうすればよいでしょうか? それは非常に簡単で、1 つの属性だけで行うことができます。

perspective:500;
ログイン後にコピー
パースペクティブ属性は、いわゆるレンズ属性であり、要素からの視野角の距離をシミュレートするために使用されます。被写界深度方向、近くの大きなものから遠くの小さなものまでを正確に表現する能力。

試してみましょう。

完璧です。これで、平面要素に 3D 変換効果が追加されました。ここで、システムは座標に注意してください。要素ですが、その Z 軸方向は div の正面が向いている位置でなければなりません。なぜ正面を強調する必要があるかというと、3D 変換により 180 度回転して背面が見えるからです。今回はZ軸方向が逆になります。前面はコンテンツを配置できる面です。

レンズ、ステージ、組み合わせ

立方体を組み立てて動かしたい場合、どうすればよいでしょうか? 「立方体」は 6 つの div で構成されており、それぞれが独自の独立した座標系を持ち、それらの連携変換を調整することでこの効果を実現することは不可能に思えます。簡単な方法はありますか? はい、組み合わせを div で囲むだけで、それに応じて内部の子要素も自然に回転します。したがって、私の理解では、コンビネーションは動くことができない死んだオブジェクトであり、ダイナミックな効果を持たせたい場合は、ステージを操作することで、コンビネーションを全方向に表示および移動させることができます。一番外側のレンズ、その内側のステージ、そしてステージ内のアセンブリの3層構造になりました。一部の専門家のブログでは、それらを「レンズ」、「空間」、「オブジェクト」と呼ぶ傾向があるかもしれません。これは 3D 効果を実現するための基礎です。

最後の「3D位置の保持」

ようやく立方体が完成し、ステージとしてdivでラップしました。立方体を別の角度から見るためにステージを回転させたかったのですが、こうなってしまいました。

立方体が平面になる!なぜこうなった?実際、よく考えてみるとわかりやすいのですが、div はもともと平面要素なので、立方体は直接それに「押しつぶされ」ます。ステージのスペースはディスプレイを収容するのに十分ではないため、この問題を解決するにはステージを拡張して属性を追加する必要があります。

transform-style:preserve-3d;

この属性は、子要素の 3D 位置を予約することを意味します。設定しない場合、デフォルトでは保持されません。つまり、子要素はフラットに表示されます。 。

この属性を追加した後を見てみましょう。

OK、キューブが出てきました。

上記は最も基本的な 3D エフェクトについての私の理解です。もちろん、3D エフェクトはそれほど単純ではありません。たとえば、あえて話さないこともあります。それについては深い経験がありませんし、3D テクニックもまだマスターしていないので、後で経験があれば必ず共有します。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

< Progress>の目的は何ですか 要素? < Progress>の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML< Progress>について説明します。要素、その目的、スタイリング、および< meter>との違い要素。主な焦点は、< Progress>を使用することです。タスクの完了と< Meter> statiの場合

< datalist>の目的は何ですか 要素? < datalist>の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML< Datalist>について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

< meter>の目的は何ですか 要素? < meter>の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html< meter>について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化< Meter> < Progress>およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

HTML5< time>を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5< time>を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

この記事では、html5< time>について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

< iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? < iframe>の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、< iframe>外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

See all articles