DORCHESTER3D

Javascript의 Html5 CSS3 3D 큐브

게시 날짜: 1월 04, 2015

한동안 나는 Flash, Silverlight 등과 같은 플러그인을 사용하지 않고 일반 웹 브라우저에서 3D 개체를 만드는 실험을 해왔습니다. 여기에 표시된 큐브는 이전에 만든 다른 3D 웹 사이트에서 가져온 것입니다.

WebGL 브라우저에서 복잡한 3D 모델을 렌더링할 수 있습니다. 그러나 여기서는 다양한 도구를 사용하여 3D 개체를 만드는 방법을 살펴보겠습니다. CSS3 일반 2D HTML 요소를 가져와 3D 공간에 투영할 수 있는 변환 명령입니다.

일반 Html 요소에 3D 변환을 사용하면 Iframe 콘텐츠, 이미지 또는 기타 HTML 요소를 3D로 투영하여 정말 깔끔한 효과를 만들 수 있다는 장점이 있습니다.

실시간 미리보기

다음은 일부 이미지와 텍스트를 사용한 큐브 샘플입니다. 마우스를 사용하여 큐브를 회전시킬 수 있습니다.

호환성

여기에 표시된 3D 큐브는 다른 3D 큐브에서 사용하는 일반 회전, 크기 조정, 변환 방법 대신 CSS3 매트릭스 변환을 사용하므로 IE11에서 잘 작동합니다. IE11뿐만 아니라 iOS용 Firefox, Chrome, Safari 및 Mobile Safari에서도 테스트되었습니다.

HTML 소스

여기서 중요한 점은 "Cube.js" 파일을 포함한다는 것입니다. 우리는 또한 필요합니다 제이쿼리, 그것도 포함됩니다.

ID가 my3DsurfaceDiv에는 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>

자바스크립트 소스

다음으로 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 큐브 만들기를 시작해 보세요!

파일 다운로드

파일을 다운로드하려면 아래 링크를 클릭하세요.

CSS3의 3D 큐브: 3dcss3.zip (141.27kb)

우리는 귀하의 개인 프로젝트에 사용할 수 있도록 어떠한 종류의 보증도 없이 모든 파일을 있는 그대로 제공합니다. 허가 없이 재배포하거나 판매할 수 없습니다.

의견 제출

© 2024 dorchester3d.com