CSS in JS = JSS , 这个库你知道吗?

简介: CSS in JS = JSS , 这个库你知道吗?

参考:JSS or CSS…What to use and why ?. If you guys haven't heard of JSS its… | by Sumeet Bhalla | Geek Culture | Medium


什么是 JSS ?

一图胜千言:

image.png


这图还有点搞笑。。。


CSS 一直困扰着咱前端仔,有点麻烦:已经用上了各类 UI 框架,要么就会遇到组件功能不符合产品的需求,要么就是 UI 妹纸有自己的想法。。。这样的结果就是,除了框架的 CSS,自己还要补充或覆盖很多样式。


CSS 通常就是单文件加上模板页面的 <style> 标签,你覆盖我、我覆盖你,写到后面其实也就没有太多逻辑,就是堆叠。


以上还算是好的,在协同开发的场景下,还有直接把样式写在 DOM 上面的,都不用说样式的命名规范了,反正,通常遇到问题就是:加权重、追加样式、覆盖样式这种。

前段时间,Tailwind CSS 火过一阵,怎么说呢?是简单了,但也复杂了;即写起来简单了,但理解起来需要点基础:


比如:rounded-lg 意味着☞ border-radius: 0.5rem;

言而总之,现在的样式表在前端开发中还是相对独立的,我们又试图找到一种合适的代码样式组织方式。


JSS 试图打破这一困局!


来看代码:

  • Module1.css
.a {
  background-color: red;
}


  • Module1.jsx
import './Module1.css'
function Module1() {
  return <span class='a'>Hey</span>
}


  • Module1.jsx using JSS
const useStyles = createUseStyles({
  a: {
    backgroundColor: 'red';
  }
})
function A() {
  const styles = useStyles()
  return <span class={styles.a}>Hi</span>
}


JSX 将 DOM 和 JS 写在了一起,那 JSS 则将 DOM + CSS + JS 都写在一起,做到真正聚合。


这也就是 JSS 最大的好处,将 CSS 也纳入到组件化中。

同时,这个库也不大,压缩后才 6 KB;

image.png


这个库,不是没人用,著名的 Material UI 框架就用过;只不过现在从 JSS 升级为了 TSS,原理是一样的。


这是 JSS 官网:JSS

Example:

import jss from 'jss'
import preset from 'jss-preset-default'
import color from 'color'
// One time setup with default plugins and settings.
jss.setup(preset())
const styles = {
  '@global': {
    body: {
      color: 'green'
    },
    a: {
      textDecoration: 'underline'
    }
  },
  withTemplates: `
    border-radius: 3px;
    background-color: green;
    color: red;
    margin: 20px 40px;
    padding: 10px;
  `,
  button: {
    fontSize: 12,
    '&:hover': {
      background: 'blue'
    }
  },
  ctaButton: {
    extend: 'button',
    '&:hover': {
      background: color('blue').darken(0.3).hex()
    }
  },
  '@media (min-width: 1024px)': {
    button: {
      width: 200
    }
  }
}
const {classes} = jss.createStyleSheet(styles).attach()
document.body.innerHTML = `
  <button class="${classes.button}">Button</button>
  <button class="${classes.ctaButton}">CTA Button</button>
`


需要考量的是:

样式表通常很长,这样一加进组件的写法中,组件的代码量肯定会增加,如果 JSX 的代码有比较长的代码是样式,会不会也同样增加阅读负担?


相关文章
|
27天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
54 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
1月前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
43 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
2月前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
146 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
2月前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
62 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
2月前
html+js+css实现的建筑方块立体数字时钟源码
html+js+css实现的建筑方块立体数字时钟源码
101 33
|
3月前
一个好看的小时钟html+js+css源码
一个好看的小时钟html+js+css源码
123 24
|
3月前
|
JavaScript 前端开发
页面滚动触发css3动画js插件
delighters.js是一款页面滚动触发css3动画js插件。该js插件可以在页面向下滚动时,为进入浏览器视口的元素制作各种炫酷的CSS3动画效果。
62 13
|
3月前
纸屑飘落生日蛋糕场景js+css3动画特效
纸屑飘落生日蛋糕CSS3动画特效是一款js+css3制作的全屏纸屑飘落,生日蛋糕点亮庆祝动画特效。
63 3
|
4月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
38 0
|
10月前
|
前端开发 JavaScript UED
前端开发的魔法:CSS动画与JavaScript的完美结合
本文将探讨如何利用CSS动画和JavaScript的结合,为前端页面增添生动的效果。我们将通过实例展示如何使用这两种技术为网页元素创建吸引人的动画效果,并讨论它们的优缺点和适用场景。
146 0

热门文章

最新文章