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

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

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

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

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 会自动编译生成以下样式:

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

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

2.2 文件大小

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

// 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

相关推荐

一键生成高颜值图表!让你的文字瞬间有画面感,职场人必备!

哈喽,打工人们!忙碌的周中,大熊又来给你们带来一个超实用的效率神器啦!这次的宝藏网站绝对是那种用过就离不开的"真香"型产品!假设你明天就要做重要汇报,可面对一大堆密密麻麻的文字材料,你...

批量将 Word 转换为 PDF/Excel/Txt/图片等多种格式

Word文档是我们工作中经常会打交道的一种文档格式,我们也经常会有需要对Word文档进行格式转换的需求,比如将Word格式转换为PDF、将Word文档转换为Excel、将Word...

绝了!一键用AI生成高颜值动态PPT(附详细步骤+Prompt)

大家好,我是一名酷爱研究AI的产品经理,最近我有个新发现:那些花了你3天做出来的PPT,现在用AI可以1小时搞定!而且颜值还高!为什么AI做PPT比传统方式效率高10倍?我用一张图就能告诉你:AI生成...

ztext - 简单几行代码创建酷炫3D特效文字的开源JS库

把网页上的文字变成酷炫的3D风格,还能制作旋转动效,有了ztext.js,只需要几行代码。ztext能做什么ztext.js是一个能把常规的平面文字变成3D样式的前端开源代码库,让开发者...

文字内插入小图片,也太可爱了吧(文字中怎么插图片)

图文排版H5手机版秀米有小伙伴留言问添加图片的时候可不可以把图片添加到文字之间比如下面这句话中的小贴纸图片后面可以接着输入文字其实吧这就是咱们的『文字内插入小图片』功能嘛可以用来在文字内加个表情包又...

Linux环境下C++代码性能分析方法(linux怎么写c++代码)

技术背景在开发C++应用程序时,找出代码中运行缓慢的部分是进行性能优化的关键。在Linux系统上,有多种工具和方法可用于对C++代码进行性能分析,每种方法都有其特点和适用场景。实现步骤手动中断调试法在...

SVG互动图文,让你的文章更有趣!教你4种简单易学的黑科技玩法!

如果你是一个公众号创作者,那么你一定想知道如何让你的文章更加吸引人,更加有趣,更加有创意。你可能已经尝试过各种图文排版技巧,但是你是否知道,有一种黑科技可以让你的文章变得更加酷炫,更加互动,更加爆款?...

Videoscribe怎么实现实心中文汉字的手绘制作

很多朋友在制作手绘视频的时候,不知道怎么输入实心的中文汉字,之前我们已经给大家分享了怎么输入汉字的方法,但是有一点遗憾的是输出的汉字是空心的手绘展示,在视觉上并不是非常的美观。经过大家不断的探索,终于...

一款用于将文本转化成图表的现代化脚本语言

大家好,又见面了,我是GitHub精选君!今天要给大家推荐一个GitHub开源项目terrastruct/d2,该项目在GitHub有超过10.3kStar,用一句话介绍该项目就是:...

探秘 Web 水印技术(制作水印网站)

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

不忍心卸载的五款神仙工具(不忍心卸载的五款神仙工具是什么)

001.效率工具uTools-装机必备的生产力工具集uTools是一款非常强大的可以装下几乎所有效率工具的电脑生产力工具集,目前拥有Windows、Mac和Linux三个版本。软件界面...

「SVG」飞花令!这份最高检工作报告“超有料”

原标题:【SVG】飞花令!这份最高检工作报告“超有料”栏目主编:秦红文字编辑:沈佳灵来源:作者:最高人民检察院...

svg|2025政府工作报告,有没有你关心的数据?

··<setattributeName="visibility"begin="click+0s"dur="1ms"fill="freeze"restart="never"to="hi...

videoscribe只能输入英文,如何输入中文文本?

videoscribe只能输入英文,如何输入中文文本?打开VideoScribe软件,打开要添加中文字体的位置。打开Photoshop并在文件中创建一个新的透明背景图层。注意:必须是透明背景层。...

五个流行的SVG在线编辑器(svg编辑工具)

随着响应网络的发展,越来越多的高质量的SVG在线编辑器被公众所熟知。SVG矢量图形也越来越受欢迎,以便在任何设备上呈现图像,甚至一些易于使用的SVG在线编辑器,可以替代PS,本文总结了五种流行的SVG...