HTML5 CSS3 3D キューブ (Javascript で作成)
しばらくの間、私は Flash や Silverlight などのプラグインに頼らずに、通常の Web ブラウザーで 3D オブジェクトを作成する実験を行ってきました。ここで示す立方体は、以前に作成した別の 3D Web サイトから改変したものです。
ウェブGLブラウザで複雑な3Dモデルをレンダリングすることができます。しかし、ここではさまざまなツールを使って3Dオブジェクトを作成する方法を見ていきます。CSS3通常の 2D HTML 要素を取得して 3D 空間に投影できる変換コマンド。
通常の HTML 要素で 3D 変換を使用する利点は、 Iframeコンテンツ、画像、またはその他の HTML 要素などを 3D に投影して、非常に優れた効果を作成できることです。
ライブプレビュー
これは、画像とテキストを使用したキューブのサンプルです。マウスを使用してキューブを回転させることができます。
互換性
ここで示す 3D キューブは、他の 3D キューブで使用される単純な Rotate、Scale、Translate メソッドではなく、CSS3 Matrix Transforms を使用しているため、IE11 で適切に動作します。IE11 だけでなく、Firefox、Chrome、Safari、iOS の Mobile Safari でもテストされています。
HTML ソース
ここで重要なのは、「Cube.js」ファイルをインクルードすることです。また、JQuery 、それも含まれています。
ID がmy3DsurfaceのDivには 3D キューブが含まれます。data -facewidth="256"属性に注目してください。これはキューブの面のサイズを指定します。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Css3 3D Sample</title>
<script src="js/jquery-1.10.2.min.js"></script>
<script src="js/cube.js"></script>
<script src="js/sample.js"></script>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<div id="my3Dsurface" class="js3dsurface" data-facewidth="256"></div>
</body>
</html>
Javascript ソース
次に、 Js3DSurfaceのインスタンスを作成し、キューブの各面に表示されるコンテンツの配列を渡します。この例では、画像とシンプルな HTML コンテンツを使用しています。Iframe、ビデオ タグなどのより複雑な HTML を追加することもできます。
また、マウスを使用してキューブを回転できるように、3 つのイベント ハンドラーも追加します。マウスの左ボタンを押したままマウスを動かすと、マウスの新しい X と Y 位置を渡してadjRotを呼び出します。
var cube;
var mouseisdown = false;
$(document).ready(function () {
var faces = new Array();
faces.push('<img src="images/manic-miner-willy.jpg" />');
faces.push('<img src="images/terminator-t-800-head-design.png" />');
faces.push('<div class="plain"><h1>3D Cube!</h1><p>Some plain html content to be projected onto the side of the cube! Works in the latest versions of Chrome, Firefox, IE, Safari, Safari Mobile and other Html5 modern browsers.</div>');
faces.push('<img src="images/sinclair-c5.jpg" />');
faces.push('<img src="images/terminator-t-800-head-design.png" />');
faces.push('<img src="images/sinclair-c5.jpg" />');
cube = new Js3DSurface("my3Dsurface", faces);
cube._backSurface.addEventListener('mousemove', mousemove, false);
document.body.addEventListener('mousedown', mousedown, false);
document.body.addEventListener('mouseup', mouseup, false);
});
function mousedown(e) {
mouseisdown = true;
if (e != null) {
e.stopPropagation();
e.preventDefault();
}
returnfalse;
}
function mouseup(e) {
mouseisdown = false;
if (e != null) {
e.stopPropagation();
e.preventDefault();
}
returnfalse;
}
function mousemove(e) {
if (mouseisdown) {
var _off = $(cube._backSurface).offset();
var x = e.clientX - _off.left;
var y = e.clientY - _off.top;
y += $(window).scrollTop();
adjRot(x, y);
}
}
function adjRot(x, y) {
var w = $(cube._backSurface).width();
var h = $(cube._backSurface).height();
var step = 10;
var ry = (((x - (w / 2)) / w) * step);
var rx = (((y - (h / 2)) / h) * step);
cube._cubes[0]._Torque._Y = ry;
cube._cubes[0]._Torque._X = rx;
}
以下のリンクからサンプル コードを入手して、クールな 3D プロジェクト HTML キューブの作成を始めましょう。
コメントを送信
コメントが送信されました。弊社のウェブサイトに掲載する前に確認させていただきます。