百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

MojoCSS:下一代原子 CSS 框架,零 CSS 写 UI

myzbx 2024-12-15 15:35 20 浏览

家好,很高兴又见面了,我是"高级前端?进阶?",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。

1. 什么是 Mojo CSS?

Mojo CSS 是一个原子 CSS 框架,其基于 HTML 实时生成 CSS,并且运行时间接近零。Mojo CSS 提供了创建自定义、美观且响应式布局的最快方法,而无需编写一行 CSS。 全套实用程序可帮助开发者充分发挥网页的性能。

目前 Mojo CSS 在 Github 通过 MIT 协议开源,代表了下一代原子 CSS 框架,无需交付任何 CSS 即可打造华丽的 UI。

2.Mojo CSS 有什么突出优势

2.1 按需添加样式

当其他框架和库将 CSS 生成静态文件时,Mojo 会实时处理一切。 其会自动扫描 HTML,查找使用的实用程序,并仅生成这些实用程序所需的 CSS。

Mojo 不断扫描网页,并在每次检测到 DOM 变化时生成所需的 CSS。比如,当用户输入 class="bg-c-blue",Mojo CSS 会自动编译生成以下样式:

Bash
<style>
.bg-c-blue {
    ...
}
</style>

这样方式不仅可以节省文件大小、实现快速渲染,并且能够实时设置 HTML 样式,因为浏览器会立即接收到更改,而无需重新加载页面。

2.2 文件大小

与其他框架不同,Mojo 提供了一种独特的样式方法,使其有别于传统的 CSS 框架。虽然普通项目通常需要至少 100kb 的 CSS 来处理样式,但 Mojo 只需要一个约 50kb(15kb gzip 压缩)的 JS 文件即可处理任何规模项目的样式。

Bash
// Import Mojo CSS
import mojo from 'mojocss'
// Initialize
mojo()

这种方法可以显著减少页面加载时间并提高性能。 Mojo 不是加载大型 CSS 文件并将样式应用到页面上的所有元素,而是使用单个 JavaScript 文件实时设置元素样式,这意味着仅加载页面上当前可见元素所需的样式。

Mojo CSS 无需每次加载页面时下载数百 KB 的代码,从而缩短页面加载时间并提高网站性能。

2.3 原子 CSS

Mojo 遵循 Atomic CSS 方法,这意味着其专注于提供一组可用于构建自定义用户界面的底层 CSS 实用程序。

Mojo 不提供自定义的 UI 工具包,而是让开发人员能够灵活地使用提供的实用程序创建自己的 UI 设计。以下是使用 Mojo 实用程序的 qoute 卡的示例。

<div class="bg-c-body:+2 pa-5 border-left-3 border-c-primary rounded-right-5">
    <quote class="text-c-stronginvert">
        “Any sufficiently advanced technology is
        indistinguishable from magic”
    </quote>
    <div class="mt-4">
        Arthur C. Clarke
    </div>
</div>

Mojo 是另一个典型的 Atomic CSS 框架吗?不是! Mojo 通过引入属性变体而脱颖而出,使 Atomic CSS 更具可读性且更易于维护。下面将 Mojo 与传统的 Atomic CSS 框架进行比较:

<!-- Typical Atomic CSS frameworks -->
<div class="bg-red-400 px-5 hover:bg-red-600 hover:px-8">
    ...
</div>

<!-- Mojo CSS -->
<div class="bg-c-red px-5" hover="bg-c-red:+2 px-8">
    ...
</div>

由于担心多次重复代码,使用原子设计的想法似乎仍然没有吸引力,然而利用组合实用程序的概念却与众不同。

3.Mojo CSS 组件抽离

当构建项目时,开发者可能会发现自己一遍又一遍地重复相同的实用程序模式,从而 使代码难以维护和更新。

通过创建使用 Mojo 实用程序的自定义组件,可以保持代码 DRY(Don't Repeat Yourself)并更轻松地维护和更新项目。

以一个按钮为例:

<button class="bg-c-primary text-c-white py-2 px-4 rounded-4" hover="bg-c-primary:+5">
    Button
</button>

3.1 使用 JavaScript 框架

使用 React、Vue 或 Angular 等 JavaScript 框架时,建议创建使用 Mojo 实用程序的自定义组件。

这允许开发者利用框架的强大功能来创建动态和交互式用户界面,同时仍然利用 Mojo 的实用程序来处理组件的样式。

例如,如果在 Vue 中构建按钮组件,则可以创建如下自定义组件:

<template>
  <button class="bg-c-primary text-c-white py-2 px-4 rounded-4" hover="bg-c-primary:+5">
    <slot></slot>
  </button>
</template>

<script>
    export default {
        name: "custom-button"
    }
</script>

然后在 Vue 模板中使用:

<custom-button>
  <!-- button content -->
</custom-button>

3.2 使用模式 (Pattern)

如果不使用 JS 框架,则可以使用 Mojo 的模式。 模式提供了一种将一组实用程序封装到一个类中的方法,然后可以在整个项目中重复使用该类。

以按钮为例:

mojo({
 patterns : {
    '.btn': {
        idle : 'bg-c-primary text-c-white py-2 px-4 rounded-4',
        hover: 'bg-c-primary:+5'
    }
  },
})

接着就可以在 HTML 中如下引入:

button class="btn">
  <!-- button content -->
</button>

参考资料

https://mojocss.com/docs/guide/component-abstraction

https://github.com/mojocss/mojocss

相关推荐

Web 界面开发指南,持续更新(web界面开发工具)

最近看到了一份非常精简但很实用的《Web界面开发指南》,其中仅有4页,却详细阐述了前端交互体验的关键要点。这份指南的思路和方法相当于一个最佳实践,比许多冗长的内容介绍更易于理解。实际上即使没有太...

矢量图标LOGO绘制教程(二):短信应用

前言本次教程使用软件为:InkscapeInkscape是一款功能强大的免费设计工具。无论您是插画家、设计师、网页设计师,还是只是需要创建一些矢量图像的人,Inkscape都适合您!它具有以下功能...

Deepseek生成图片的几个方法,示例模板附上

针对DeepSeek生成图片场景设计的原创提示语模板及示例,结合了多步引导、参数化要求和第三方工具协同策略,可适配不同设计需求:一、SVG代码生成法(适用技术型用户)提示语结构:请将下方文本内容转化为...

这个质量超高的PPT背景生成器,开发者居然才12岁,来自加拿大

很多人在上手PPT设计的时候,最头疼的可能就是背景的问题了,想找一些既能丰富视觉层次,又不影响文字呈现的背景图:但是又不知道,该去哪里找?或者找到了能不能商用:其实,你可以用一些免费的,背景生成器做出...

免费好用还高级!3个必须知道的设计网站,让你的PPT好看10倍

哈喽,大家早上好鸭~好久不见,我是三石,今天我又来进行PPT技巧分享啦~诶,这不前几天编辑部的萌萌就来找我约稿,说小叶子们对于神器网站的呼声很高,问我能不能写一篇文章汇总一下,我二话没说就答应了。常言...

前端必备!干货满满的前端周刊(第三期)

前端周刊是一份专为前端从业人员,以及对前端、设计领域感兴趣的朋友们打造的技术周刊。程小狮会精选出前端、设计领域近期相关的资讯、热点以及技术干货,与大家一同分享。前端周刊专注于前端领域技术分享。希望这份...

筛选了100个配色工具后,我挑出了这25个

研究主题:提升色彩感知的配色工具研究对象:配色工具UI设计中,颜色几乎是最先被感知到的设计元素,好的色彩感知是成为一个优秀的设计师的基础,配色工具层出不穷,辞典酱在筛选了100多种配色工具后,精选了...

前端开发-SVG从入门到实战(前端swc)

SVG(可缩放矢量图形)是前端开发中不可或缺的技术,它既能实现高清无损缩放,又能通过代码动态控制,完美适配复杂交互场景。本文将从基础到进阶,带你快速掌握SVG的核心技巧。SVG的核心优势矢量图形,无限...

一场演唱会,揭开了那英的“真面目”,怪不得被宋祖德喊话封杀

还在为运气发愁?别担心,关注我,好运连连,财运亨通!那英,大家都知道,这是个响当当的名字,作为华语乐坛的“天后”,她的歌声陪伴了无数人的青春,可最近这场在澳门的演唱会,可把她的热度压得有点低,甚至让人...

【消防宣传月】居家遇初火千万别着急!这就教你怎么灭→

“消防安全大家谈”“119”消防宣传月策划持续推新这次带来的是趣味互动科普第四弹!渝仔消妹精心设计了SVG互动式消防知识主题秀以屏幕互动的方式将知识点一步步鲜活地呈现给大家家庭初起火灾如何扑救家是温馨...

Winform革命:如何用aardio版AntdUI打造Web级美观界面?

大家好,我是风行者,一个拥有15年开发经验和教学经验的80后嘿,Winform开发者们!你是否还在为那些老掉牙的界面设计头疼?是不是每次看到那些光鲜亮丽的Web应用,心里就痒痒的,想着:“要是我的应用...

FastReport.Net v2016.6发布,添加打印对话框等新功能

新版本的FastReport添加了报表对象:PolyLineObject-中断曲线,PolygonObject-填充密闭多边形。除此之外,用户也能够通过移动、添加或者去除定位点来编辑已经准备好的对象...

高效办公,你值得拥有之原型工具AXURE篇

简介AxureRP是美国AxureSoftwareSolution公司旗舰产品,是一个专业的快速原型设计工具,让负责定义需求和规格、设计功能和界面的专家能够快速创建应用软件或Web网站的线框图...

300 多行代码搞定微信 8.0 的「炸」「裂」特效!

微信8.0更新的一大特色就是支持动画表情,如果发送的消息只有一个内置的表情图标,这个表情会有一段简单的动画,一些特殊的表情还有全屏特效,例如烟花表情有全屏放烟花的特效,炸弹表情有爆炸动画并且消息和...

基于Vue的yyds图片编辑器(vue editormd)

一、项目简介基于Vue的yyds图片编辑器二、实现功能支持复制粘贴支持自定义字体支持自定义素材支持自定义设计模板支持多元素垂直、水平对齐方式支持拆分/组合组合支持保存为SVG、PNG、JSON文件支持...