原子类css用起来嘎嘎爽,像tailwindcss、unocss、windcss等构建开发小项目贼快了,uniapp项目普遍都比pc端项目小,而且要兼容多端开发的特点,项目小、快速开发的特点比较突出。
由于tailwindcss、unocss、windcss等在移动端的使用体验目前不太友好,比如对移动端兼容性不太好,如.w-1/2在小程序端属于特殊字符,会报错;还会存在特殊报错;再如tailwindcss的单位是rem换算其它单位复杂,但是unocss可以在配置文件种的rules种使用正则生成样式,并且改变单位,有兴趣的可以去官网看下;
基于以上原因,那就自己用最少的代码手敲一套原子类css,共计约1100个左右的常用样式;
关于增加1100个左右的样式会不会增加项目体积,新项目的大小约8kb,加上1100个样式后为45kb;
github仓库地址:wfxt0911/atomicClass: 原子类css (github.com)
如果该示例对你有启发,希望您给个Star
都是最基础的scss,其中/src/styles/generate.scss是循环生成的样式,/src/styles/expand.scss是其它常用且无法循环生成的样式
直接在App.vue种引入即可,请注意增加lang="scss"属性
<style lang="scss">
/*每个页面公共css */
@import './styles/generate.scss';
@import './styles/expand.scss';
</style>
变量 | 说明 |
---|---|
$num | //循环计数器, |
$sum: | //循环次数,用于控制生成calss的数量 |
$step | //步长,由于设计稿2rpx=1px,故此处步长为2 |
$pixis: | //单位 |
$color_name_list | //颜色名称数组,_list结尾的都代表数据 |
$color_list | //颜色值数组, 如需拓展,长度必须和$color_name_list的长度一致 |
$size_name_list | //尺寸数组 |
¥text_size_list | //字体大小数组 ,如需拓展,长度必须和$size_name_list的长度一致 |
$rounded_size_list | //圆角数组,如需拓展,长度必须和$size_name_list的长度一致 |
宽度和高度的使用完全一致,只需要字母w替换成h即可,其中w-p-{val}的p代表的意思是precentage百分比的意思;
tailwindcss的取名为.w-1/2,但是/字符会在wx小程序等不兼容,故使用.w-p-1来代替
class | {val}可选值 | 实际样式 | 示例 |
---|---|---|---|
w-{val} | 0-30;以及(1-30)*10 | 如w-1实际为width:2rpx | w-1;w-200;w-300 |
h-{val} | 0-30;以及(1-30)*10 | 如h-100实际为height:200rpx | h-1;h-200;h-300 |
w-full | width:100% | w-full | |
w-screen | width:100vw | ||
w-p-{val} | 1-10 | width:10%; | w-p-1 |
margin、padding、border使用完全一致;m为margin;p为padding,border为border
示例:p-2;px-3;pr-3;border-3;border-r-3;border-l-3;
class | {val}可选值 | 实际样式 | 示例 |
---|---|---|---|
m-{val} | 0-30; | 如m-1实际为margin:2rpx | m-1; |
mx-{val} | 0-30; | 如mx-1实际为margin-left:2rpx;margin-right;2rpx; | mx-1; |
my-{val} | 0-30; | 如my-1实际为margin-left:2rpx;margin-right;2rpx; | my-1; |
mt-{val} | 0-30; | 如mt-1实际为margin-top:2rpx; | mt-1; |
mr-{val} | 0-30; | 如mt-1实际为margin-right:2rpx; | mt-1; |
mb-{val} | 0-30; | 如mb-1实际为margin-bottom:2rpx; | mb-1; |
ml-{val} | 0-30; | 如ml-1实际为margin-left:2rpx; | ml-1; |
background-color和color使用完全一致,只需要bg字母换成text即可,如text-black、text-blue-3 ;
{val}值越大,颜色越浅色;
默认支持5种颜色,可自行拓展;如下图所示拓展pink的示例;
//颜色数组,可拓展,下方2个数组长度必须一致
$color_name_list: "blue", "green", "yellow", "red", "gray";
$color_list: #007aff, #4cd964, #f0ad4e, #dd524d, #636e72;
//拓展多一个颜色pink
$color_name_list: "blue", "green", "yellow", "red", "gray","pink";
$color_list: #007aff, #4cd964, #f0ad4e, #dd524d, #636e72,#f78fb3;
class | {val}可选值 | 实际样式 | 示例 |
---|---|---|---|
bg-black | background-color: #000; | ||
bg-white | background-color: #fff; | ||
bg-blue | |||
bg-blue-{val} | 1-9 | bg-bule-3 |
如下所示,共计"xs", "sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl"九种尺寸;
border-radius 与font-size的用法完全一致;
同样您也可以自己拓展,拓展方法如同bg拓展;
$size_name_list: "xs", "sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl";
$text_size_lset: 12, 13, 14, 16, 18, 24, 36, 48, 56;//圆角
$rounded_size_lset: 5, 8, 10, 12, 16, 24, 36, 48, 56;//字体大小
class | {val}可选值 | 实际样式 | 示例 |
---|---|---|---|
text-{val} | "xs", "sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl" | text-xl | |
rounded-{val} | "xs", "sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl" | rounded-lg |
top\left\right\bottom使用方法完全一致
class | {val}可选值 | 实际样式 | 示例 |
---|---|---|---|
t-{val} | 0-30 | top:40rpx | t-20 |
完全参照tailwindcss命名
class | 实际样式 | 备注 |
---|---|---|
static | position: static; | |
fixed | position: fixed; | |
absolute | position: absolute; | |
relative | position: relative; | |
sticky | position: sticky; |
完全参照tailwindcss命名
class | 实际样式 | 备注 |
---|---|---|
flex | display: flex; | |
flex-center | display: flex; justify-content: center;align-items: center; | |
flex-1 | }flex: 1 1 0%; | |
flex-auto | flex: 1 1 auto; | |
flex-row | flex-direction: row; | |
flex-col | flex-direction: column; | |
justify-start | justify-content: flex-start; | |
justify-end | justify-content: flex-end; | |
justify-center | justify-content: center; | |
justify-between | justify-content: space-between; | |
justify-around | justify-content: space-around; | |
justify-evenly | justify-content: space-evenly; | |
justify-items-start | justify-items: start; | |
justify-items-end | justify-items: end; | |
justify-items-center | justify-items: center; | |
justify-items-stretch | justify-items: stretch; | |
class | 实际样式 | 备注 |
---|---|---|
float-right | float: right; | |
float-left | float: left; | |
float-none | float: none; | |
clearfix |
完全参照tailwindcss命名
class | 实际样式 | 备注 |
---|---|---|
block | display: block; | |
inline-block | display: inline-block; | |
inline | display: inline; | |
完全参照tailwindcss命名
class | 实际样式 | 备注 |
---|---|---|
text-left | text-align: left; | |
text-center | text-align: center; | |
text-right | text-align: right; | |
text-justify | text-align: justify; | |
text-bold | font-weight: 700; | |
class | {val}可选值 | 实际样式 | 示例 |
---|---|---|---|
leading-{val} | 1-30 | line-height:10px | leading-10 |