unocss 的顺序问题,求大佬解惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chemms
V2EX    CSS

unocss 的顺序问题,求大佬解惑

  •  
  •   chemms 190 天前 1614 次点击
    这是一个创建于 190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们,unocss 这种没有语义顺序吗,我先写的 red 然后前后插入新样式,但是实际是 red 生效

    <div className="size-50px bg-green bg-red bg-blue"></div> 

    就是想组件的传入 className 灵活些,可以直接注入

    className={ clsx( 'px-12px flex-center border-0 select-none focus:outline-none relative', 'bg-gradient-to-r from-[#006DE9] to-[#0077FF] ', 'disabled:bg-blue-300 disabled:cursor-not-allowed', 'flex-center', rounded ? 'rounded-100000px' : '', isPressed ? 'bg-blue-800' : '', fullWidth ? 'w-full' : 'w-auto', loading ? 'opacity-50' : 'opacity-1000', sizeCss[size], className, ) } 

    有这些相关的配置吗,找了一圈了

    16 条回复    2025-07-30 17:40:54 +08:00
    rain0002009
        1
    rain0002009  
       190 天前
    别找了 应该是没有的 这个权重倒是和你定义 css 样式的顺序有关和 class 的顺序没关系 我依稀记得 写在下面的好像比上面的高那么一丢丢 我倒是好奇你为啥要这样用
    chemms
        2
    chemms  
    OP
       190 天前
    好吧,我这边想的是外面注入样式可以直接覆盖内部的,感觉自定义程度高点会特别灵活
    chemms
        3
    chemms  
    OP
       190 天前
    额外写 props 一个一个注入,感觉很麻烦哎
    bgm004
        4
    bgm004  
       190 天前
    顺序是看选择器权重,css 文件顺序以及文件内书写顺序。
    如果是 tailwindcss 可以使用 tailwind-merge 。unocss 我就不清楚了。
    chemms
        5
    chemms  
    OP
       190 天前
    @Track13 选择器权重感觉怪怪的,这个 merge 我去研究下
    chemms
        6
    chemms  
    OP
       190 天前
    不行哎,这玩意 unocss 用不了,还是运行时的,官方没想法搞,估计只能使用选择器注入了吧,但是又不支持动字符串,有点烦


    https://github.com/unocss/unocss/issues/2748
    miku999
        7
    miku999  
       190 天前
    可以定义 variants 来添加额外的 layer, 比如 util:前缀对应的是 layer: 'utilities', 这样 bg-red util:bg-blue 就会使 blue 生效了
    至于为什么原本代码里 bg-red 生效了, 可能是因为在别的文件里已经使用过了 bg-red 和 bg-blue, 先使用的是 bg-blue 后使用 bg-red, 这样生成的 css 文件里 bg-blue 靠前, 你这个文件里只是重复使用已经生成的类
    chemms
        8
    chemms  
    OP
       190 天前
    @miku999 我去研究一下这个
    bgm004
        9
    bgm004  
       190 天前
    @chemms 你这里都是 class 选择器,那肯定是看生成 css 文件内的顺序啊。这是不可控的。
    chemms
        10
    chemms  
    OP
       190 天前
    @miku999 这个通过 layer 确实可以实现后面覆盖前面,我加个 presetAttributify attributes 属性规则去解析,然后 variants 中去解析到这个属性规则的,但是发现这种写法不支持变量。。。
    chemms
        11
    chemms  
    OP
       190 天前
    @Track13 是啊,好像不可解
    miku999
        12
    miku999  
       190 天前
    @chemms #10 你会用到这么多 layer 吗, 我比较大型的项目也就三个就够了, components 最低级, 可被默认 layer 覆盖, 再有一个 utilities 覆盖默认 layer
    感觉用到更多 layer 可能是写法不合适了, 用三元符或者别的一次只触发一个
    chemms
        13
    chemms  
    OP
       189 天前
    @miku999 是的大佬,这样就很合理了
    magicdawn
        14
    magicdawn  
       92 天前
    官方不干, 这个又是强需求, 糊了一个 https://github.com/magicdawn/unocss-merge

    试了下你这个例子, 可以输出
    chemms
        15
    chemms  
    OP
       71 天前
    @magicdawn 大佬,给你点个星
    chemms
        16
    chemms  
    OP
       71 天前
    @magicdawn 现在用不着就是,记得上次是定义了挺多属性来搞的,,,有点麻烦
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2817 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:36 PVG 21:36 LAX 06:36 JFK 09:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86