{"id":2147,"date":"2012-03-27T08:37:03","date_gmt":"2012-03-27T06:37:03","guid":{"rendered":"https:\/\/www.creativejuiz.fr\/blog\/?p=2147"},"modified":"2020-11-03T16:23:53","modified_gmt":"2020-11-03T15:23:53","slug":"css3-effet-parallaxe-sans-javascript","status":"publish","type":"post","link":"https:\/\/www.creativejuiz.fr\/blog\/tutoriels\/css3-effet-parallaxe-sans-javascript","title":{"rendered":"CSS3 &#8211; Effet parallaxe (sans JavaScript)"},"content":{"rendered":"<p>Retour des tutoriels CSS avec quelque chose d&rsquo;un peu original pour cet article : un effet parallaxe uniquement en CSS3.<br \/>\nC&rsquo;est \u00e0 la suite de l&rsquo;article de Simon Kern sur Alsacr\u00e9ations que m&rsquo;est venue l&rsquo;envie de tenter d&rsquo;utiliser CSS pour reproduire cet effet initialement con\u00e7u avec JavaScript.<!--more--><\/p>\n<p>L&rsquo;article <a href=\"http:\/\/www.alsacreations.com\/tuto\/lire\/1417-zoom-sur-effet-parallaxe.html\">zoom sur l&rsquo;effet parallaxe<\/a> de Simon est bien con\u00e7u, je vous invite \u00e0 le lire si vous pr\u00e9f\u00e9rez l&rsquo;utilisation de jQuery, ou si vous souhaitez d\u00e9couvrir une alternative ou un compl\u00e9ment \u00e0 ce tutoriel.<br \/>\nJ&rsquo;en profite pour remercier Simon qui m&rsquo;a autoris\u00e9 \u00e0 reprendre son design ainsi que la base du code qu&rsquo;il a con\u00e7u pour l&rsquo;article sur Alsacr\u00e9ations.<\/p>\n<p class=\"center\"><a class=\"demonstration\" href=\"\/trytotry\/css3-parallax\/\" hreflang=\"en\">D\u00e9monstration<\/a><\/p>\n<p>Place \u00e0 l&rsquo;explication !<\/p>\n<p class=\"message\">Pour les personnes qui cherchent un effet smooth pour passer d&rsquo;une ancre \u00e0 l&rsquo;autre, beaucoup plus simple que cette solution, sachez que CSS permet de le faire tr\u00e8s rapidement en 3 lignes de code : <a href=\"https:\/\/www.creativejuiz.fr\/blog\/css-css3\/css-smooth-scrolling-behavior\">Effet smooth scroll avec scroll-behavior<\/a><\/p>\n<h2>Concept<\/h2>\n<p>Pour r\u00e9aliser cet effet il nous faut plusieurs \u00e9l\u00e9ments qui vont nous permettre de simuler diff\u00e9rents plans. Ces plans vont se mouvoir dans le m\u00eame sens mais \u00e0 vitesses diff\u00e9r\u00e9es afin de donner l&rsquo;impression que certains sont en premier plan (mouvements rapides) d&rsquo;autres sont en arri\u00e8res plan (mouvements plus lents).<\/p>\n<p>Lorsque un tel effet est mis en place sur un site web, il l&rsquo;est souvent pour offrir une transition originale entre deux vues, un peut comme lors d&rsquo;un diaporama pour passer d&rsquo;une slide \u00e0 l&rsquo;autre.<\/p>\n<h2>Sch\u00e9matisation<\/h2>\n<p>Nous utiliserons trois plans pour r\u00e9aliser cet effet : un fond imag\u00e9 en CSS (dernier plan), notre contenu qui se trouve naturellement dans le flot du document (second plan), et des \u00e9l\u00e9ments plac\u00e9s ci et l\u00e0 (premier plan) pour ajouter de la profondeur.<\/p>\n<figure id=\"attachment_2312\" aria-labelledby=\"figcaption_attachment_2312\" class=\"wp-caption aligncenter\" style=\"width: 618px\"><img decoding=\"async\" class=\"size-full wp-image-2312\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/parallax-schema.png\" alt=\"\" width=\"608\" height=\"500\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/parallax-schema.png 608w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/parallax-schema-300x246.png 300w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/parallax-schema-600x493.png 600w\" sizes=\"(max-width: 608px) 100vw, 608px\" \/><figcaption id=\"figcaption_attachment_2312\" class=\"wp-caption-text\">L&rsquo;encadr\u00e9 gris repr\u00e9sente un slide, le fond gris une image de fond, le bloc jaune un bloc de contenu, et le personnage blanc un \u00e9l\u00e9ment de premier plan<\/figcaption><\/figure>\n<p>Le principe de l&rsquo;animation \u00e9tant \u00e9tabli, il nous faut \u00e9galement garder en t\u00eate que CSS ne permet pas de positionner les \u00e9l\u00e9ments en fonction de la position du contenu dans la page, ou en fonction de la position de la souris.<br \/>\nNous allons donc utiliser la pseudo classe <code class=\"pseudo-el\">target<\/code> afin de d\u00e9terminer \u00e0 quelle slide nous nous trouvons, et effectuer les animations en cons\u00e9quence.<\/p>\n<h2>Base HTML<\/h2>\n<p>Voici un code all\u00e9g\u00e9 qui reprend le contenu du document de <a href=\"\/trytotry\/css3-parallax\/\" hreflang=\"en\">d\u00e9monstration<\/a>. (je n&rsquo;ai repris que le contenu de <code class=\"element\">body<\/code>)<\/p>\n<pre class=\"code\"><code class=\"html\">&lt;!-- \u00e9l\u00e9ments cach\u00e9s pour jouer avec :target --&gt;\r\n&lt;span id=\"s1\"&gt;&lt;\/span&gt;\r\n&lt;span id=\"s2\"&gt;&lt;\/span&gt;\r\n&lt;span id=\"s3\"&gt;&lt;\/span&gt;\r\n\u00a0\r\n&lt;!-- Le gros conteneur qui va glisser --&gt;\r\n&lt;div id=\"wrap\"&gt;\r\n\u00a0\r\n\t&lt;!-- La navigation --&gt;\r\n\t&lt;ul id=\"nav\"&gt;\r\n\t\t&lt;li&gt;&lt;a href=\"#s1\"&gt;Splash&lt;\/a&gt;&lt;\/li&gt;\r\n\t\t&lt;li&gt;&lt;a href=\"#s2\"&gt;Lorem Schnapsum&lt;\/a&gt;&lt;\/li&gt;\r\n\t\t&lt;li&gt;&lt;a href=\"#s3\"&gt;Credits&lt;\/a&gt;&lt;\/li&gt;\r\n\t&lt;\/ul&gt;\r\n\u00a0\r\n\t&lt;!-- La slide 1 --&gt;\r\n\t&lt;div id=\"slide1\"&gt;\r\n\t\t&lt;div class=\"slide_inside\"&gt;\r\n\t\t\t&lt;!-- Le logo --&gt;\r\n\t\t\t&lt;h1&gt;&lt;img src=\"images\/logo-stop-wars.png\" alt=\"Stop Wars\"&gt;&lt;\/h1&gt;\r\n\t\t&lt;\/div&gt; &lt;!-- \/.slide_inside--&gt;\t \t\r\n\t&lt;\/div&gt; &lt;!-- \/#slide1 --&gt;\r\n\u00a0\r\n\t&lt;!-- La slide 2 --&gt;\r\n\t&lt;div id=\"slide2\"&gt;\r\n\t\t&lt;div class=\"slide_inside\"&gt;\r\n\t\t\t&lt;!-- Les deux \u00e9l\u00e9ments en 1er plan --&gt;\r\n\t\t\t&lt;!-- Mettez ici les images que vous voulez :) --&gt;\r\n\t\t\t&lt;img src=\"images\/bomb-squad-trooper.png\" id=\"trooper\" alt=\"\"&gt;\r\n\t\t\t&lt;img src=\"images\/clone.png\" id=\"clone\" alt=\"\"&gt;\r\n\u00a0\r\n\t\t\t&lt;h2&gt;Star Wars Parallax&lt;\/h2&gt;\r\n\t\t\t&lt;p&gt;Lorem Salu bissame !&lt;\/p&gt;\r\n\t\t&lt;\/div&gt; &lt;!-- \/.slide_inside--&gt;\t     \t\r\n\t&lt;\/div&gt; &lt;!-- \/#slide2 --&gt;\r\n\u00a0\t\r\n\t&lt;!-- La slide 2 --&gt;\r\n\t&lt;div id=\"slide3\"&gt;\r\n\t\t&lt;div class=\"slide_inside\"&gt;\t\t\t\r\n\t\t\t&lt;h2&gt;Credits&lt;\/h2&gt;\t\t\r\n\t\t\t[\u2026]\r\n\t\t&lt;\/div&gt; &lt;!-- \/.slide_inside--&gt;\t    \r\n\t&lt;\/div&gt; &lt;!--  \/#slide3 --&gt;\r\n&lt;\/div&gt;<\/code><\/pre>\n<p>Pour reprendre la structure de mani\u00e8re sch\u00e9matique, nous avons \u00e0 peu pr\u00e8s cela :<\/p>\n<p class=\"center\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2317\" title=\"\" src=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/stop-wars-schema.jpg\" alt=\"Trois zones, chacune d'elle poss\u00e8de un &quot;e;.slide_inside&quot;e;\" width=\"608\" height=\"713\" srcset=\"https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/stop-wars-schema.jpg 608w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/stop-wars-schema-255x300.jpg 255w, https:\/\/www.creativejuiz.fr\/blog\/wp-content\/uploads\/2012\/03\/stop-wars-schema-511x600.jpg 511w\" sizes=\"(max-width: 608px) 100vw, 608px\" \/><\/p>\n<p>Nous aurions pu utiliser HTML5 sans aucun probl\u00e8me, le principe est le m\u00eame.<br \/>\nMaintenant nous devons passer au CSS.<\/p>\n<h2>Beaucoup de styles<\/h2>\n<p>Dimensionnons nos conteneurs et pla\u00e7ons nos images de fond. Le code suivant est comment\u00e9 pour vous aider \u00e0 le comprendre.<\/p>\n<pre class=\"code\"><code class=\"css\">body {\r\n\tmargin: 0; padding: 0; \/* annulation des marges *\/\r\n\toverflow: hidden; \/* on cache le d\u00e9bordement de contenu *\/\r\n\tcolor: #fff;\r\n\tbackground: #000;\r\n}\r\n\u00a0\r\n#wrap {\r\n\t\/* position du conteneur pour le pr\u00e9parer \u00e0 bouger *\/\r\n\tposition: relative;\r\n\ttop: 0;\r\n\t\/* on pr\u00e9pare la transition \u00e0 venir *\/\r\n\ttransition: top 1.4s cubic-bezier(.49,.22,.52,1.35);\r\n}\r\n\u00a0\r\n#nav {\r\n\t\/* on fixe le menu en haut *\/\r\n\tposition: fixed;\r\n\ttop: 0; left: 0; right: 0;\r\n\tpadding: 1em 0;\r\n\tmargin: 0;\r\n\t\/* on centre les liens *\/\r\n\ttext-align: center;\r\n\tbackground: #000;\r\n}\r\n#nav li {\r\n\t\/* on aligne les \u00e9l\u00e9ments de liste *\/\r\n\tdisplay: inline;\r\n\tmargin:0;\r\n}\r\n#nav a {\r\n\t\/* on applique des marges aux liens *\/\r\n\tdisplay: inline-block;\r\n\tmargin: 0 3em;\r\n\tcolor: #eee;\r\n\t\/* on applique une petite lueur *\/\r\n\ttext-shadow: 0 0 5px #fff;\r\n\t\/* on pr\u00e9voit une petite transition (lueur) *\/\r\n\ttransition: all 1s;\r\n}<\/code><\/pre>\n<p>\u00c7a c&rsquo;\u00e9tait pour l&rsquo;aspect du cadre, nous allons mettre en styles les diff\u00e9rents slides et leur attribuer une image de fond tout en pr\u00e9voyant les transitions.<br \/>\nNous allons en profiter pour styler les contenus.<\/p>\n<pre class=\"code\"><code class=\"css\">\/* slides *\/\r\n#slide1, #slide2, #slide3 {\r\n\t\/* height \u00e0 adapter avec media queries *\/\r\n\theight: 1000px;\r\n\tpadding-top:100px;\r\n\t\/* pr\u00e9paration des transitions *\/\r\n\ttransition: background-position 1.4s  cubic-bezier(.49,.22,.52,1.35);\r\n}\r\n\/* attribution des images de fond *\/\r\n#slide1 { background:url(images\/slide1-bg.jpg) center 0 no-repeat fixed; }\r\n#slide2 { background: url(images\/slide2-bg.jpg) center 0 no-repeat fixed; }\r\n#slide3 { background: url(images\/slide3-bg.jpg) center 0 no-repeat fixed; }\r\n\u00a0\r\n\/* Contenus des slides *\/\r\n.slide_inside {\r\n\twidth: 770px;\r\n\tmargin: 0 auto;\r\n\tposition: relative;\r\n\tbackground-color: rgba(0, 0, 0, .6);\r\n\tpadding: 50px;\r\n}\r\n\r\n#slide1 .slide_inside {\r\n\ttext-align: center;\r\n\tbackground-color: transparent;\r\n}\r\n#slide2 .slide_inside p {\r\n\twidth: 500px;\r\n\ttext-align: justify;\r\n}\r\n#slide3 .slide_inside {\r\n\tmargin-top: 50px;\r\n}<\/code><\/pre>\n<p class=\"message important\">Attention, Webkit semble ne pas supporter la valeur 1.35 de la fonction <code>cubic-bezier()<\/code>, il conviendra de corriger le tir en utilisant la syntaxe <code>-webkit-transition: top 1.4s cubic-bezier(.49,.22,.52,1);<\/code><\/p>\n<p>Les images de fond et les contenus sont pr\u00eats.<br \/>\nOn va maintenant positionner et d\u00e9former (<code>transform<\/code>) nos petits personnages en pr\u00e9voyant \u00e9galement leurs transitions.<\/p>\n<pre class=\"code\"><code class=\"css\">\/* positionnement des personnages anim\u00e9s *\/\r\n#trooper, #clone {\r\n\tposition: absolute;\r\n\tleft:-180px; top: 300px;\r\n\t\/* on tourne l\u00e9g\u00e8rement les images *\/\r\n\ttransform: rotate(10deg);\r\n\t\/* et on pr\u00e9voit une transition *\/\r\n\ttransition: all 1.4s cubic-bezier(.49,.22,.52,1);\r\n}\r\n\/* positionnement diff\u00e9r\u00e9 d'un des 2 personnages *\/\r\n#clone {\r\n\tleft: -280px;\r\n\ttop: 400px;\r\n}<\/code><\/pre>\n<p>Voil\u00e0, tous nos \u00e9l\u00e9ments sont positionn\u00e9s.<br \/>\nMaintenant il faut revoir le positionnement de tous ces \u00e9l\u00e9ments en fonction de l&rsquo;\u00e9l\u00e9ment cibl\u00e9 lors d&rsquo;un clic, c&rsquo;est l\u00e0 que la pseudo classe <code class=\"pseudo-class\">target<\/code> va jouer son r\u00f4le.<\/p>\n<h2>Animation en fonction de la cible<\/h2>\n<p>Le principe va \u00eatre le m\u00eame pour chaque \u00e9l\u00e9ment cibl\u00e9 par notre menu de navigation.<br \/>\nJe vais donc expliquer le code pour le second \u00e9l\u00e9ment cibl\u00e9 (lorsque nous cliquons sur le deuxi\u00e8me \u00e9l\u00e9ment de menu).<\/p>\n<p>Nous allons utiliser la m\u00e9thode propos\u00e9e par Vincent De Oliveira dans son article \u00ab\u00a0<a title=\"Article sur CSS3Create\" href=\"http:\/\/www.css3create.com\/Astuce-Empecher-le-scroll-avec-l-utilisation-de-target\">Emp\u00eacher le scroll avec l&rsquo;utilisation de target<\/a>\u00a0\u00bb afin d&rsquo;\u00e9viter qu&rsquo;un saut dans la page soit effectu\u00e9 lorsque l&rsquo;on demande \u00e0 rejoindre une ancre.<\/p>\n<pre class=\"code\"><code class=\"css\">\/* d\u00e9calage du conteneur vers le haut *\/\r\n#s2:target ~ #wrap {\r\n\ttop:-1000px;\r\n}\r\n\u00a0\r\n\/* d\u00e9calage des fonds de chaque slide *\/\r\n#s2:target ~ #wrap #slide1 { background-position: 50% 36%; }\r\n#s2:target ~ #wrap #slide2 { background-position: 50% 0%; }\r\n#s2:target ~ #wrap #slide3 { background-position: 50% -30%; }\r\n\u00a0\r\n\/* mouvements d'un des personnages *\/\r\n#s2:target ~ #wrap #trooper { \r\n\tleft: -180px;\r\n\ttop: -100px;\r\n\ttransform: rotate(-7deg);\r\n}\r\n\u00a0\r\n\/* mouvements de l'autre personnage *\/\r\n#s2:target ~ #wrap #clone {\r\n\tleft: -350px;\r\n\ttop: 50px;\r\n\ttransform: rotate(0deg);\r\n}\r\n\u00a0\r\n\/* juste pour la d\u00e9co (lueur sur le lien cliqu\u00e9) *\/\r\n#s2:target ~ #wrap #nav li:first-child + li a {\r\n\ttext-shadow: 0 0 5px #eca603, 0 0 5px #eca603, 0 0 5px #eca603, 0 0 5px #eca603;\r\n}<\/code><\/pre>\n<p>Pour traduire l&rsquo;un des s\u00e9lecteurs CSS avanc\u00e9s en fran\u00e7ais, on pourrait dire : \u00ab\u00a0Lorsque <code>#s2<\/code> est cibl\u00e9, je cherche un <code>#wrap<\/code> directement ou indirectement fr\u00e8re et je style l&rsquo;\u00e9l\u00e9ment <code>#clone<\/code> qui se trouve dedans\u00a0\u00bb (interpr\u00e9tation du s\u00e9lecteur de la ligne 19).<\/p>\n<p>Le principe est le m\u00eame lorsque l&rsquo;on cible les autres slides.<br \/>\nLe plus dur pour vous maintenant, c&rsquo;est de trouver quels changements appliquer, \u00e0 quelle vitesse (distance\/temps) et dans quelle condition.<\/p>\n<p>Je vous donne le code CSS pour les deux slides restantes. (quand m\u00eame !)<\/p>\n<pre class=\"code\"><code class=\"css\">\/* vers Slide 1 *\/\r\n#s1:target ~ #wrap { top:0px; }\r\n#s1:target ~ #wrap #nav li:first-child a { text-shadow: 0 0 5px #eca603, 0 0 5px #eca603, 0 0 5px #eca603, 0 0 5px #eca603; }\r\n#s1:target ~ #wrap #slide1 { background-position: 50% 0%; }\r\n#s1:target ~ #wrap #slide2 { background-position: 50% -35%; }\r\n#s1:target ~ #wrap #slide3 { background-position: 50% -60%; }\r\n#s1:target ~ #wrap #trooper { left: -180px; top: 300px; transform: rotate(10deg); }\r\n#s1:target ~ #wrap #clone { left: -280px; top: 300px; transform: rotate(10deg); }\r\n\u00a0\r\n\/* vers Slide 3 *\/\r\n#s3:target ~ #wrap { top:-2150px; }\r\n#s3:target ~ #wrap #nav li:last-child a { text-shadow: 0 0 5px #eca603, 0 0 5px #eca603, 0 0 5px #eca603, 0 0 5px #eca603; }\r\n#s3:target ~ #wrap #slide1 { background-position: 50% 60%; }\r\n#s3:target ~ #wrap #slide2 { background-position: 50% 35%; }\r\n#s3:target ~ #wrap #slide3 { background-position: 50% 0%; }\r\n#s3:target ~ #wrap #trooper { left:-1500px;top:-1000px; transform: rotate(-15deg); }\r\n#s3:target ~ #wrap #clone { left:-1000px;top: -800px; transform: rotate(-15deg); }<\/code><\/pre>\n<p>Le code CSS complet se trouve ici : <a href=\"http:\/\/www.creativejuiz.fr\/trytotry\/css3-parallax\/style.css\">CSS de la d\u00e9mo<\/a><\/p>\n<p>Vous aurez not\u00e9 que les \u00e9l\u00e9ments cibl\u00e9s sont nos <code class=\"element\">span<\/code> du tout d\u00e9but du code HTML. \u00c0 partir de ce type de cible, nous pouvons parcourir tout le DOM afin de s\u00e9lectionner l&rsquo;\u00e9l\u00e9ment \u00e0 styler.<\/p>\n<p>N&rsquo;h\u00e9sitez pas si vous avez des questions \ud83d\ude09<\/p>\n<p class=\"center\"><a class=\"demonstration\" href=\"\/trytotry\/css3-parallax\/\" hreflang=\"en\">D\u00e9monstration<\/a><\/p>\n<div class=\"sources\">\n<h2>Liens utiles<\/h2>\n<ul>\n<li><a title=\"Article sur CSS3Create\" href=\"http:\/\/www.css3create.com\/Astuce-Empecher-le-scroll-avec-l-utilisation-de-target\">CSS3Create &#8211; Emp\u00eacher le scroll avec l&rsquo;utilisation de target&lt;\/a<\/a><\/li>\n<li><a lang=\"en\" href=\"http:\/\/cubic-bezier.com\" hreflang=\"en\">Cubic Bezier Tool<\/a><\/li>\n<li><a href=\"\/trytotry\/css3-parallax\/\" hreflang=\"en\">D\u00e9monstration<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Retour des tutoriels CSS avec quelque chose d&rsquo;un peu original pour cet article : un effet parallaxe uniquement en CSS3. C&rsquo;est \u00e0 la suite de l&rsquo;article de Simon Kern sur Alsacr\u00e9ations que m&rsquo;est venue l&rsquo;envie de tenter d&rsquo;utiliser CSS pour reproduire cet effet initialement con\u00e7u avec JavaScript.<\/p>\n","protected":false},"author":4,"featured_media":2330,"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":[120,428,448,378,121],"coauthors":[597],"class_list":["post-2147","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-css-css3","category-tutoriels","category-veille-technologique","tag-animation","tag-css3","tag-parallaxe","tag-target","tag-transition"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2147","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=2147"}],"version-history":[{"count":1,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2147\/revisions"}],"predecessor-version":[{"id":7601,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/posts\/2147\/revisions\/7601"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media\/2330"}],"wp:attachment":[{"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/media?parent=2147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/categories?post=2147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/tags?post=2147"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.creativejuiz.fr\/blog\/wp-json\/wp\/v2\/coauthors?post=2147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}