{"id":1541,"date":"2022-09-17T19:08:59","date_gmt":"2022-09-17T17:08:59","guid":{"rendered":"https:\/\/jagullo.fr\/blog\/?p=1541"},"modified":"2022-09-23T08:06:29","modified_gmt":"2022-09-23T06:06:29","slug":"presentation-du-framework-tailwind-css","status":"publish","type":"post","link":"https:\/\/jagullo.fr\/blog\/presentation-du-framework-tailwind-css\/","title":{"rendered":"Pr\u00e9sentation du framework Tailwind CSS"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Faire du CSS sans une ligne de code CSS<\/h2>\n\n\n\n<p><a href=\"https:\/\/tailwindcss.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Tailwind CSS<\/a> est relativement r\u00e9cent dans le monde des frameworks CSS. La premi\u00e8re version est sortie en 2019 soit 4 ans apr\u00e8s la premi\u00e8re version de Bootstrap. Ce projet open source poss\u00e8de une assez forte communaut\u00e9 et il est tr\u00e8s suivi sur Github. Le slogan d\u00e9crit exactement la philosophie : <strong>\u00ab\u00a0Rapidly build modern websites without ever leaving your HTML.\u00a0\u00bb<\/strong>. La principale caract\u00e9ristique de ce framework est de proposer un ensemble de classes CSS pr\u00e9-\u00e9crites \u00e0 utiliser directement dans le code HTML. L&rsquo;objectif est donc de r\u00e9aliser enti\u00e8rement la mise en page avec les classes propos\u00e9es par Tailwind.<\/p>\n\n\n\n<p>Tailwind propose un fichier de configuration JavaScript pour personnaliser l&rsquo;ensemble des classes. On peut par exemple modifier les codes couleurs par d\u00e9faut, les polices, les espacements, etc. L&rsquo;installation se fait soit par la CLI Tool qui propose des commandes pour compiler son projet ou soit en plug-in postCSS qui permet d&rsquo;utiliser <strong>les compilateurs Sass ou Less<\/strong>. Au niveau de la compatibilit\u00e9 avec les navigateurs, le framework fonctionne sur les navigateurs r\u00e9cents, mais il ne prend pas en charge IE 11.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/illustration_tailwind-css.jpg\" alt=\"Tailwind CSS un framework moderne pour du responsive web design\" class=\"wp-image-1713\" width=\"720\" height=\"480\" srcset=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/illustration_tailwind-css.jpg 960w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/illustration_tailwind-css-300x200.jpg 300w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/illustration_tailwind-css-768x512.jpg 768w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><figcaption>Tailwind CSS un framework moderne pour du responsive web design<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Exemple de code HTML avec Tailwind CSS<\/h2>\n\n\n\n<p>En reprenant l&rsquo;exemple de la page d&rsquo;accueil du site de Tailwind CSS qui repr\u00e9sente <strong>un composant carte<\/strong> avec une photo de profil, une description, le nom de la personne et son statut, on remarque que tout le code CSS est ajout\u00e9 dans les attributs classes des blocs HTML. Aucun autre style ne vient s&rsquo;ajouter en passant par du CSS personnalis\u00e9.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"405\" height=\"420\" src=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_card-tailwind.png\" alt=\"Composant carte avec Tailwind CSS\" class=\"wp-image-1699\" srcset=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_card-tailwind.png 405w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_card-tailwind-289x300.png 289w\" sizes=\"(max-width: 405px) 100vw, 405px\" \/><figcaption>Composant carte avec Tailwind CSS<\/figcaption><\/figure>\n\n\n\n<pre class=\"wp-block-code language-html\"><code>&lt;figure class=\"bg-slate-100 rounded-xl p-8 dark:bg-slate-800\"&gt;\n  &lt;img class=\"w-24 h-24 rounded-full\" src=\"\/palm.jpg\" alt=\"\" width=\"384\" height=\"512\"&gt;\n  &lt;div class=\"pt-6 space-y-4\"&gt;\n    &lt;blockquote&gt;\n      &lt;p class=\"text-lg\"&gt;\n        \u201cTailwind CSS is the only framework that I've seen scale\n        on large teams. It\u2019s easy to customize, adapts to any design,\n        and the build size is tiny.\u201d\n      &lt;\/p&gt;\n    &lt;\/blockquote&gt;\n    &lt;figcaption class=\"font-medium\"&gt;\n      &lt;div class=\"text-sky-500 dark:text-sky-400\"&gt;\n        Sarah Dayan\n      &lt;\/div&gt;\n      &lt;div class=\"text-slate-700 dark:text-slate-500\"&gt;\n        Staff Engineer, Algolia\n      &lt;\/div&gt;\n    &lt;\/figcaption&gt;\n  &lt;\/div&gt;\n&lt;\/figure&gt;<\/code><\/pre>\n\n\n\n<p>Le code est relativement bien pens\u00e9 et permet de r\u00e9aliser facilement <strong>des mises en page CSS<\/strong> avec seulement du code HTML. Cependant c&rsquo;est une technique qui ne sera pas adapt\u00e9e \u00e0 chaque d\u00e9veloppeur web. Certains codeurs pr\u00e9f\u00e9reront utiliser des styles CSS afin de bien s\u00e9parer la couche HTML de l&rsquo;aspect visuel de son projet. On peut se retrouver avec de longues classes CSS qui peuvent \u00eatre difficilement lisibles surtout dans une page un peu longue.<\/p>\n\n\n\n<pre class=\"wp-block-code language-html\"><code>&lt;a class=\"group inline-flex items-center h-9 rounded-full text-sm font-semibold whitespace-nowrap px-3 focus:outline-none focus:ring-2 bg-indigo-50 text-indigo-600 hover:bg-indigo-200 hover:text-indigo-700 focus:ring-indigo-500 dark:bg-slate-700 dark:text-slate-100 dark:hover:bg-slate-600 dark:hover:text-white dark:focus:ring-slate-500 mt-8\" href=\"\/docs\/utility-first\"&gt;\n  Learn more &lt;span class=\"sr-only\"&gt;, utility-first fundamentals&lt;\/span&gt;\n  &lt;svg class=\"overflow-visible ml-3 text-indigo-300 group-hover:text-indigo-400 dark:text-slate-500 dark:group-hover:text-slate-400\" width=\"3\" height=\"6\" viewBox=\"0 0 3 6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"&gt;&lt;path d=\"M0 0L3 3L0 6\"&gt;&lt;\/path&gt;&lt;\/svg&gt;\n&lt;\/a&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Test de performance du framework<\/h2>\n\n\n\n<p>La logique de Tailwind est d&rsquo;utiliser au plus possible les classes pr\u00e9-\u00e9crites dans les balises HTML. Cette fa\u00e7on de faire peut <strong>engendrer des probl\u00e8mes de performance<\/strong> et d&rsquo;optimisation en surchargeant le DOM. En comparant les performances de la page d&rsquo;accueil de la documentation de Tailwind \u00e0 celle de Bootstrap avec l&rsquo;outil PageSpeed Insights nous pouvons relever des diff\u00e9rences notables. Utiliser la page d&rsquo;accueil de la documentation pour cette analyse de performance permet de bien comparer 2 pages \u00e9quivalentes sans images \u00e0 charger ou tr\u00e8s peu.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_tailwind-perf.png\" alt=\"\" class=\"wp-image-1681\" width=\"720\" height=\"465\" srcset=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_tailwind-perf.png 960w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_tailwind-perf-300x194.png 300w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_tailwind-perf-768x496.png 768w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><figcaption>Performance de la page <a href=\"https:\/\/tailwindcss.com\/docs\/installation\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/tailwindcss.com\/docs\/installation<\/a> avec la version 3.1.8<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_bootstrap-perf.png\" alt=\"\" class=\"wp-image-1680\" width=\"720\" height=\"465\" srcset=\"https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_bootstrap-perf.png 960w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_bootstrap-perf-300x194.png 300w, https:\/\/jagullo.fr\/blog\/wp-content\/uploads\/2022\/09\/screen_bootstrap-perf-768x496.png 768w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><figcaption>Performance de la page <a href=\"https:\/\/getbootstrap.com\/docs\/5.2\/getting-started\/introduction\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">https:\/\/getbootstrap.com\/docs\/5.2\/getting-started\/introduction\/<\/a> avec la version 5.2<\/figcaption><\/figure>\n\n\n\n<p>Les plus grandes diff\u00e9rences que l&rsquo;on peut remarquer sont sur les m\u00e9triques <strong>Time to Interactive<\/strong> et <strong>Total Blocking Time<\/strong> qui sont largement sup\u00e9rieures sur la page d&rsquo;accueil de la documentation de Tailwind. La m\u00e9trique <strong>Interaction to Next Paint<\/strong> est une donn\u00e9e exp\u00e9rimentale qui analyse un ensemble d&rsquo;action de l&rsquo;utilisateur afin de mesurer la r\u00e9activit\u00e9 de la page. On peut remarquer que l\u00e0 encore le framework Bootstrap est plus rapide en performance. Attention cependant \u00e0 l&rsquo;interpr\u00e9tation de ces r\u00e9sultats, car peut \u00eatre que certains scripts de la documentation viennent alterner ces m\u00e9triques. Il faudrait faire des tests de performance en partant sur une base vide et en comparant chaque composant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La biblioth\u00e8que de composants Tailwind UI<\/h2>\n\n\n\n<p>En plus du framework de base, les cr\u00e9ateurs de Tailwind ont d\u00e9velopp\u00e9 <a href=\"https:\/\/tailwindui.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Tailwind UI<\/a> qui est une biblioth\u00e8que incluant plus de 500 composants et plusieurs templates tout faits \u00e0 utiliser pour ses projets personnels et professionnels. Les templates ainsi que la plupart des composants sont payants en passant par l&rsquo;achat d&rsquo;une licence \u00e0 vie pour acc\u00e9der \u00e0 toute la librairie. C&rsquo;est une offre tr\u00e8s int\u00e9ressante au vu de l\u2019ensemble du travail r\u00e9alis\u00e9 par l\u2019\u00e9quipe derri\u00e8re Tailwind.<\/p>\n\n\n\n<p><strong>De nombreux types de composants<\/strong> sont d\u00e9j\u00e0 cr\u00e9\u00e9s comme les composants bouton, banni\u00e8re, header, footer, inscription \u00e0 la newsletter, sidebar, article de blog, statistiques, colonnes de prix, etc. que l&rsquo;on peut personnaliser. Que ce soit pour un petit projet ou un site professionnel, tous ces composants permettent de gagner beaucoup de temps de d\u00e9veloppement tout en ayant une base bien optimis\u00e9e.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Avoir quelques connaissances en CSS<\/h2>\n\n\n\n<p>Ne pas \u00e9crire du code CSS ne veut pas dire qu&rsquo;il ne faut pas conna\u00eetre le CSS pour maitriser ce framework. Pour en profiter pleinement, il faut avoir <strong>quelques bases en CSS<\/strong>. Comme tout se passe avec les classes propos\u00e9es par Tailwind CSS (police, marge, espacement, couleur, ombre, etc.) il faut conna\u00eetre les principales propri\u00e9t\u00e9s CSS afin de savoir les exploiter.<\/p>\n\n\n\n<p>Enfin ce framework tire profit du standard des flexbox pour l&rsquo;alignement des \u00e9l\u00e9ments. Un syst\u00e8me de media query similaire \u00e0 celui de Bootstrap est utilis\u00e9 pour afficher une page responsive selon des breakpoints ou l&rsquo;on peut utiliser un syst\u00e8me de grille. Tailwind CSS est un framework l\u00e9ger qui une fois compress\u00e9 ne p\u00e8se que 10kB ce qui permet d&rsquo;avoir un chargement tr\u00e8s rapide m\u00eame sur mobile. <\/p>\n\n\n\n<link rel=\"stylesheet\" href=\"\/blog\/wp-content\/themes\/Extra-child\/assets\/css\/prism.css\">\n<script src=\"\/blog\/wp-content\/themes\/Extra-child\/assets\/js\/prism.js\"><\/script>\n<div class=\"list-tags\"><a href=\"https:\/\/jagullo.fr\/blog\/tag\/bootstrap\/\" class=\"link-tag\" title=\"Bootstrap\">Bootstrap<\/a><a href=\"https:\/\/jagullo.fr\/blog\/tag\/css-sass-less\/\" class=\"link-tag\" title=\"CSS \/ SASS \/ LESS\">CSS \/ SASS \/ LESS<\/a><a href=\"https:\/\/jagullo.fr\/blog\/tag\/html\/\" class=\"link-tag\" title=\"HTML\">HTML<\/a><\/div>","protected":false},"excerpt":{"rendered":"<p>Faire du CSS sans une ligne de code CSS Tailwind CSS est relativement r\u00e9cent dans le monde des frameworks CSS. La premi\u00e8re version est sortie en 2019 soit 4 ans apr\u00e8s la premi\u00e8re version de Bootstrap. Ce projet open source poss\u00e8de une assez forte communaut\u00e9 et il est tr\u00e8s suivi sur Github. Le slogan d\u00e9crit [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1713,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[9],"tags":[23,28,30],"class_list":["post-1541","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-outils-et-technos","tag-bootstrap","tag-css-sass-less","tag-html","et-has-post-format-content","et_post_format-et-post-format-standard"],"_links":{"self":[{"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/posts\/1541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/comments?post=1541"}],"version-history":[{"count":3,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/posts\/1541\/revisions"}],"predecessor-version":[{"id":1721,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/posts\/1541\/revisions\/1721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/media\/1713"}],"wp:attachment":[{"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/media?parent=1541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/categories?post=1541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jagullo.fr\/blog\/wp-json\/wp\/v2\/tags?post=1541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}