当前位置: 首页 > Web前端 > CSS

思路分享:如何尝试打造自己的CSS框架?

时间:2023-03-30 16:45:48 CSS

2019年,我创建了一个CSS框架,命名为Rotala.css。经过一些重构和修补,我终于在2020年发布了“玩具”框架。但它仍然是原型设计,因为我认为我的解决方案还不够优雅。我最初构建这个框架的原因很简单:我想要一个属于自己的CSS框架。我知道从头开始构建它需要很多时间。因此,我希望在其他强大的工具之上创建这样一个框架,以加快开发速度。最初,我开始使用SASS进行原型设计。它是一个可以让您组合许多独特语法的工具,这样您就可以像编程一样体验使用CSS进行设计。@mixinbutton-icon{margin:02px;}.button{padding:2px;@includebutton-icon;}坦率地说,我从Bootstrap和Bulma以及Spectre和MiligramTechnology等其他著名框架中学到了很多东西。我从他们那里借来了一些好的设计,尤其是从Spectre.css那里借来的(通过复制别人来重新发明轮子并不丢人)。重新体验CSS从来都不是我的强项,所以我对最初的原型设计没有任何期待。我第一次做的一切都是脆弱的和“模仿猫”。框架中没有“我创建”。哪怕只是一次没有经验的尝试,我又怎能承受如此糟糕的结果呢?毫无疑问,我是从头开始的。这一次,我要做一个伟大的。太棒了,足以让我微笑。一次偶然的机会,我看到了一个关于不同CSS框架Tailwind.css的视频,它使一切变得更好。也许是时候尝试一下了。Tailwind.css允许您使用其“部分”样式类构建自己的框架。我喜欢这样的解决方案,因为它是HTML模板的原始用途。buttonTailwind.css中的所有东西都被细分了,所以把这些类写到元素上就像简单一样将积木放在一起。但是,我的Rotala.css输出的是样式表而不是模板。所以,我必须想办法让它在构建时吐出一些文件。研究证明我的担心是多余的,Tailwind.css中的所有样式都可以像SASS一样通过适当的配置编译成一个小的css文件。/*基础*/@import"tailwindcss/base";@import"./base.pcss";/*组件*/@import"tailwindcss/components";@import"./components.pcss";使用postcss-cli使编译变得简单$postcssdocs/main.pcss-odocs/assets/css/rotala.css...正如您从构建命令中看到的那样,我完全放弃了SASS并迁移到了Postcss。SASS没有什么不好,但我只是希望我的框架只使用一种技术来避免一些复杂性。构建源文件夹通过一遍又一遍地重新启动所有内容,我终于找到了一个让我的代码库保持良好状态的模式。源文件夹结构如下:rotala/docs/style/CHANGELOG.mdREADME.mdpackage.jsonpostcss.config.jsdocs/文件夹用于保存有助于演示输出的静态文件。这也是Github页面的另一种设置,它可以轻松帮助发布静态页面而无需额外的路由参数。docs/assets/base/components/index.htmlmain.pcssstyle/包含所有源样式。最初,我制作了大约20个组件,因为我认为它们是构建现代网站的基本部分所必需的。这些样式在很大程度上基于Spectre.css和Bulma(我是这些框架的粉丝)。样式/基础/组件/手风琴/排版/徽章/面包屑/工具提示/按钮/复选框/分隔线/抽屉/表格组/表单组/输入/选项卡/头像/链接/菜单/模态/通知/分页/弹出框/收音机/Select/base.pcsscomponents.pcssmain.pcssprefix.pcssMakethedifference当你看到这行的时候,你可能会问:既然你抄袭了很多其他框架的设计,那么它和其他框架有什么不同呢?我脑子里有同样的问题,我打算创建自己的CSS框架。重新创造别人的作品似乎不像是“为自己创造”的精神。这意味着这个小框架将永远是我的玩具,对其他开发人员没有任何价值。事实上,我也希望其他人能从我构建的东西中受益。但是我厌倦了从头开始重新创建所有内容,是否有一种简单的方法可以通过添加一些收尾工作使这个死掉的项目起死回生?很难做到“与众不同”,尤其是当你没有很好的灵感时。如果我退一步思考Tailwind.css的优缺点,我是否可以基于Tailwind.css的遗留及其“缺点”构建新功能?我认为答案应该是肯定的。ErinLindford客户支持

erinlindford@example.com
(555)765-4321
Tailwind.css的优点:没有自以为是的风格低级实用类设计可定制的插件系统基于Postcss生态Tailwind.css缺点:模板可能太“拥挤”"文件大小为"大",需要在构建时清理。减少实用程序的语义尽管Tailwind.css有一些缺点,但我认为这些优点足以抵消这些缺点。所以在我的框架中,我需要想出一个方案来处理这些缺点。不得不说第二个和第三个缺点已经是Tailwind.css“特性”的一部分,我无法摆脱它。但第一个“拥挤的模板”似乎很容易平衡。感谢Tailwind.css的强大功能,我还可以通过以下方式编写样式:.container{@applybg-whiterounded-lgp-6;@screenmd{@applyflex;我相信blow这种用法看起来好多了,不是吗?如果我想稍微改变一下.container,我也可以直接用“模板样式”装饰它。...我知道并理解,我不是第一个这样想的人,但至少这可以让我的框架脱颖而出其余的一个不错的功能。核心特性因为我想改变我的框架,所以我想出了这样的核心特性来做到这一点:无设计和可扩展。首先,Tailwind.css是“无设计”的,这让我们的开发人员可以完全控制样式。我将遵循这一点并确保我的所有组件都只是具有非常简单样式的骨架。如果需要,组件具有字体文本大小颜色背景颜色填充边距等。.button{@applyappearance-none;@apply选择无;@apply对齐中间;@apply字体介质;@apply文本中心;@apply文本库;@apply无下划线;@applyleading-normal;@applywhitespace-no-wrap;@apply内联块;@apply游标指针;@apply圆形sm;@申请py-1px-3;,可以修改成想要的形状。它遵循了我们应该如何处理CSS样式的原始做法。假设我们正在设计一个“骨架按钮”。从这个:到这个:BackgroundGray简单地说:Class+Utilities=你的时尚元素。它在模板中似乎太拥挤了,所以也许更好的使用方法是扩展当前类。.button{@applytext-gray-700;@申请bg-gray-300;@applytransition-colors@applyduration-150;&:hover{@applybg-gray-500;是实现我希望在框架中拥有的所有其他组件。创建每个组件比以前花费更少的时间,因为我定义了如何使用“骨架”组件作为核心功能。现在所有必要的组件都已准备好构建网站。仍然有很多缺点,但我认为从头开始创造一些我不擅长的东西对我来说是一种成就。无论如何,我会继续开发这个框架,我希望你也对我在这里的小工作感兴趣。