1. Introduction:
You’re probably tired of coding responsive every time
1 2 3 4 5 6 7 8 9 10 | <span class="token atrule"><span class="token rule">@media</span> <span class="token punctuation">(</span> <span class="token property">min-width</span> <span class="token punctuation">:</span> 375px <span class="token punctuation">)</span></span> <span class="token punctuation">{</span> <span class="token property">width</span> <span class="token punctuation">:</span> 100% <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token atrule"><span class="token rule">@media</span> <span class="token punctuation">(</span> <span class="token property">min-width</span> <span class="token punctuation">:</span> 768px <span class="token punctuation">)</span></span> <span class="token punctuation">{</span> <span class="token property">width</span> <span class="token punctuation">:</span> 115% <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token atrule"><span class="token rule">@media</span> <span class="token punctuation">(</span> <span class="token property">min-width</span> <span class="token punctuation">:</span> 1000px <span class="token punctuation">)</span></span> <span class="token punctuation">{</span> <span class="token property">width</span> <span class="token punctuation">:</span> 672px <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
Really a bad experience with that creation (ie). This is one of the reasons why you guys use the tailwind and like the predecessors, like bootraps, foundations, etc., the tailwind also has properties assigned to its own classes. So why are we going to use tailwind instead of bootraps. As I initially introduced, the tailwind supports responsive extremely effective and easy. Accompanying that are some points I hate about bootrap is its javascript, along with that is how to import it into my project with different versions also makes me very uncomfortable (this is personal sharing, For your reference). generally bootrap it is very convenient but it is handling a lot of arrays not only css and i feel a little annoyed with custorming it, instead i find that convenient point in the tailwind.
2. tailwind
Tailwind is a utility-first CSS framework for rapidly building custom user interfaces.
Tailwind unlike other frameworks, it is not a UI kit with built-in components, in fact it has no components, nor a default theme. This means that if you need a navbar like a foundation or bootstrap, it won’t. But as it’s one of the things I find to be very good in the tailwind you can build a theme of your own style and definitely not (yaomi)
3. Install the tailwind
Use the command to install tailwind
1 2 3 4 5 6 | # Using npm npm install tailwindcss # Using Yarn yarn add tailwindcss |
Import css of Tailwind:
1 2 3 4 5 6 | @ <span class="token keyword">import</span> <span class="token string">"tailwindcss/base"</span> <span class="token punctuation">;</span> @ <span class="token keyword">import</span> <span class="token string">"tailwindcss/components"</span> <span class="token punctuation">;</span> @ <span class="token keyword">import</span> <span class="token string">"tailwindcss/utilities"</span> <span class="token punctuation">;</span> |
Add to your css:
1 2 3 4 5 6 | @tailwind base <span class="token punctuation">;</span> @tailwind components <span class="token punctuation">;</span> @tailwind utilities <span class="token punctuation">;</span> |
If you want to create custom config files for your project, then you can create the tailwind’s config file using the command.
1 2 | npx tailwindcss init |
It will create config file tailwind.config.js in your project
It will have the following structure:
1 2 3 4 5 6 | module <span class="token punctuation">.</span> exports <span class="token operator">=</span> <span class="token punctuation">{</span> theme <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> variants <span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> plugins <span class="token operator">:</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">}</span> |
For example, I can custorm into:
1 2 3 4 5 6 7 8 9 10 | theme <span class="token operator">:</span> <span class="token punctuation">{</span> screens <span class="token operator">:</span> <span class="token punctuation">{</span> xs <span class="token operator">:</span> <span class="token string">'480px'</span> <span class="token punctuation">,</span> sm <span class="token operator">:</span> <span class="token string">'640px'</span> <span class="token punctuation">,</span> md <span class="token operator">:</span> <span class="token string">'768px'</span> <span class="token punctuation">,</span> lg <span class="token operator">:</span> <span class="token string">'1024px'</span> <span class="token punctuation">,</span> xl <span class="token operator">:</span> <span class="token string">'1280px'</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> |
There’s something else and this one you can learn more about in its document: https://tailwindcss.com/docs/installation
4. Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <span class="token operator"><</span> header className <span class="token operator">=</span> <span class="token string">'product-development px-0 lg:px-12 py-16 md:w-full md:flex title'</span> <span class="token operator">></span> <span class="token operator"><</span> div className <span class="token operator">=</span> <span class="token string">'text-center px-1 w-full md:w-4/6 md:flex-initial md:text-left'</span> <span class="token operator">></span> <span class="token operator"><</span> h1 className <span class="token operator">=</span> <span class="token string">'font-black text-2xl md:text-4xl'</span> <span class="token operator">></span> <span class="token operator"><</span> span className <span class="token operator">=</span> <span class="token string">'md:hidden lg:block'</span> <span class="token operator">></span> Welcome to <span class="token operator"><</span> <span class="token operator">/</span> span <span class="token operator">></span> <span class="token operator"><</span> p <span class="token operator">></span> Đắc nhân tâm của Dale Carnegie – top những quyến sách bán chạy nhất thế giới <span class="token punctuation">,</span> một cuốn sách thật sự đem lại những giá trị tuyệt vời cho người đọc <span class="token punctuation">,</span> bao gồm những lời khuyên cực kì bổ ích về cách ứng xử trong cuộc sống hàng ngày <span class="token operator"><</span> <span class="token operator">/</span> p <span class="token operator">></span> <span class="token operator"><</span> <span class="token operator">/</span> h1 <span class="token operator">></span> <span class="token operator"><</span> <span class="token operator">/</span> div <span class="token operator">></span> <span class="token operator"><</span> div className <span class="token operator">=</span> <span class="token string">'text-center text-gray-700 md:pl-6 pt-4 md:pt-0 border-test md:pl-32 lg:pl-32 md:flex-initial md:text-right md:w-7/12'</span> <span class="token operator">></span> <span class="token operator"><</span> div className <span class="token operator">=</span> <span class="token string">'show-decision border-development pb-4 md:pb-0 h-full'</span> <span class="token operator">></span> <span class="token operator"><</span> p <span class="token operator">></span> Thoạt đầu <span class="token punctuation">,</span> ấn tượng đầu tiên mà bạn có thể thấy về quyển sách này chính là cái bìa không quá sặc sỡ của nó <span class="token punctuation">,</span> với giá thành rất <span class="token function">rẻ</span> <span class="token punctuation">(</span> <span class="token number">76.000</span> đ <span class="token punctuation">)</span> <span class="token punctuation">,</span> hai màu xanh – đỏ nằm xen kẽ nhau và ở giữa là dòng chữ ‘đắc nhân tâm’ được <span class="token keyword">in</span> đậm vô cùng rõ rệt nhằm mục đích đánh lừa thị giác <span class="token operator"><</span> <span class="token operator">/</span> p <span class="token operator">></span> <span class="token operator"><</span> p className <span class="token operator">=</span> <span class="token string">'tech-no'</span> <span class="token operator">></span> Smartphone Applications <span class="token punctuation">.</span> <span class="token operator"><</span> <span class="token operator">/</span> p <span class="token operator">></span> <span class="token operator"><</span> <span class="token operator">/</span> div <span class="token operator">></span> <span class="token operator"><</span> <span class="token operator">/</span> div <span class="token operator">></span> <span class="token operator"><</span> <span class="token operator">/</span> header <span class="token operator">></span> |
You may notice fields like: px (padding left-right), py (bottom-aligned padding) … these are the basic class properties built-in, but you can see that. there are more fields like md, lg, sm … it will be equivalent to the size of the screens that we have configured above, and it also has defaul available for you to the basic fields already: v.
Combine them a little bit, I have md: hidden lg: block, which means the bottom text will be hidden when you are below the md screen size , and displayed when at lg screen size . And there are many more interesting things, but an article is hard to say all, so please find out more yourself, if there is something interesting you can add in the comment section for everyone to join. check (yaomi)
5. SCSS
No matter how divine the frameworks are, or how good the support is, we still have to custorm, overwrite, or even write some paragraphs by ourselves, I will introduce to you one of the frameworks that support css writing. pure good that’s scss.
So what is scss:
SCSS: is a CSS Prepocessor – for faster CSS code writing and clearer structure, predefined variable management. To install, you can run the command:
Setting
command install
1 2 | npm install <span class="token operator">-</span> g sass |
To compile SCSS code to CSS, access the directory containing the SCSS file and then run the command:
1 2 | sass --watch input.scss output.css |
The basic syntax of scss
Using the above example, you can write css to solve as follows
1. Nested Rules in Scss
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <span class="token selector">.container</span> <span class="token punctuation">{</span> // css của bạn <span class="token property">position</span> <span class="token punctuation">:</span> absolute <span class="token punctuation">;</span> <span class="token property">top</span> <span class="token punctuation">:</span> 0 <span class="token punctuation">;</span> <span class="token property">left</span> <span class="token punctuation">:</span> 0 <span class="token punctuation">;</span> <span class="token property">width</span> <span class="token punctuation">:</span> 50% <span class="token punctuation">;</span> <span class="token property">height</span> <span class="token punctuation">:</span> 2px <span class="token selector">; .product-development</span> <span class="token punctuation">{</span> // css của bạn <span class="token property">font-weight</span> <span class="token punctuation">:</span> bold <span class="token punctuation">;</span> <span class="token property">font-size</span> <span class="token punctuation">:</span> 116px <span class="token punctuation">;</span> <span class="token property">opacity</span> <span class="token punctuation">:</span> .5 <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Referencing Parent in Scss
Helps refer to the parent element: the syntax is & with class or # if id
For example, I will have 1 more div with the class: product-developmenttitle__title
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <span class="token selector">.container</span> <span class="token punctuation">{</span> // css của bạn <span class="token property">position</span> <span class="token punctuation">:</span> absolute <span class="token punctuation">;</span> <span class="token property">top</span> <span class="token punctuation">:</span> 0 <span class="token punctuation">;</span> <span class="token property">left</span> <span class="token punctuation">:</span> 0 <span class="token punctuation">;</span> <span class="token property">width</span> <span class="token punctuation">:</span> 50% <span class="token punctuation">;</span> <span class="token property">height</span> <span class="token punctuation">:</span> 2px <span class="token selector">; .product-development</span> <span class="token punctuation">{</span> // css của bạn <span class="token property">font-weight</span> <span class="token punctuation">:</span> bold <span class="token punctuation">;</span> <span class="token property">font-size</span> <span class="token punctuation">:</span> 116px <span class="token punctuation">;</span> <span class="token property">opacity</span> <span class="token punctuation">:</span> .5 <span class="token punctuation">}</span> <span class="token selector">&__title</span> <span class="token punctuation">{</span> <span class="token property">font-size</span> <span class="token punctuation">:</span> 20px <span class="token punctuation">;</span> <span class="token property">text-transform</span> <span class="token punctuation">:</span> uppercase <span class="token punctuation">;</span> <span class="token property">letter-spacing</span> <span class="token punctuation">:</span> 2px <span class="token punctuation">;</span> <span class="token property">font-weight</span> <span class="token punctuation">:</span> 900 <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Or like &: hover …
Variables in Scss
You can rename variables with the syntax: $ variales: value;
For example, I usually put the colors in the project into a file, and import them where they are used. This way is great when you can change theame for the whole project very well
Extends extend in Scss
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | .message{ border: solid 1px; text-align: center; font-size: 16px; padding: 20px 10px; } .error{ @extend .message; background: red; } .success{ @extend .message; background: blue; } .warning{ @extend .message; background: yellow; } |
And you can import files together to easily extend your @import ‘Link
Conclude
The article is already quite long then I would like to conclude here if you have any questions do not hesitate to commend at the bottom. And to give yourself more motivation don’t forget to leave an upvote (thankyou)