下一代 CSS 框架:Mojo CSS

前言

Tailwind CSS 推出即受到广大开发者的欢迎,当前 Github star 数已达 77.8k。它是一个功能类优先(utility-first)的 CSS 框架,它提供了一系列功能类,让开发者可以在 HTML 中通过组合这些功能类(原子类)的方式去快速构建用户界面。

本文将给大家分享下一代原子级 CSS 框架:Mojo CSS,并简要阐述其与 Tailwind CSS 的异同。

Mojo CSS 基本介绍

Mojo CSS 定位为下一代原子级 CSS 框架,是由 Mohammad Zamanian 和 Ali Mirabbasi 开发和维护的开源项目。

Mojo CSS 于 2023 年发布,该框架的工作原理是扫描你的代码并实时创建 CSS 视觉效果,而无需你编写新的 CSS 代码。它会根据 HTML 生成 CSS,可在不使用任何 CSS 的情况下制作华丽的用户界面。与 Tailwind 一样,Mojo CSS 也会移除未使用的 CSS,以提高页面性能并简化维护工作。

Mojo CSS 不仅仅是另一个 CSS 框架,它还是一种全新的样式设计方式,以易用性、定制化和速度优先。Mojo 的核心是一个超轻量级(约 15kb gzipped)的 JavaScript 引擎,它可以通过扫描页面上的实用工具动态生成 CSS。

快速安装:

npm install mojocss
# oryarn add mojocss

为何 Mojo CSS 如此受欢迎?主要归因于一下方面:

1)自定义主题:

告别仅限于暗色模式的局限。Mojo 可让开发者定义无限的主题颜色,让您自由发挥创意,使您的项目真正独一无二。最棒的是什么?非常简单,只需选择三种主色调即可!

mojo({base: {themes: {default: {body: "#f2f7f9",invert: "#6b88a5",primary: "#ff6145",},// Try out different color themes,// make as many you want without worrying about overloading the project.dim: {body: "#1a2a39",invert: "#90a4b8",},blackout: {body: "#000",invert: "#999",},},}
});

2)CSS 选择器:

Mojo 打破常规,让您可以在 HTML 中使用真正的 CSS 选择器,并与框架的实用工具无缝集成。这对于那些渴望灵活性和可读性的用户来说,无疑是一场变革。

当 HTML 限制了复杂的 CSS 选择器时,Mojo 的任意选择器就会介入,使您能够在标记中利用原始 CSS 的强大功能,同时充分利用 Mojo 的实用工具。

只需使用 _="" 属性,并在括号中指定所需的选择器即可:

<ul _="(li.active) bg-c-red text-c-white" ><li>First Item</li><li class="active">Second Item</li><li>Third Item</li>
</ul>

3)内置色彩引擎:

Mojo 允许您使用无限的颜色以及无数的色调和色差,从而将颜色定制提升到一个新的水平。您的创造力无穷无尽。

<div><div class="bg-c-primary:-10"></div><div class="bg-c-primary:-5"></div><div class="bg-c-primary"></div><div class="bg-c-primary:+5"></div><div class="bg-c-primary:+10"></div>
</div>

4)响应式设计:

Mojo 的响应式设计使用断点变量,告诉网站如何根据屏幕尺寸安排内容。将断点定义为变体,可以根据不同的屏幕尺寸轻松调整元素样式。每个实用工具类都有响应式变体。

5)模式进一步简化:

利用 CSS-IN-JS 语法和嵌套规则,Mojo 的模式简化了 CSS 的编写,使您能够应用全局样式或封装实用程序集,从而减少代码重复。

模式对象的结构如下:

mojo({patterns: {// Your Styles},// ... other configurations
});

6)尺寸至关重要:

作者深知轻量级框架的重要性。Mojo 简化后只有约 50kb 大小,压缩后只有约 15kb 大小,非常轻量。

缩小 Mojo 的大小并不意味着牺牲功能或灵活性。尽管体积小巧,但 Mojo CSS 提供了一套全面的实用工具,让您可以制作出美观、功能丰富的用户界面。它在效率和功能之间实现了完美平衡,让您的开发之旅更加顺畅愉快。

Mojo CSS vs Tailwind CSS

Mojo CSS 比 Tailwind 更好吗?下面将比较 Mojo CSS 和 Tailwind 的各种功能,看看哪一个更胜一筹。

1)浏览器兼容性:

首先需要提到的是浏览器兼容性,Tailwind 和 Mojo CSS 对现代浏览器支持很好,不会有太多的兼容性问题。

但 Mojo CSS 为了提供流畅的手机和电脑屏幕兼容性,使用了变体断点。开发者需要使用这些断点来应对网站如何调整大小和排列内容。

2)UI 主题和组件:

Tailwind 提供定制的用户界面组件,包括各种用户界面元素,如输入框、卡片和导航栏。这些组件是使用 Tailwind 的实用工具类构建的,可以实现彻底的定制和风格化。Tailwind 通过提供预定义的内置组件,简化了 CSS 设计过程。Tailwind 拥有 500 多个自定义组件和模板。

至于 Mojo CSS,文档网站上还没有提供模板,也没有发布 Mojo CSS 组件列表,但其自定义定制化主题可能会受到更多开发者的欢迎。

3)集成和扩展性:

Tailwind 拥有庞大的用户群,由此产生了许多插件和资源。你可以使用许多免费的 Tailwind 插件来改进 CSS,比如改进宽高比的插件。你可以在这里和 Tailwind 官方文档中找到更多 Tailwind CSS 插件。

因 Mojo CSS 还比较年轻,与 Tailwind CSS 相比,Mojo CSS 的扩展和插件很少。

但值得一提的是,Mojo CSS 拥有一个名为 Mojo CSS Intellisense 的 Visual Studio 扩展,只要在 Visual Studio 的 CSS 项目中添加 mojo.config.js 文件即可使用。该扩展将为您的 Mojo 实用程序提供自动完成功能,并支持 HTML、JavaScript 和 Vue.js 等语言和框架。

4)速度与性能:

Tailwind 以提供稳定可靠的版本而著称。它采用即时 CSS 编译器,只使用必要的 CSS,而不是预先编译所有内容。Tailwind 会向客户端发送 10kB 的 CSS,以改进 CSS。至于 Tailwind 的可靠性,它是有据可查的,也是公认的。

而 Mojo CSS 虽然没有遇到重大问题,但它是一款较新且测试较少的 CSS。尽管如此,Mojo CSS 的性能仍然令人印象深刻,这主要归功于其轻量级 CSS 样式组件,总大小仅为 50 kB,压缩后为 15 kB。

5)上手成本:

Tailwind 和 Mojo CSS 都有官网及完善的文档,上手成本不高。

使用 Tailwind 可以大大减少 CSS 的编写量,而使用 Mojo CSS 则无需编写任何 CSS。与 Mojo CSS 不同的是,Tailwind 需要对 HTML 和 CSS 有深入的了解。

总结

Tailwind 和 Mojo 这两个 CSS 框架都很优秀。但对于开发者的我们,能满足我们项目需求的才是最好的框架。Mojo CSS 是一款优秀的革命性 CSS 框架,相信它还有很长的路要走,未来可期!

—————————

推荐学习教程:阿里大牛600分钟精讲React全家桶让你从入门到精通(基础+进阶+实战+源码)

注:前端资料分享,(学习文档+面试八股文+场景题+简历模板+视频教程等)

仅供参考!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1475169.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

EPICS数据库示例

本文目标是使用EPICS数据库示例帮助新手理解如何使用不同的示例。 1、使用seq和mbbo的简单选择器 这个简单示例展示了如何使用一个mbbo和一个seq来旋转哪个值将被设置到一个PV。 # 这个mbbo记录将选择将运行seq的哪段 record(mbbo, "CHOOSE") {field(VAL, "…

c#字符串常用方法

目录 1.字符串的处理常用方法 1.1 Format 1.2 IsNullOrEmpty和IsNullOrWhiteSpace 1.3 Equals 1.4 Contains 1.5 Length 1.6 Substring 1.7 IndexOf和LastIndexOf 1.8 ​​​​​​​StartsWith 和 EndsWith 1.9 ​​​​​​​Remove 1.10 ​​​​​​​Revserse…

基于Java+SpringMvc+Vue技术的实验室管理系统设计与实现

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

如何手工DIV一个小车:基于树莓派和总线舵机的智能小车实现

成品演示&#xff1a;bilibili - 悄悄的魔法书 代码仓库&#xff1a;github - flying forever 或者 gitee - 清风莫追 文章目录 1 引言1.1 课题背景1.2 课题意义1.3 课题目的 2 课题相关知识与开发环境3 课题的总体设计4 课题的详细设计与实现4.1 小车物理结构4.1.1 轮子4.1.2 …

2024年最新ComfyUI汉化及manager插件安装详解!

前言 在ComfyUI文生图详解中&#xff0c;学习过如果想要安装相应的模型&#xff0c;需要到模型资源网站&#xff08;抱抱脸、C站、魔塔、哩布等&#xff09;下载想要的模型&#xff0c;手动安装到ComfyUI安装目录下对应的目录中。 为了简化这个流程&#xff0c;我们需要安装Co…

如何在 PostgreSQL 中实现数据的去重操作,尤其是对于复杂的数据结构?

文章目录 一、基本数据类型的去重二、多列数据的去重三、复杂数据结构的去重&#xff08;一&#xff09;数组类型的去重&#xff08;二&#xff09;JSON 类型的去重&#xff08;三&#xff09;结构体类型&#xff08;复合类型&#xff09;的去重 四、使用 GROUP BY 进行去重五、…

数据结构--堆,堆排序

1.树概念及结构 1.1树的概念 树是一种 非线性 的数据结构&#xff0c;它是由 n &#xff08; n>0 &#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的 。 有一个 特殊的结…

自动高速开箱机:如何助力电商物流行业

在电商飞速发展的今天&#xff0c;物流行业也迎来了前所未有的挑战与机遇。为了满足消费者对快速、高效、安全的配送需求&#xff0c;各大电商平台和物流公司纷纷寻求技术革新&#xff0c;其中&#xff0c;自动高速开箱机凭借其独特的优势&#xff0c;在电商物流中崭露头角&…

vulnhub-Os-hackNos-3(包含多种靶机获取不了IP地址情况)

下载靶机 通过VMware搭建 网络问题是个关键点 我们点击开启虚拟机&#xff0c;到开机的页面我们回车选择第二个Ubuntu的高级选项 (如果出不来这个选择界面&#xff0c;开机时按下shift键) 进到高级选项&#xff0c;我们再次回车选择第二个进入Linux内核版本的恢复模式 回车后…

BaseServlet的封装

创建BaseServlet的必要性 如果不创建BaseServlet&#xff0c;现在我们只要实现一个功能&#xff0c;我们就需要创建一个servlet! 例如:用户模块(登录&#xff0c;注册&#xff0c;退出录&#xff0c;激活&#xff0c;发送邮件等等功能) 也就是说&#xff0c;我们必须要创建一…

Vue3使用ref绑定组件获取valueRef.value为null的解决

问题&#xff1a; onMounted(() > {nextTick(()>{console.log(treeselectRef, treeselectRef.value);console.log(treeselectRef.value, treeselectRef.value);}); });输出&#xff1a; 查看绑定和定义都没有问题&#xff0c;还是获取不到 解决&#xff1a;使用getCur…

YOLOv5+DecoupleHead解耦头(YOLOx)

一、解耦头原理 在目标检测中,分类任务和回归任务之间的冲突是一个众所周知的问题。因此,用于分类和定位的解耦头被广泛应用于大多数一级和二级探测器。但是,由于YOLO系列的主干和特征金字塔(如FPN, PAN)不断演化,它们的检测头仍然是耦合的。 从下表可以看出,头耦合时端…

leetcode 1398 购买了产品A和产品B却没有购买产品C的顾客(postgresql)

需求 Customers 表&#xff1a; ---------------------------- | Column Name | Type | ---------------------------- | customer_id | int | | customer_name | varchar | ---------------------------- customer_id 是这张表的主键。 customer_name 是顾客的名称。 Order…

水果商城系统 SpringBoot+Vue

1、技术栈 技术栈&#xff1a;SpringBootVueMybatis等使用环境&#xff1a;Windows10 谷歌浏览器开发环境&#xff1a;jdk1.8 Maven mysql Idea 数据库仅供学习参考 【已经答辩过的毕业设计】 项目源码地址 2、功能划分 3、效果演示

【软件分享】我们为分类而生—eCognition

分类是各位小伙伴入门遥感需要做的一项基础的工作&#xff0c;在进行遥感影像中的地物进行分类和提取时&#xff0c;如何提高分类精度&#xff0c;常常令人头疼。今天小编带来此前接触过的一个工具&#xff0c;他的名字是—eCognition&#xff0c;感觉比ENVI好用&#xff0c;在…

gui创新点charts图表

import javax.swing.*; import java.awt.*;public class ComboChartExample extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 数据int[] values {100, 200, 150, 300, 250};int[] lineValues {120, 180, 160, 280, 230};Str…

掌上教务系统-计算机毕业设计源码84604

摘要 在数字化教育日益成为主流的今天&#xff0c;教务管理系统的智能化和便捷性显得尤为重要。为满足学校、教师、学生及家长对教务管理的高效需求&#xff0c;我们基于Spring Boot框架设计并实现了一款掌上教务系统。该系统不仅具备课程分类管理功能&#xff0c;使各类课程信…

Git 查看、新建、删除、切换分支

Git 是一个版本控制系统&#xff0c;软件开发者用它来跟踪应用程序的变化并进行项目协作。 分支的诞生便于开发人员在彼此独立的环境中进行开发工作。主分支&#xff08;通常是 main 或 master&#xff09;可以保持稳定&#xff0c;而新的功能或修复可以在单独的分支中进行开发…

猫咪健康新选择!福派斯鲜肉猫粮里的果蔬纤维大揭秘

你们是不是对福派斯鲜肉猫粮中那些丰富的果蔬粗纤维特别好奇呢&#xff1f;&#x1f914; 其实&#xff0c;这些看似简单的粗纤维&#xff0c;对猫咪的健康可是大有裨益的&#xff01; 粗纤维在猫粮中起到多种重要作用&#xff0c;并且对猫咪的健康和消化系统有着显著的影响。以…

运维系列.Nginx中使用HTTP压缩功能

运维专题 Nginx中使用HTTP压缩功能 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…