{"id":2588,"date":"2012-06-04T08:41:45","date_gmt":"2012-06-04T06:41:45","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=2588"},"modified":"2012-06-10T20:25:22","modified_gmt":"2012-06-10T18:25:22","slug":"css3-effet-feuilles-superposees","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/css3-effet-feuilles-superposees","title":{"rendered":"CSS3 &#8211; Effet de feuilles superpos\u00e9es"},"content":{"rendered":"<p>Il y a quelques jours de cela je r\u00e9pondais \u00e0 un petit tweet d&rsquo;un confr\u00e8re pour donner une astuce sur la cr\u00e9ation d&rsquo;un effet graphique de feuilles superpos\u00e9es en CSS3. Le d\u00e9fi \u00e9tait de ne pas multiplier les \u00e9l\u00e9ments HTML pour r\u00e9aliser cet effet. C&rsquo;est chose faite. Jetons un \u0153il sur la technique utilis\u00e9e. <!--more--><\/p>\n<h2>Tweet et r\u00e9ponse<\/h2>\n<blockquote class=\"center twitter-tweet\" lang=\"fr\">\n<p>L&rsquo;un de vous saurait-il faire \u00e7a en CSS3 ? Merci d&rsquo;avance \ud83d\ude09 <a href=\"http:\/\/t.co\/DekPYpyP\" title=\"http:\/\/twitpic.com\/9mgntn\">twitpic.com\/9mgntn<\/a><\/p>\n<p>&mdash; Daniel Roch, SeoMix (@rochdaniel) <a href=\"https:\/\/twitter.com\/rochdaniel\/status\/203536194938740736\" data-datetime=\"2012-05-18T17:23:05+00:00\">Mai 18, 2012<\/a><\/p><\/blockquote>\n<p>L&rsquo;id\u00e9e me semblait int\u00e9ressante, voici ma proposition visible sur dabblet et correspondant au mieux \u00e0 l&rsquo;image fournie par Daniel :<br \/>\n<a href=\"http:\/\/dabblet.com\/gist\/2727018\">Effet de feuilles superpos\u00e9es<\/a><\/p>\n<h2>Comment faire ? Comment l&rsquo;utiliser ?<\/h2>\n<p>Nous allons voir plusieurs exemples pour r\u00e9aliser deux effets similaires.<\/p>\n<p class=\"center\"><a class=\"demonstration\" href=\"http:\/\/creativejuiz.fr\/blog\/doc\/paper-sheet-effect-css3.html\" hreflang=\"en\">D\u00e9monstration<\/a><\/p>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/06\/blockquote-paper-css3.png\" alt=\"\" title=\"\" width=\"424\" height=\"115\" class=\"aligncenter size-full wp-image-2602\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/06\/blockquote-paper-css3.png 424w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/06\/blockquote-paper-css3-300x81.png 300w\" sizes=\"(max-width: 424px) 100vw, 424px\" \/><\/p>\n<p>Pour r\u00e9aliser le premier effet, utilisons un code HTML simple correspondant \u00e0 un bloc de citation :<\/p>\n<pre class=\"code\"><code class=\"html\">&lt;blockquote&gt;\r\n    &lt;p&gt;C'est en forgeant qu'on devient forgeron&lt;\/p&gt;\r\n&lt;\/blockquote&gt;<\/code><\/pre>\n<p>Ce code suffit amplement pour notre affaire. Voyons notre CSS.<\/p>\n<pre class=\"code\"><code class=\"css\">\/* on fixe la largeur du bloc (optionnel)\r\n   et on le d\u00e9finit comme r\u00e9f\u00e9rent *\/\r\nblockquote {\r\n    position: relative;\r\n    width: 300px;\r\n    padding: 10px;\r\n}\r\n\/* on ajoute des effets graphiques\r\n   sur nos futures feuilles *\/\r\nblockquote,\r\nblockquote:after,\r\nblockquote:before {\r\n    background: #fff;\r\n    box-shadow: 0 0 4px rgba(0,0,0,0.4);\r\n}\r\n&nbsp;\r\n\/* on utilise les pseudo \u00e9l\u00e9ments pour ajouter des feuilles *\/\r\nblockquote:after,\r\nblockquote:before {\r\n    position: absolute;\r\n    top: 0; right:3px; bottom:0; left:-3px;\r\n    content: \"\";\r\n    z-index: -10;\r\n    \/* d\u00e9finit le centre de transformation *\/\r\n    transform-origin: 100% 0;\r\n}\r\nblockquote:after {\r\n    transform: rotate(-0.6deg);\r\n}\r\nblockquote:before {\r\n    transform: rotate(-1.2deg);\r\n    right: 5px; left: -5px;\r\n}<\/code><\/pre>\n<p>N&rsquo;oubliez pas que ce code CSS n&rsquo;est pas pr\u00e9fix\u00e9 (-webkit-, -moz-, etc.) et qu&rsquo;il convient de le faire pour les propri\u00e9t\u00e9s CSS3 (ici <code>box-shadow<\/code>, <code>transform-origin<\/code> et <code>transform<\/code>).<\/p>\n<h2>Aller plus loin<\/h2>\n<p>L&rsquo;exemple de code fourni \u00e0 Daniel propose d&rsquo;ajouter un auteur de la citation, ainsi que des guillemets autour de celle-ci.<br \/>\nAjoutez un paragraphe portant le nom de l&rsquo;auteur apr\u00e8s le paragraphe de la citation.<\/p>\n<p>Puis en CSS nous allons utiliser \u00e0 nouveau les pseudo \u00e9l\u00e9ments pour ajouter nos guillemets. La fonte Georgia propose de jolis guillemets, soit dit en passant.<\/p>\n<pre class=\"code\"><code class=\"css\">\/* on style les deux paragraphes *\/\r\np {\r\n    margin:0;\r\n}\r\nblockquote p + p {\r\n    text-align: right;\r\n    line-height: 1.2em;\r\n    margin:-1.1em 0 0 0;\r\n    color: #999;\r\n}\r\n&nbsp;\r\n\/* on ajoute les guillemets *\/\r\nblockquote p:first-child:before,\r\nblockquote p:first-child:after {\r\n\tfont-size: 1.75em;\r\n\tfont-family: Georgia, serif;\r\n\tcolor: #888;\r\n}\r\nblockquote p:first-child:before {\r\n\tcontent : \"\u201c \";\r\n\tvertical-align: -.05em;\r\n}\r\nblockquote p:first-child:after {\r\n\tcontent : \" \u201d\";\r\n\tvertical-align: -.55em;\r\n}<\/code><\/pre>\n<p>Le plus difficile ici est de trouver le bon alignement pour les guillemets, tout en jouant avec les marges des paragraphes.<\/p>\n<h2>Toujours plus loin (toujours plus fort !)<\/h2>\n<p class=\"center\"><img decoding=\"async\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/06\/photo-paper-css3.jpg\" alt=\"\" title=\"\" width=\"600\" height=\"260\" class=\"aligncenter size-full wp-image-2601\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/06\/photo-paper-css3.jpg 600w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/06\/photo-paper-css3-300x130.jpg 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Pour r\u00e9aliser le deuxi\u00e8me effet de la <a href=\"http:\/\/creativejuiz.fr\/blog\/doc\/paper-sheet-effect-css3.html\" hreflang=\"en\">d\u00e9monstration<\/a>, nous allons appliquer les m\u00eames styles sur des liens autour d&rsquo;images. Le code HTML est plut\u00f4t simple :<\/p>\n<pre class=\"code\"><code class=\"html\">&lt;a href=\"#\"&gt;\r\n    &lt;img src=\"http:\/\/lorempixel.com\/200\/200\/sports\/1\" alt=\"\" width=\"200\" height=\"200\"&gt;\r\n&lt;\/a&gt;\r\n&lt;a href=\"#\"&gt;\r\n    &lt;img src=\"http:\/\/lorempixel.com\/200\/200\/sports\/4\" alt=\"\" width=\"200\" height=\"200\"&gt;\r\n&lt;\/a&gt;\r\n&lt;a href=\"#\"&gt;\r\n    &lt;img src=\"http:\/\/lorempixel.com\/200\/200\/sports\/5\" alt=\"\" width=\"200\" height=\"200\"&gt;\r\n&lt;\/a&gt;<\/code><\/pre>\n<p>Nous pr\u00e9parons ensuite notre code CSS, fortement ressemblant au pr\u00e9c\u00e9dent :<\/p>\n<pre class=\"code\"><code class=\"css\">a {\r\n    display:inline-block;\r\n    position: relative;  \r\n    padding: 10px;\r\n    margin: 0 2em;\r\n    width: 200px;\r\n    height: 200px;\r\n}\r\n\/* on ajoute des effets graphiques \r\n   sur nos futures feuilles *\/  \r\na,\r\na:after,\r\na:before {  \r\n    background: #fff;\r\n    \/* ombres l\u00e9g\u00e8rement diminu\u00e9es en opacit\u00e9 *\/\r\n    box-shadow: 0 0 4px rgba(0,0,0,0.2);  \r\n    \/* on pr\u00e9voit une transition g\u00e9n\u00e9rale *\/\r\n    transition: all .7s;\r\n}  \r\n&nbsp;\t   \r\n\/* on utilise les pseudo \u00e9l\u00e9ments pour ajouter des feuilles *\/  \r\na:after,\r\na:before {\r\n    position: absolute;  \r\n    top: 0; right:0; bottom:0; left:0;  \r\n    content: \"\";  \r\n    z-index: -10;  \r\n    \/* d\u00e9finit le centre de transformation *\/  \r\n    transform-origin: 100% 0;\r\n}<\/code><\/pre>\n<p>Nous pr\u00e9parons notre transition sur la rotation, le d\u00e9placement et le changement d&rsquo;ombre de notre \u00e9l\u00e9ment. Pour simplifier, j&rsquo;ai fait le choix d&rsquo;effectuer la transition sur <code>all<\/code>.<br \/>\nAu survol ou au focus sur un lien, nous effectuons nos changements d&rsquo;\u00e9tat :<\/p>\n<pre class=\"code\"><code class=\"css\">a:hover:after,\r\na:focus:after\t{  \r\n    transform: rotate(-1deg); \r\n    right: 6px; left:-6px;\r\n}  \r\na:hover:before,\r\na:focus:before {  \r\n    transform: rotate(-2.2deg);  \r\n    right: 12px; left: -12px;  \r\n}\r\n&nbsp;\r\n\/* on r\u00e9-hausse l'opacit\u00e9 des ombres *\/\r\na:hover,\r\na:hover:after,\r\na:hover:before,\r\na:focus,\r\na:focus:after,\r\na:focus:before\t{\r\n    box-shadow: 0 0 4px rgba(0,0,0,0.4);  \r\n}<\/code><\/pre>\n<p>Les s\u00e9lecteurs CSS sont un peu longs du fait de la prise en charge du focus et du survol sur les 3 \u00e9l\u00e9ments.<\/p>\n<p class=\"center\"><a class=\"demonstration\" href=\"http:\/\/creativejuiz.fr\/blog\/doc\/paper-sheet-effect-css3.html\" hreflang=\"en\">D\u00e9monstration<\/a><\/p>\n<p>Et voil\u00e0, vous \u00eates arriv\u00e9s au bout !<br \/>\nJ&rsquo;ai bien conscience que les commentaires au sein du code CSS ne seront peut-\u00eatre pas suffisants pour tout le monde, n&rsquo;h\u00e9sitez pas \u00e0 commenter si vous rencontrez des difficult\u00e9s.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il y a quelques jours de cela je r\u00e9pondais \u00e0 un petit tweet d&rsquo;un confr\u00e8re pour donner une astuce sur la cr\u00e9ation d&rsquo;un effet graphique de feuilles superpos\u00e9es en CSS3. Le d\u00e9fi \u00e9tait de ne pas multiplier les \u00e9l\u00e9ments HTML pour r\u00e9aliser cet effet. C&rsquo;est chose faite. Jetons un \u0153il sur la technique utilis\u00e9e.<\/p>\n","protected":false},"author":4,"featured_media":2603,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_bluesky_dont_syndicate":"","_bluesky_syndication_accounts":"","_bluesky_syndication_text":"","footnotes":""},"categories":[17,9,12],"tags":[323,142,428,463,121],"coauthors":[],"class_list":["post-2588","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-css3","category-tutoriels","category-veille-technologique","tag-box-shadow","tag-css","tag-css3","tag-transform-origin","tag-transition"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2588","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/comments?post=2588"}],"version-history":[{"count":0,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2588\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/2603"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=2588"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=2588"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=2588"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=2588"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}