<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>slDesign &#187; 3D</title>
	<atom:link href="http://sldesign.openwab.com/tag/3d/feed/" rel="self" type="application/rss+xml" />
	<link>http://sldesign.openwab.com</link>
	<description>Web, Dév &#38; More...</description>
	<lastBuildDate>Wed, 13 Oct 2010 10:09:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Tutoriel CSS : 3D Transform</title>
		<link>http://sldesign.openwab.com/2010/07/27/tutoriel-css-3d-transform/</link>
		<comments>http://sldesign.openwab.com/2010/07/27/tutoriel-css-3d-transform/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 07:36:25 +0000</pubDate>
		<dc:creator>Steve Leherpeux</dc:creator>
				<category><![CDATA[HTML / CSS]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://sldesign.openwab.com/?p=690</guid>
		<description><![CDATA[Le version 3 de CSS nous a apporté son lot de nouveauté ; parmi les plus connues et plus utilisées on peut citer &#171;&#160;Corner radius&#160;&#187; ou encore les dégradés mais une nouvelle propriété très intéressante va vous permettre une encore plus grande liberté : la propriété &#171;&#160;transform&#160;&#187;. De la 3D en CSS ? Je n&#8217;irai [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fsldesign.openwab.com%2F2010%2F07%2F27%2Ftutoriel-css-3d-transform%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fsldesign.openwab.com%2F2010%2F07%2F27%2Ftutoriel-css-3d-transform%2F&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p><img class="alignleft size-full wp-image-732" style="margin: 5px;" title="CSS Effet 3D - Cube Final" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/cube-final.jpg" alt="CSS Effet 3D - Cube Final" width="199" height="222" />Le version 3 de CSS nous a apporté son lot de nouveauté ; parmi les plus connues et plus utilisées on peut citer &laquo;&nbsp;Corner radius&nbsp;&raquo; ou encore les dégradés mais une nouvelle propriété très intéressante va vous permettre une encore plus grande liberté : la propriété &laquo;&nbsp;transform&nbsp;&raquo;.</p>
<p><em><strong>De la 3D en CSS ?</strong></em></p>
<p>Je n&#8217;irai pas jusqu&#8217;à dire qu&#8217;il s&#8217;agit de 3D mais plutot d&#8217;effet 3D au même titre que nous pouvons réaliser ces effets avec un logiciel de graphisme.</p>
<p>Nous verrons dans cet article comment réaliser un cube en effet 3D.<span id="more-690"></span></p>
<hr class="clear_all" />
<h1>I &#8211; Introduction</h1>
<p>Avant toute chose, il est nécessaire de prendre en compte la comptabilité. L&#8217;utilisation de la propriété CSS 3D transform n&#8217;est compatible qu&#8217;avec Firefox 3.5+ [<code>-moz-transform] (documentation)</code> et Safari 3.2+<code>[-webkit-transform](documentation).</code></p>
<p>Travaillant essentiellement sur Firefox, je ne m'aventurerai pas dans les détails de Safari mais il n'y a pas d'énormes différences...</p>
<h2>1°) Prérequis</h2>
<ul>
<li>Connaissances HTML / CSS</li>
<li>Vous vous souvenez de vos cours de géométrie ?</li>
<li>Un éditeur CSS / HTL</li>
</ul>
<h2>2°) Un peu de théorie...</h2>
<p>http://www.w3.org/TR/css3-3d-transforms/</p>
<p><strong>Rotation d'un objet : </strong>-moz-transform:  rotate(angle);</p>
<p>Exemple :</p>
<p>-moz-transform:  rotate(30);</p>
<pre><img class="size-full wp-image-691 " title="Propritét CSS Transform rotate - Rotation d'un div de 30°" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/1.2.1-css-transform-rotate.jpg" alt="Propritét CSS Transform rotate - Rotation d'un div de 30°" width="318" height="284" />
<div class="mceTemp">
<dl id="attachment_691" class="wp-caption alignnone" style="width: 328px;">
<dd class="wp-caption-dd">Figure 1.2.1 - Propritét CSS Transform rotate - Rotation d'un div de 30°</dd>
</dl>
</div>

<strong>Redimensionnement 2D axe X et Y d'un objet :</strong> -moz-transform:  scale(sx[, sy]);</pre>
<p>Si [sy] n'est pas renseigné, il aura la même valeur de [sx]</p>
<p>Modifier la perspective : -moz-transform: skew(ax,[ay]);</p>
<p>Permet de modifier l'axe de perspective, vous pouvez également utilsier skewX(deg) et skewY(deg) pour les utiliser indépendament.</p>
<p>Exemple : -moz-transform: skewY(30deg);</p>
<p>Parlons maintenant de la propriété "transform:matrix", il faut comprendre dans Matrix la traduction "matrice". Nous avons une forme géométrique qui est constituée de différents points [a,b,c,d] que nous pouvons manipuler.</p>
<pre>-moz-transform:  matrix(a, c, b, d, tx, ty)

/* Where a, b, c, d construit la transformation de la matrice
   ┌     ┐
   │ a b │
   │ c d │
   └     ┘
   and tx, ty are the translate values.  */
</pre>
<p>Quelques exemples :</p>
<p>.matrix {<br />
width: 200px;<br />
height: 100px;<br />
background: #f5f5f5;<br />
-moz-transform:matrix(1,0,0.6,1,15em,0);<br />
}</p>
<p>Rendu (figure 1.2.3)</p>
<div id="attachment_696" class="wp-caption alignnone" style="width: 303px"><img class="size-full wp-image-696 " title="Rendu de la proprité transform:matrix" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/1.2.3-css3D-matrix1.jpg" alt="Rendu de la proprité transform:matrix" width="293" height="113" /><p class="wp-caption-text">Figure 1.2.3 - Rendu de la proprité transform:matrix</p></div>
<p>Exemple 2 - Retournement d'objet</p>
<p>.matrix {<br />
width: 200px;<br />
height: 100px;<br />
background: #ff8000;<br />
-moz-transform:matrix(-1,0,1.2,1,20em,12em);<br />
}</p>
<p>Résultat (figure 1.2.4) :</p>
<div id="attachment_697" class="wp-caption alignnone" style="width: 391px"><img class="size-full wp-image-697" title="Résultat transform:matrix - retournement d'objet" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/1.2.4-css3D-matrix2.jpg" alt="Résultat transform:matrix - retournement d'objet" width="381" height="147" /><p class="wp-caption-text">Figure 1.2.4 - Résultat transform:matrix - retournement d&#39;objet</p></div>
<p>Exemple 3 : Reflexion</p>
<p>-moz-transform: matrix(1, 0, 0, -1, 0, 0);</p>
<div id="attachment_699" class="wp-caption alignnone" style="width: 218px"><img class="size-full wp-image-699" title="Exemple transform:matrix - Reflexion" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/1.2.5-css3D-reflexion-sample.jpg" alt="Exemple transform:matrix - Reflexion" width="208" height="388" /><p class="wp-caption-text">Figure 1.2.5 - Exemple transform:matrix - Reflexion</p></div>
<p>Autres exemples (non-shématisés) :</p>
<p>Rotation 90° sur la gauche : -moz-transform:matrix(0,-1,1,0,0,0);</p>
<h1>II - Création d'un cube 3D</h1>
<h2>1°) Code HTML de base</h2>
<p>Il faut tout d'abord créer 3 blocs qui nous permettrons de simuler notre cube. Ces 3 blocs seront encadrés par un div global.</p>
<p>Code HTML du cube</p>
<pre class="brush:html">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;
&lt;title&gt;Tutoriel CSS 3D&lt;/title&gt;
&lt;base href="http://localhost/tutos/tuts/css-3D/"/&gt;
&lt;link href="style.css" rel="stylesheet" type="text/css"/&gt;
&lt;/head&gt;
&lt;body&gt;
 &lt;div id="cube"&gt;
 &lt;div id="topSide"&gt;&lt;div&gt;Content&lt;/div&gt;&lt;/div&gt;
 &lt;div id="leftSide"&gt;&lt;div&gt;Content&lt;/div&gt;&lt;/div&gt;
 &lt;div id="rightSide"&gt;&lt;div&gt;Content&lt;/div&gt;&lt;/div&gt;
 &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>J'ai également créé un fichier css qui nous permettra de mettre en forme notre cube 3D. Dans un premier temps, j'ai simplement dissocier les blocs.</p>
<p>Code CSS fichier style.css</p>
<pre class="brush:css">#cube {
 position: relative;
 top: 200px;
 margin:0 0 230px 0;
}

#cube .cubeSide{
 height:200px;
 width:200px;
}
#topSide{
 background:#ff8000;
}
#leftSide{ background:#0080c0;}
#rightSide{background:#00ff40;}</pre>
<p>Voici le résultat obtenu (figure 2.1.1) :</p>
<div id="attachment_695" class="wp-caption alignnone" style="width: 216px"><img class="size-full wp-image-695" title="CSS Transform - Cube 3D Etape 1" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/2.1-css3D-etape1.jpg" alt="CSS Transform - Cube 3D Etape 1" width="206" height="575" /><p class="wp-caption-text">Figure 2.1.1  -CSS Transform - Cube 3D Etape 1</p></div>
<p>Maintenant, passons à des choses un peu plus sympa, nous allons appliquer notre propriété "transform" à notre cube :</p>
<pre class="brush:css;first-line:27">.leftFace {
 background: #ff8000;
 -moz-transform: skewY(30deg);
}

.rightFace {
 background: #800080;
 -moz-transform: skewY(-30deg);
}</pre>
<p>Nous avons appliqué ici une propriété "transform:skewY" permettant d'incliner nos div sur leurs axes Y donnant ainsi un effet de perspective.</p>
<div id="attachment_701" class="wp-caption alignnone" style="width: 221px"><img class="size-full wp-image-701" title="Transformation perspective sur l'axe Y - [transform:skewX(val)" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/cube_2.jpg" alt="Transformation perspective sur l'axe Y - [transform:skewX(val)" width="211" height="606" /><p class="wp-caption-text">Figure 2.1.2 - Transformation perspective sur l&#39;axe Y - [transform:skewX(val)</p></div>
<p>Positionner les DIV : Nous devons appliquer un positionnement "absolute" à l'ensemble de nos blocs afin que ceux-ci puissent êtres dissocié et placés indépendament (figure 2.1.3) .</p>
<p>Code CSS : Positionnement des DIV</p>
<pre class="brush:css;first-line:11">.topFace, .leftFace, .rightFace {
position: absolute;
}
</pre>
<div id="attachment_704" class="wp-caption alignnone" style="width: 222px"><img class="size-full wp-image-704" title="Positionnement absolute des blocs" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/cube_3.jpg" alt="Positionnement absolute des blocs" width="212" height="326" /><p class="wp-caption-text">Figure 2.1.3 - Positionnement absolute des blocs</p></div>
<p>Ensuite, nous allons positionner notre bloc right (figure 2.1.4). Il s'agit ici de décaller notre bloc de 200px sur la droite et vers le bas.</p>
<pre class="brush:css;first-line:34;">.rightFace {
 background: #800080;
 -moz-transform: skewY(-30deg);
 top: 200px;
 left: 200px;
}</pre>
<div id="attachment_705" class="wp-caption alignnone" style="width: 401px"><img class="size-full wp-image-705" title="Positionnement du bloc &quot;rightSide&quot;" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/cube_4.jpg" alt="Positionnement du bloc &quot;rightSide&quot;" width="391" height="442" /><p class="wp-caption-text">Figure 2.1.4 - Positionnement du bloc &quot;rightSide&quot;</p></div>
<p>Intéressons nous maintenant à la partie haute, c'est à dire le DIV topSide. C'est la partie la plus compliquée...</p>
<pre class="brush:css;first-line:15;">.topFace {
 -moz-transform: rotate(60deg);
 left: 100px;
 top: 42px;
}

.topFace div {
 background: #0080c0;
 -moz-transform: skewY(-30deg) scaleY(1.16);
}</pre>
<p>Quelques explications : Pour donner cet effet, il est nécessaire de pivoter notre face (-moz-transform: rotate(60deg);), puis nous appliquons une perspective et un redimenssionnement.</p>
<div id="attachment_731" class="wp-caption alignnone" style="width: 394px"><img class="size-full wp-image-731" title="CSS Effet 3D - Cube final" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/cube_6.jpg" alt="CSS Effet 3D - Cube final" width="384" height="472" /><p class="wp-caption-text">Figure 2.1.5 - CSS Effet 3D - Cube final</p></div>
<p>Avec un peu d'habillage, voici le résultat final :</p>
<div id="attachment_732" class="wp-caption alignnone" style="width: 429px"><img class="size-full wp-image-732" title="CSS Effet 3D - Cube Final" src="http://sldesign.openwab.com/wp-content/uploads/2010/07/cube-final.jpg" alt="CSS Effet 3D - Cube Final" width="419" height="468" /><p class="wp-caption-text">Figure 2.1.5 - CSS Effet 3D - Cube Final</p></div>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://sldesign.openwab.com/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://sldesign.openwab.com/2010/07/27/tutoriel-css-3d-transform/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

