第四版本,修改完毕

一个人是孤独的!

即便是在朋友圈子里,我也是一个人。
完全没有相同职业的朋友。

尽管如此,我还是一个人默默地完成了。

去年九月完成了第一版,到今天,第四个版本,最终版,SCSS重构的最终版,在今天完成了。

颜色体系众多,为了便于使用,另外也导出了一个不含渐变色的精简版。

总结一下,在不压缩的情况下,包含必要注释,一共99896行,1.7Mb。

SCSS,混合宏

混合宏的逻辑有点复杂,用法也挺多的,但是,真的很方便,很实用。
看了相关的文档,在自己的框架中,还是主要参考了bootstrap4的混合宏写法。
bootstrap4里面的混合宏层层关联,互相嵌套,各种变量,各种函数,需要全部理清来龙去脉才能知道具体怎么作用的。

主要是用来生成颜色,根据条件,生成不同颜色的按钮,或者其他场景的应用。
总之,还是要去理解清楚。
目前,大概的思路是清楚了,就是具体要多实践。

关于Sass的工作成果

一、创建了一个color变量库;
除基本色,另外包含19个色系,每个主色又包含约15种颜色渐变。
另外又覆盖了一百多个有名字的颜色。
并且,每个色系都增加maps函数,以便需要时调用。
同时针对常用社交icon,也预设了主色。
所有颜色值,均以十六进制颜色表达。

二、创建了一个class变量库
主要是css的属性进行预设变量。
涵盖几乎所有可能用到的属性。

以上,这两个变量库,理论上适用于任何使用Sass开发者。
后续按需增补。

完成3.0的Sass重构,接着……

划重点,论工作先后顺序的重要性!

之前考虑重构框架时,思索再三,还是决定先把3.0的重构一下,关键是旧版基本成型,而且已经使用在生产环境中。
这两天,再准备重构4.0的时候,我才发现,我的热情和精力可能被消耗殆尽了,已经很难平静的去做重构工作了。
这是因为,4.0版本虽是大版本的迭代,但还是蜕变于3.0版,绝大部分内容相同,只是命名和结构不同。

无奈,只好先搁置一段时间吧。
以后,尽量的权衡好工作的优先级再行动。

SCSS自动编译工具

windows下,使用koala实现Sass自动编译。
macOS下,使用codekit实现。

使用命令行命令:compass watch实现监听目录更改,自动编译。
但是,在windows下,大部分时间,监听都不是即时的,需要手动Ctrl+C,才会自动编译,而这个快捷键偏偏又是停止监听的快捷键。
尽管矛盾,但是,windows下的compass命令需要使用关闭的指令来威胁一下才会运行。

首选,还是推荐使用工具吧,koala是免费的,虽然没有codekit那么复杂的功能,但是简洁明了,足够用了。

以SCSS重构css framework

终于开始了,是的,心中默念了许久了,一直,迟迟不肯下手,这次算是终于下定决心去做了。

基本上,就在原基础上优化,最多的改变应该是对于颜色,除了少数不变的值,基本都给了变量名。
另外,就是嵌套,SCSS的结构看起来是简洁了很多。
输出的时候,暂时不压缩代码,毕竟,初次使用,保持格式化代码,有利于查漏补缺。

需要说明的是,增加变量,看似增加了工作量,但是,对于后期维护,却是节约了无非预估的时间。

高效的写代码……

其实很简单,代码补全,错误提示,自动编译、压缩,代码缩进(格式化)及保留适当的空行。

代码补全基本已经是现代编辑器必备的基本功能了。另外,快速的写代码,还需要emmet来实现。

自动编辑、压缩,这个基本靠构建工具实现,各种打包软件。
SCSS+Compass是最佳组合之一。

关于错误提示,这个就是纯粹的编辑器内置功能了。
圈内人大概都知道webstorm。

代码缩进,代码格式化,这个非常非常非常重要。

5.0?

考虑了很久,还是决定,不破坏4.0的结构,不做大范围的更正,还是以bootstrap 4为框架依赖,针对bs4去删减多余的样式定义。

然后,新增一个5.0版本,彻底移除bootstrap框架。

css-framework 4.0大概要放弃bootstrap了

今天才开始在bootstrap4.0的基础上做一个demo文档,class命名重叠倒是其次,关键,bootstrap里面给了很多的权重(!important),这就导致我自己定义的class属性被覆盖,不得已,唯有考虑放弃bootstrap框架作为依赖。

对于一些常用的bootstrap组件,我也考虑过单独提取出来,但是,总觉得有所欠缺,不够完美,不如放弃算了。

另外使用其他的插件去替代对应的需求。

css中的!important及版本迭代的前因后果

css的!important该如何使用,何时使用,坦白说,时至今日,我也没有很深刻的认识,这个提升css属性权重的写法,在关键时候很有用,不过,需要明白的是,这个权重的提升,事实上是覆盖了其他的同名写法,提升了权限;往往,你需要提权的地方,可能只是一个唯一的,或者临时需要用到的地方。

所以,要慎重使用。

在2.0版本的框架中,我肆无忌惮的使用了!important,只是为了某些情况下的偷懒。

2.0版本中的!important
在2.0版本中,我使用了2631个!important

在2.0版本的实践中,我发现了严重的问题,往往因为这些大范围的提权的写法,导致各种场景的冲突,这说明了,css的写法及应用范围,前后排序存在严重的逻辑问题。

总的来说,3.0版本的诞生,除了优化class命名,更多的,还是修正!important的滥用。

3.0版本中的!important
在3.0版本中,!important锐减至72个

很好,3.0版本在实践中,逐步完善了很多细节,完全可以投入到生产环境中了。虽然修正或者修改了前版的class命名冗长的问题,但,还是觉得不够简洁。再加上,忽略了flex布局,于是,决定衍生4.0版本。

4.0版本,目前处于进行时态,对于!important的使用,暂时是少于3.0版本。至少,证明了我这套css框架已经趋于成熟了。

4.0版本中的!important
目前为止,使用了56个!important

最后,总结一下,关于!important,并非是完全不用,只是,尽可能的避免使用,一旦使用了,要保证用法的唯一性,独立性。至少不会影响后期维护。

4.0版本完善之后的计划……

在4.0框架逐步完善之后,计划之一,就是css的scss转化。

或者,可以考虑less?

另外,可能的话,还是要规划一个网站,专门把这套框架细分一下,写一个使用指南。如同大部分的框架一样,需要给这套框架一个名份,不能就这么默默无闻。

虽然一直是个人使用的框架,但还是希望能有更多人的参与进来,提供帮助,斧正错误,完善细节。

构建自由灵活的前端框架……

没错,我喜欢省略号多过于其他的标点符号,因为,省略号有更多的潜台词,意犹未尽。

正题,从自己有想法写一套前端css框架开始,自由和灵活这两个词就反复的在脑子里蹦跶,时刻提醒我,考虑问题要周全,预设css要完备;只有这样,构建页面时,才能做的自由灵活的组合。
预想一下,一个完成的网站,有时候需要在一个模块上调整一下样式,或者增加一点内容,而且,这个模块在其他页面也有,要不冲突的解决问题,唯一的方法可能就是在父级盒子上新增一个class名称。
这个需求是很常见的。

如果,拆分了需求,每个可能新增的需求都预置好了对应的样式,那么,只需要在需要修改的模块上,新增对应的样式即可,例如,改变颜色,改变布局等等。
以上看起来像废话,而且,也是许多框架正在或者已经实现的,但我仍然需要为自己去定制一套。

然而,只有在实际项目中,才能逐步去根据需求去完善框架,一个人的思路和精力都是有限的,多么希望多几个人参与进来,共同创造并完善一套框架。