CSS系列:目下大前端样式的终极解决方案
本文主要介绍tailwind,这个在我看来,能够解决目前前端领域中,各种样式问题的终极解决方案,的库。
前端跟css相关的几个典型场景:移动端适配、页面换肤。相信做过的同学,无一不疯狂的掉过头发。倒不是说因为这个有多难,而是很烦,很杂。研发和产品互掐的重灾区。一套代码多端适用,确实很美好,但是这就要求项目从一开始就要严格关注到这个问题,以便后期的适配。
最近在帮一家海外的公司做项目时,发现他们的项目大量使用tailwind。更让我惊讶的是,他们的项目中,所使用到的组件,全部都是自己的开发人员自己实现的,搭配tailwind,对设计图的还原度,无限接近百分百,让我叹为观止。在接触他们之前的职业生涯中,基本上都是做的toB的业务,重逻辑功能的实现,至于ui,只要不是难看到人神共愤,基本上就可以了。接触了toC的业务之后突然发现,专业的前端,除了具备技术技能,还需要锻炼自身的美感。
tailwind这个库方便在哪?
极大的简化了css相关的代码完美解决各端适配的问题
举例:
在tailwind的配置文件中设定好自身需要的几种端的大小
screens: { xs: '300px', // => @media (min-width: 400px) { ... } sm: '640px', // => @media (min-width: 640px) { ... } md: '768px', // => @media (min-width: 768px) { ... } lg: '1024px', // => @media (min-width: 1024px) { ... } xl: '1280px', // => @media (min-width: 1280px) { ... } '2xl': '1536px' // => @media (min-width: 1536px) { ... } },使用时如下,拿设置字体大小示范:
fontOswald16: 'font-Oswald sm:text-[16px] md:text-[16px] lg:text-[16px] xl:text-[16px] 2xl:text-[16px]', fontOswald18: 'font-Oswald sm:text-[18px] md:text-[18px] lg:text-[18px] xl:text-[18px] 2xl:text-[18px]', fontOswald24: 'font-Oswald xs:text-[20px] sm:text-[24px] md:text-[24px] lg:text-[24px] xl:text-[24px] 2xl:text-[24px]', fontOswald32: 'font-Oswald sm:text-[32px] md:text-[32px] lg:text-[32px] xl:text-[32px] 2xl:text-[32px]', fontOswald46: 'font-Oswald sm:text-[46px] md:text-[46px] lg:text-[46px] xl:text-[46px] 2xl:text-[46px]', fontOswald48: 'font-Oswald xs:text-[18px] sm:text-[48px] md:text-[48px] lg:text-[48px] xl:text-[48px] 2xl:text-[48px]', fontOswald52: 'font-Oswald sm:text-[52px] md:text-[52px] lg:text-[52px] xl:text-[52px] 2xl:text-[52px]', ... ... // 通常配置一个pattern文件单独存放所有设计好的字体配置,直接引入 <div className={`${pattern.fontOswald24}`}></div>这样,实现所有端情况下的字体大小。
需要样式高度定制项目的最佳实践方案
底层实现
从根源看,tailwind做的事情很简单,样式原子化。什么意思?就是把很多的样式提前写好,这样你在实际开发过程中,直接使用即可,如下所示。
.btn {
background-color: red;
border-radius: 4px;
padding: 10px;
}
<button class="bg-red-500 rounded p-4">按钮</button>
当然,预先准备好的官方样式中可能多达几十万行的css原子,但是不用担心,打包时会通过treeshaking,把那些没用到的全部抖掉。
tailwind有一套自己的语法规则,前期需要花点成本。就目下来看,如果所在的组是做toC业务的,并且需要高度灵活的页面实现,tailwind应该是首选。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
