{"id":7070,"date":"2021-08-19T10:06:33","date_gmt":"2021-08-19T08:06:33","guid":{"rendered":"https:\/\/dhosting.pl\/pomoc\/?p=7070"},"modified":"2022-09-14T12:43:27","modified_gmt":"2022-09-14T10:43:27","slug":"tailwind-css-alternatywa-bootstrap","status":"publish","type":"post","link":"https:\/\/dhosting.pl\/pomoc\/tailwind-css-alternatywa-bootstrap\/","title":{"rendered":"Tailwind CSS \u2013 utility-first framework alternatyw\u0105 dla Bootstrap"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7115 size-full\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/06\/Tailwind-baner_OK.jpg\" alt=\"Tailwind CSS grafika przewodnia\" width=\"945\" height=\"400\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/06\/Tailwind-baner_OK.jpg 945w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/06\/Tailwind-baner_OK-300x127.jpg 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/06\/Tailwind-baner_OK-768x325.jpg 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><\/p>\n<p>Tailwind CSS to framework, kt\u00f3ry umo\u017cliwia tworzenie layoutu strony z poziomu template HTML, bez konieczno\u015bci tworzenia arkuszy styl\u00f3w.<\/p>\n<p>W przeciwie\u0144stwie do takich narz\u0119dzi jak Bootstrap, opisuje on element wizualnie, a nie funkcjonalnie. W przypadku Bootstrap dla przycisku u\u017cyjesz klasy <span class=\"code-short-format\">btn<\/span>, kt\u00f3ra opisuje <span class=\"code-short-format\">padding<\/span>, <span class=\"code-short-format\">border-radius<\/span> i pozosta\u0142e aspekty wizualne Twojego elementu. Dla Tailwind CSS musisz znale\u017a\u0107 klasy CSS odpowiadaj\u0105ce za poszczeg\u00f3lne w\u0142asno\u015bci wizualne, np.<span class=\"code-short-format\"> px-1 py-0.5 rounded<\/span>. Mo\u017cna by nawet stwierdzi\u0107, \u017ce Tailwindowi bli\u017cej jest do inline\u2019owych styl\u00f3w HTML.<\/p>\n<p>W ramach tego poradnika utworzysz projekt HTML i CSS, do kt\u00f3rego dodasz Tailwind CSS. Dowiesz si\u0119 te\u017c, jak z jego pomoc\u0105 tworzy\u0107 nowoczesne strony WWW z poziomu HTML.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Do_kogo_kierowany_jest_ten_poradnik\"><\/span>Do kogo kierowany jest ten poradnik?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Poradnik kierowany jest do os\u00f3b pracuj\u0105cych z technologiami frontendowymi, kt\u00f3re chc\u0105 uporz\u0105dkowa\u0107 sw\u00f3j kod CSS i przyspieszy\u0107 tworzenie nowoczesnych stron WWW.<\/p>\n<div id=\"dhost-1024816650\" class=\"dhost-inpost dhost-entity-placement\"><a href=\"https:\/\/dhosting.pl\/opieka-stron.html?utm_source=pomoc&utm_medium=artykul&utm_campaign=pomoc\" target=\"_blank\">\r\n\t<img decoding=\"async\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2025\/01\/baner-opieka.png\" alt=\"opieka stron www\">\r\n<\/a>\r\n<br \/>\r\n<br \/><\/div><h2><span class=\"ez-toc-section\" id=\"Czego_potrzebujesz\"><\/span>Czego potrzebujesz?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Zainstalowanego Node.js i terminala (konsoli).<\/li>\n<li>Edytora kodu. Osobi\u015bcie korzystam z WebStorm, ale Ty mo\u017cesz wybra\u0107 dowolny edytor. Je\u017celi nie masz w\u0142asnych preferencji, mo\u017cesz skorzysta\u0107 z darmowego Visual Code Studio.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Czego_sie_nauczysz\"><\/span>Czego si\u0119 nauczysz?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Dzi\u0119ki niniejszemu poradnikowi dowiesz si\u0119, jak doda\u0107 Tailwind CSS do projektu przy u\u017cyciu PostCSS. Nast\u0119pnie poka\u017c\u0119 Ci, jak skonfigurowa\u0107 i zoptymalizowa\u0107 produkcyjn\u0105 wersj\u0119 Tailwinda. W tym poradniku nie zakodujesz \u017cadnego komponentu, to b\u0119dzie Twoje zadanie domowe.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Tailwind_nie_jest_kolejnym_Bootstrapem\"><\/span>Tailwind nie jest kolejnym Bootstrapem<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>W czasach kiedy Vue, React, Angular nie by\u0142y tak popularne, a w \u015bwiecie raczkuj\u0105cego frontendu kr\u00f3lowa\u0142o jQuery, kawa\u0142ek tortu popularno\u015bci przypad\u0142 tak\u017ce Bootstrapowi.<\/p>\n<p>Bootstrap dostarcza zbi\u00f3r gotowych ostylowanych komponent\u00f3w UI. Znajdziesz w nim kontrolki formularzy, alerty, cardy, modale i wiele, wiele innych element\u00f3w interfejsu. U\u017cytkownik chc\u0105c doda\u0107 alert do strony WWW korzysta z klas <span class=\"code-short-format\">alert alert-primary<\/span><\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;div class=&quot;alert alert-primary&quot;&gt;&lt;\/div&gt;<\/code><\/pre>\n<p>Gdyby chcie\u0107 u\u017cy\u0107 przycisku, by\u0142aby to klasa <span class=\"code-short-format\">btn btn-primary<\/span>.<\/p>\n<p>Bootstrap sprawdza si\u0119, je\u017celi \u201ena szybko\u201d chcesz stworzy\u0107 panel administratora lub prost\u0105 stron\u0119 WWW. Znacznie gorzej wygl\u0105da to w przypadku nowoczesnych stron WWW z rozbudowanym designem.<\/p>\n<p>Tu na scen\u0119 wkracza Tailwind CSS, kt\u00f3ry mo\u017cna por\u00f3wna\u0107 do pisania inline\u2019owych styl\u00f3w w HTML. W przeciwie\u0144stwie do nich, ma on jednak znacznie wi\u0119ksze mo\u017cliwo\u015bci i jest bardziej przyjazny u\u017cytkownikowi.<\/p>\n<div class=\"info-alert-format\">\n<p>Tailwind jest zbiorem klas, dzi\u0119ki kt\u00f3remu zarz\u0105dzasz w\u0142a\u015bciwo\u015bciami CSS z poziomu HTMLa.<\/p>\n<\/div>\n<p>Co to oznacza?<\/p>\n<p>W przypadku Bootstrapa przycisk tworzysz korzystaj\u0105c z klas <span class=\"code-short-format\">btn btn-primary<\/span>. Tworz\u0105c style dla przycisku w Tailwind napiszesz nast\u0119puj\u0105cy kod:<\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;button class=\u201dpy-1 px-0.5 rounded-md bg-blue-500 hover:bg-blue-600\u201d&gt;&lt;\/button&gt;<\/code><\/pre>\n<p>Przy u\u017cyciu Tailwind CSS opiszesz, jak ma wygl\u0105da\u0107 nasz przycisk, a nie jak w Bootstrap, gdzie okre\u015blisz go jako <span class=\"code-short-format\">.btn<\/span><\/p>\n<p>Na pierwszy rzut oka wida\u0107, \u017ce kod z u\u017cyciem Tailwinda b\u0119dzie d\u0142u\u017cszy, jednak w \u015bwiecie nowoczesnego frontendu przycisk i tak b\u0119dzie jakim\u015b komponentem, kt\u00f3ry b\u0119dzie u\u017cywany wielokrotnie.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Dodatek_Tailwind_CSS_IntelliSense_do_VS_Code\"><\/span>Dodatek Tailwind CSS IntelliSense do VS Code<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Korzystaj\u0105c z Visual Code Studio zainstaluj dodatek <a target=\"_blank\" href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=bradlc.vscode-tailwindcss\" rel=\"noopener\">Tailwind CSS IntelliSense<\/a>. Przy\u015bpieszy on prac\u0119 z Tailwind dzi\u0119ki funkcji podpowiadania nazw klas.<\/p>\n<p><a href=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind.png\"><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7078\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind-300x150.png\" alt=\"strona g\u0142\u00f3wna Tailwind\" width=\"800\" height=\"400\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind-300x150.png 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind-1024x512.png 1024w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind-768x384.png 768w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind-1536x768.png 1536w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/strona-glowna-Tailwind-2048x1024.png 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Dodatek Tailwind CSS IntelliSense potrafi tak\u017ce pod\u015bwietli\u0107 potencjalne b\u0142\u0119dy w CSS i HTML oraz rozwija\u0107 implementacj\u0119 css wybranej klasy.<\/p>\n<p>Edytory kodu od JetBrains (WebStorm, PhpStorm) obs\u0142uguj\u0105 Tailwind CSS bez konieczno\u015bci instalacji dodatk\u00f3w.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Krok_1_%E2%80%93_Struktura_projektu\"><\/span>Krok 1 \u2013 Struktura projektu<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Na potrzeby poradnika stworzysz bardzo prosty projekt, w kt\u00f3rym skorzystasz z Tailwind CSS. Utw\u00f3rz katalog <span class=\"code-short-format\">tailwind<\/span>, a nast\u0119pnie dodaj do niego pliki <span class=\"code-short-format\">index.html, style.css<\/span> i <span class=\"code-short-format\">postcss.config.js<\/span>.<\/p>\n<p>W projekcie b\u0119dziesz u\u017cywa\u0107<span class=\"code-short-format\"> npm.<\/span> Otw\u00f3rz terminal i utw\u00f3rz plik <span class=\"code-short-format\">package.json<\/span> wpisuj\u0105c w terminalu:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm init<\/code><\/pre>\n<p>Struktura Twoje katalogu powinna wygl\u0105da\u0107 nast\u0119puj\u0105co:<\/p>\n<div class=\"code-format\">\n<p>index.html<br \/>\npackage.json<br \/>\npostscss.config.js<br \/>\nstyles.css<\/p>\n<\/div>\n<p>Przed przej\u015bciem do kolejnego kroku dodaj do pliku <span class=\"code-short-format\">.html<\/span> nast\u0119puj\u0105cy kod:<\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=&quot;UTF-8&quot;&gt;\n&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; \/&gt;\n&lt;link href=&quot;tailwind.css&quot; rel=&quot;stylesheet&quot;&gt;\n&lt;title&gt;Tailwind CSS&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Krok_2_%E2%80%93_Instalacja_Tailwind_CSS\"><\/span>Krok 2 \u2013 Instalacja Tailwind CSS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tailwind CSS jest dost\u0119pny jako paczka <span class=\"code-short-format\">npm<\/span>. Otw\u00f3rz terminal i zainstaluj <span class=\"code-short-format\">tailwindcss<\/span> wpisuj\u0105c:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm i -D tailwindcss@latest postcss@latest autoprefixer@latest<\/code><\/pre>\n<p>Przy okazji instalacji <span class=\"code-short-format\">tailwindcss<\/span> zainstalowana zosta\u0142a te\u017c paczka <span class=\"code-short-format\">postcss<\/span>. Otw\u00f3rz plik <span class=\"code-short-format\">postscss.config.js<\/span>, kt\u00f3ry utworzony zosta\u0142 w kroku 1 i dodaj do niego nast\u0119puj\u0105cy kod w celu konfiguracji narz\u0119dzia PostCSS:<\/p>\n<pre><code class=\"language-javascript\" data-line=\"\">module.exports = {\n  plugins: {\n    tailwindcss: {},\n    autoprefixer: {},\n  }\n}\n<\/code><\/pre>\n<p>Zanim zaczniesz korzysta\u0107 z Tailwinda, musisz go jeszcze doda\u0107 do pliku <span class=\"code-short-format\">style.css<\/span>, otw\u00f3rz ten plik i dodaj do niego nast\u0119puj\u0105cy kod:<\/p>\n<pre><code class=\"language-css\" data-line=\"\">@tailwind base;\n@tailwind components;\n@tailwind utilities;<\/code><\/pre>\n<p>Tailwind CSS dzi\u0119ki PostCSS zamieni ten kod na CSS.<\/p>\n<div class=\"info-alert-format\">\n<p>Uwaga: W trakcie instalacji <span class=\"code-short-format\">tailwindcss<\/span>, <span class=\"code-short-format\">npm<\/span> utworzy plik <span class=\"code-short-format\">package-lock.json<\/span>. Jest on generowany automatycznie i nie nale\u017cy w nim dokonywa\u0107 zmian r\u0119cznie.<\/p>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Krok_3_%E2%80%93_Kompilacja_Tailwind_CSS\"><\/span>Krok 3 \u2013 Kompilacja Tailwind CSS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tailwind CSS korzysta z narz\u0119dzia PostCSS. Ja na co dzie\u0144 w projektach korzystam z Webpacka, jednak na potrzeby tego poradnika, poka\u017c\u0119 Ci jak zrobi\u0107 to w <span class=\"code-short-format\">postcss-cli<\/span>.<\/p>\n<p>Otw\u00f3rz terminal i zainstaluj <span class=\"code-short-format\">postcss-cli<\/span> wpisuj\u0105c:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm i -D postcss-cli<\/code><\/pre>\n<p>Nie zamykaj terminala. U\u017cyj <span class=\"code-short-format\">postcss-cli<\/span>, \u017ceby zamieni\u0107 kod z dyrektywami Tailwind CSS na zrozumia\u0142y dla przegl\u0105darek kod CSS wpisuj\u0105c w terminalu:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">npx postcss style.css -o tailwind.css<\/code><\/pre>\n<div class=\"info-alert-format\">\n<p>Uwaga: Zauwa\u017c, \u017ce korzystasz z komendy <span class=\"code-short-format\">npx<\/span>, a nie <span class=\"code-short-format\">npm<\/span> do uruchomienia postcss. <span class=\"code-short-format\">npx<\/span> jest domy\u015blnie instalowany z <span class=\"code-short-format\">npm<\/span> i pozwala uruchamia\u0107 polecenia ze zdalnego lub lokalnego pakietu <span class=\"code-short-format\">npm<\/span>.<\/p>\n<\/div>\n<p>W projekcie powinien pojawi\u0107 si\u0119 plik <span class=\"code-short-format\">tailwind.css<\/span> ze wszystkimi dost\u0119pnymi klasami CSS.<\/p>\n<p><span style=\"font-weight: 400;\">Bonus<\/span><span style=\"font-weight: 400;\">. Otw\u00f3rz plik package.json. Znajd\u017a sekcj\u0119 <span class=\"code-short-format\">scripts<\/span> i umie\u015b\u0107 w niej skrypt <span class=\"code-short-format\">build<\/span>:<\/span><\/p>\n<pre><code class=\"language-javascript\" data-line=\"\">&quot;scripts&quot;: {\n\n    &quot;build&quot;: &quot;postcss style.css -o tailwind.css&quot;\n\n  },<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Otw\u00f3rz terminal i zbuduj ponownie plik <span class=\"code-short-format\">tailwind.css<\/span> wpisuj\u0105c:<\/span><\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm run build<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Krok_4_%E2%80%93_Optymalizacja_Tailwind_CSS\"><\/span>Krok 4 \u2013 Optymalizacja Tailwind CSS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Plik <span class=\"code-short-format\">tailwind.css<\/span> zawiera teraz wszystkie dost\u0119pne klasy CSS i ma rozmiar oko\u0142o 4,03 MB, co raczej nie jest zalecane w kontek\u015bcie optymalizacji stron WWW. Oczywi\u015bcie jako nowoczesne narz\u0119dzie Tailwind CSS mo\u017ce zosta\u0107 poddany optymalizacji.<\/p>\n<p>Otw\u00f3rz terminal i utw\u00f3rz plik konfiguracyjny <span class=\"code-short-format\">tailwind.config.js<\/span> wpisuj\u0105c:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$ npx tailwindcss init<\/code><\/pre>\n<p>W katalogu projektu pojawi si\u0119 plik <span class=\"code-short-format\">tailwind.config.js<\/span>. Do sekcji purge dodaj <span class=\"code-short-format\">\u2018.\/*.html\u2019<\/span>. Dzi\u0119ki temu Tailwind przeszuka pliki html i zbuduje plik <span class=\"code-short-format\">tailwind.css<\/span> tylko z u\u017cytymi przez Ciebie klasami.<\/p>\n<pre><code class=\"language-javascript\" data-line=\"\">module.exports = {\n  purge: [\n    &#039;.\/*.html&#039;\n  ],\n  darkMode: false, \/\/ or &#039;media&#039; or &#039;class&#039;\n  theme: {\n    extend: {},\n  },\n  variants: {\n    extend: {},\n  },\n  plugins: [],\n}\n<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Otw\u00f3rz terminal i zbuduj plik <span class=\"code-short-format\">tailwind.css<\/span> wpisuj\u0105c:<\/span><\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm run build<\/code><\/pre>\n<p><a href=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css.png\"><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7079\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css-300x173.png\" alt=\"plik Tailwind\" width=\"800\" height=\"462\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css-300x173.png 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css-1024x592.png 1024w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css-768x444.png 768w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css-1536x888.png 1536w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/plik-tailwind.css-2048x1184.png 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Niestety plik nadal zawiera wszystkie klasy CSS. Dzieje si\u0119 tak dlatego, \u017ce opcja purge dzia\u0142a tylko w trybie produkcyjnym.<\/p>\n<p>Otw\u00f3rz terminal i zainstaluj paczk\u0119 <span class=\"code-short-format\">cross-env<\/span> wpisuj\u0105c:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm i -D cross-env<\/code><\/pre>\n<p>Otw\u00f3rz plik <span class=\"code-short-format\">package.json<\/span> i skonfiguruj sekcj\u0119 scripts:<\/p>\n<pre><code class=\"language-javascript\" data-line=\"\"> &quot;scripts&quot;: {\n    &quot;build&quot;: &quot;postcss style.css -o tailwind.css&quot;,\n    &quot;production&quot;: &quot;cross-env NODE_ENV=production postcss style.css -o tailwind.css&quot;\n  }\n<\/code><\/pre>\n<p>Otw\u00f3rz terminal i zbuduj plik <span class=\"code-short-format\">tailwind.css<\/span> wpisuj\u0105c:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm run production<\/code><\/pre>\n<p>W pliku <span class=\"code-short-format\">tailwind.css<\/span> powinny znale\u017a\u0107 si\u0119 wy\u0142\u0105cznie tak zwane \u201eresety\u201d styl\u00f3w, kt\u00f3re nadpisuj\u0105 style przegl\u0105darki.<\/p>\n<p><a href=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7080\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow-300x172.png\" alt=\"resety styl\u00f3w Tailwind\" width=\"800\" height=\"460\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow-300x172.png 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow-1024x588.png 1024w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow-768x441.png 768w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow-1536x882.png 1536w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/resety-stylow-2048x1176.png 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<div class=\"success-alert-format\">\n<p>Tailwind CSS daje Ci nieograniczone mo\u017cliwo\u015bci tworzenia szablon\u00f3w i ponownego ich u\u017cywania w kolejnych projektach. Dzi\u0119ki temu szybko i \u0142atwo zbudujesz kolejn\u0105 stron\u0119 i jeszcze jedn\u0105, i jeszcze.<\/p>\n<p>Wybieraj\u0105c<strong> Elastyczny Web Hosting<\/strong> nie musisz martwi\u0107 si\u0119 o zasoby na utrzymanie kolejnych witryn. Otrzymasz wysokie parametry gwarantowane, czyli <strong>1 GHz CPU, 2 GB RAM oraz 50 GB NVMe,<\/strong> a je\u015bli w kt\u00f3rymkolwiek momencie Twoje strony b\u0119d\u0105 potrzebowa\u0107 wi\u0119cej, opcja elastycznego skalowania automatycznie, bez konieczno\u015bci kontaktu z supportem, przydzieli Ci dodatkowe zasoby. Zapewni\u0105 one dost\u0119pno\u015b\u0107 wszystkich Twoich witryn niezale\u017cnie od ich obci\u0105\u017cenia.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/dhosting.pl\/pp-fach\" rel=\"noopener\"><strong>WYPR\u00d3BUJ HOSTING<\/strong><\/a><\/p>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"Krok_5_%E2%80%93_Konfiguracja_Tailwinds_CSS\"><\/span>Krok 5 \u2013 Konfiguracja Tailwinds CSS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Otw\u00f3rz plik <span class=\"code-short-format\">tailwind.config.js<\/span>. Poza znan\u0105 Ci ju\u017c sekcj\u0105 <span class=\"code-short-format\">purge<\/span> znajdziesz tu te\u017c sekcj\u0119 <span class=\"code-short-format\">theme<\/span>. W sekcji <span class=\"code-short-format\">theme<\/span> mo\u017cesz nadpisywa\u0107 i dodawa\u0107 nowe warto\u015bci do Tailwind CSS.<\/p>\n<p>W sekcji <span class=\"code-short-format\">theme<\/span> dodaj nowy kolor <span class=\"code-short-format\">regal-blue<\/span> o warto\u015bci <span class=\"code-short-format\">#2435a<\/span><\/p>\n<pre><code class=\"language-css\" data-line=\"\">theme: {\n  extend: {\n    colors: {\n      &#039;regal-blue&#039;: &#039;#243c5a&#039;,\n    }\n  }\n}\n<\/code><\/pre>\n<p>Otw\u00f3rz terminal i zbuduj plik tailwind.css wpisuj\u0105c:<\/p>\n<pre><code class=\"language-bash\" data-line=\"\">$npm run build<\/code><\/pre>\n<p>Otw\u00f3rz plik <span class=\"code-short-format\">index.html<\/span> i przywitaj si\u0119 z Tailwind CSS:<\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;body&gt;\n  &lt;h1 class=&quot;text-regal-blue&quot;&gt;Hello Tailwind CSS&lt;\/h1&gt;\n&lt;\/body&gt;\n<\/code><\/pre>\n<p>Otw\u00f3rz plik <span class=\"code-short-format\">index.html<\/span> w przegl\u0105darce, kt\u00f3ra powinna wyrenderowa\u0107 tekst w kolorze regal-blue.<\/p>\n<p><a href=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/tekst-w-kolorze.png\"><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7081\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/tekst-w-kolorze-300x71.png\" alt=\"Hello Tailwind tekst\" width=\"800\" height=\"190\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/tekst-w-kolorze-300x71.png 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/tekst-w-kolorze.png 640w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>Szczeg\u00f3\u0142y konfiguracji poszczeg\u00f3lnych opcji znajdziesz w <a target=\"_blank\" href=\"https:\/\/tailwindcss.com\/\" rel=\"noopener\">dokumentacji Tailwind CSS<\/a>.<\/p>\n<p><a href=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja.png\"><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7082\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-300x169.png\" alt=\"dokumentacja Tailwind\" width=\"800\" height=\"451\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-300x169.png 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1024x578.png 1024w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-768x433.png 768w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1536x867.png 1536w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-2048x1156.png 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Krok_6_%E2%80%93_Praca_z_Tailwind_CSS\"><\/span>Krok 6 \u2013 Praca z Tailwind CSS<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tailwind CSS jest zbyt obszernym narz\u0119dziem, \u017ceby opisa\u0107 je dok\u0142adnie w ramach poradnika, dlatego zaprzyja\u017anij si\u0119 z dokumentacj\u0105 tego frameworka. Korzystaj z wyszukiwarki, \u017ceby znale\u017a\u0107 zar\u00f3wno nazwy klas jak i informacje o warto\u015bciach, jakie dostarczaj\u0105.<\/p>\n<p><a href=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"photo-border aligncenter wp-image-7083\" src=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1-300x169.png\" alt=\"dokumentacja Tailwind\" width=\"800\" height=\"451\" title=\"\" srcset=\"https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1-300x169.png 300w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1-1024x578.png 1024w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1-768x433.png 768w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1-1536x867.png 1536w, https:\/\/dhosting.pl\/pomoc\/wp-content\/uploads\/2021\/08\/dokumentacja-1-2048x1156.png 2048w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Pracuj\u0105c z Tailwind CSS musisz zna\u0107 kilka podstawowych koncepcji.<\/p>\n<h3>Responsive Design<\/h3>\n<p>Warto wiedzie\u0107, \u017ce Tailwind to framework Mobile First, dlatego korzystaj\u0105c z jego klas bez prefixu definiujesz warto\u015b\u0107 dost\u0119pn\u0105 dla wszystkich szeroko\u015bci ekranu.<\/p>\n<p>W przypadku, je\u017celi chcesz \u017ceby, np. tekst w kontenerze by\u0142 wyr\u00f3wnany do \u015brodka dla mobile, a dla \u015brednich urz\u0105dze\u0144 zaczyna\u0142 si\u0119 od lewej, musisz skorzysta\u0107 z prefixu <span class=\"code-short-format\">md<\/span>:<\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;p class=\u201dtext-center md:text-left\u201d&gt;&lt;\/p&gt;<\/code><\/pre>\n<p>Tailwind dostarcza kilka break point\u00f3w. Pami\u0119taj, \u017ce zawsze mo\u017cesz je nadpisa\u0107 lub dopisa\u0107 zupe\u0142nie nowe break pointy.<\/p>\n\n<table id=\"tablepress-3\" class=\"tablepress tablepress-id-3\">\n<thead>\n<tr class=\"row-1\">\n\t<th class=\"column-1\"><center>Prefix<\/center><\/th><th class=\"column-2\"><center>Minimalna szeroko\u015b\u0107<\/center><\/th><th class=\"column-3\"><center>CSS<\/center><\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\"><center>sm<\/center><\/td><td class=\"column-2\"><center>640px<\/center><\/td><td class=\"column-3\"><center>@media (min-width: 640px) { ... }<\/center><\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\"><center>md<\/center><\/td><td class=\"column-2\"><center>768px<\/center><\/td><td class=\"column-3\"><center>@media (min-width: 768px) { ... }<\/center><\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\"><center>lg<\/center><\/td><td class=\"column-2\"><center>1024px<\/center><\/td><td class=\"column-3\"><center>@media (min-width: 1024px) { ... }<\/center><\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\"><center>xl<\/center><\/td><td class=\"column-2\"><center>1280px<\/center><\/td><td class=\"column-3\"><center>@media (min-width: 1280px) { ... }<\/center><\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\"><center>2xl<\/center><\/td><td class=\"column-2\"><center>1536px<\/center><\/td><td class=\"column-3\"><center>@media (min-width: 1536px) { ... }<\/center><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-3 from cache -->\n<h3>Focus, Hover i pozosta\u0142e stany<\/h3>\n<p>Obs\u0142uga stan\u00f3w focus, hover, itp. w Tailwind bazuje na tym samym wzorcu co Responsive Design. W przypadku, je\u017celi chcesz dopisa\u0107 jak\u0105\u015b klas\u0119 dla stanu hover, u\u017cywasz prefixu <span class=\"code-short-format\">hover<\/span>:<\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;button class=\u201dbg-purple-600 hover:bg-purple-700\u201d&gt;&lt;\/button&gt;<\/code><\/pre>\n<h3>Dark mode<\/h3>\n<p>Dark mode to opcja, kt\u00f3ra w ostatnim czasie zyska\u0142a na funkcjonalno\u015bci. Tailwind dostarcza wsparcie poprzez prefix <span class=\"code-short-format\">dark<\/span>:<\/p>\n<pre><code class=\"language-markup\" data-line=\"\">&lt;div class=\u201dbg-white dark:bg-gray-800\u201d&gt;\n\t&lt;p class=\u201dtext-gray-800 dark:text-white\u201d&gt;&lt;\/p&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Tryb ciemny jest wy\u0142\u0105czony w projekcie prezentowanym w poradniku. Otw\u00f3rz plik <span class=\"code-short-format\">tailwind.config.js<\/span> i znajd\u017a sekcj\u0119 <span class=\"code-short-format\">darkMode<\/span><\/p>\n<pre><code class=\"language-javascript\" data-line=\"\">darkMode: &#039;media&#039;,<\/code><\/pre>\n<p>Ustawienie <span class=\"code-short-format\">darkMode<\/span> na media sprawi, \u017ce Tailwind skorzysta z media queries dla <span class=\"code-short-format\">prefers-color-scheme<\/span>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Krok_7_%E2%80%93_apply\"><\/span>Krok 7 \u2013 @apply<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Je\u017celi piszesz style CSS i korzystasz z jakiej\u015b metodologii, np. BEM (Block Element Modifier), to pisanie styl\u00f3w przy u\u017cyciu klas w HTML mo\u017ce do Ciebie nie przemawia\u0107.<\/p>\n<p>Tailwind wychodzi naprzeciw takim osobom i umo\u017cliwia importowanie swoich klas do ju\u017c istniej\u0105cych. Wszystko to dzi\u0119ki dyrektywie <span class=\"code-short-format\">@apply<\/span><\/p>\n<pre><code class=\"language-css\" data-line=\"\">.button {\n  @apply font-bold py-2 px-4; \n}\n.button--rounded {\n  @apply rounded;\n}<\/code><\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Podsumowanie\"><\/span>Podsumowanie<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Tailwind CSS to niezwykle ciekawy spos\u00f3b na pisanie styl\u00f3w. Nawet, je\u017celi takie podej\u015bcie do ich pisania nie przemawia do Ciebie, to warto wykorzysta\u0107 go chocia\u017cby w projekcie \u201epo godzinach\u201d. Zw\u0142aszcza, gdy tworzymy go w jakim\u015b frameworku pozwalaj\u0105cym reu\u017cywa\u0107 wytworzonych komponenty.<\/p>\n<p>W poradniku celowo nie umie\u015bci\u0142em przyk\u0142ad\u00f3w u\u017cycia Tailwinda. Zak\u0142adam, \u017ce potrafisz pisa\u0107 style CSS i nie chc\u0119 odbiera\u0107 Ci przyjemno\u015bci ze stworzenia swojego pierwszego komponentu. Je\u017celi nadal masz otwarty edytor kodu, to nie czekaj tylko koduj.<\/p>\n<div class=\"author-format\">\n<div class=\"author-format-photo\"><img loading=\"lazy\" decoding=\"async\" style=\"border: 2px solid #e8e8e8;\" src=\"https:\/\/pomoc.dhosting.pl\/wp-content\/uploads\/2021\/06\/przemyslaw-spaczek.png\" alt=\"Przemyslaw Spaczek\" width=\"200\" height=\"200\" title=\"\"><\/div>\n<div class=\"author-format-desc\">\n<h3><span style=\"font-weight: 400;\">Autor artyku\u0142u:<\/span> Przemys\u0142aw Spaczek<\/h3>\n<p>Senior Frontend Developer \u2013 obecnie tworzy zaawansowane strony WWW i aplikacje w Vue.js. W wybranych projektach nadal z sentymentem si\u0119ga po WordPress jako backend, g\u0142\u00f3wnie jako headless CMS. Ch\u0119tnie dzieli si\u0119 swoj\u0105 wiedz\u0105 w internecie i na meetupach.<\/p>\n<ul class=\"author-icons\">\n<li class=\"author-social\"><a target=\"_blank\" href=\"https:\/\/github.com\/pspaczek\" rel=\"noopener\"><i class=\"fab fa-github\"><\/i> GitHub<\/a><\/li>\n<li class=\"author-social\"><a target=\"_blank\" href=\"https:\/\/www.linkedin.com\/in\/przemyslaw-spaczek\/\" rel=\"noopener\"><i class=\"fab fa-linkedin-in\"><\/i> LinkedIn<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Tailwind CSS to framework, kt\u00f3ry umo\u017cliwia tworzenie layoutu strony z poziomu template HTML, bez konieczno\u015bci tworzenia arkuszy styl\u00f3w. W przeciwie\u0144stwie do takich narz\u0119dzi jak Bootstrap, opisuje on element wizualnie, a nie funkcjonalnie. W przypadku Bootstrap dla przycisku u\u017cyjesz klasy btn, kt\u00f3ra opisuje padding, border-radius i pozosta\u0142e aspekty wizualne Twojego elementu. Dla Tailwind CSS musisz znale\u017a\u0107 [&hellip;]<\/p>\n","protected":false},"author":16,"featured_media":10957,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[1870,1869],"class_list":["post-7070","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fachowe-poradniki","tag-css","tag-tailwind"],"_links":{"self":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/posts\/7070","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/comments?post=7070"}],"version-history":[{"count":0,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/posts\/7070\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media\/10957"}],"wp:attachment":[{"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/media?parent=7070"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/categories?post=7070"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dhosting.pl\/pomoc\/wp-json\/wp\/v2\/tags?post=7070"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}