如何清理无效的 CSS 代码 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
cyio
V2EX    程序员

如何清理无效的 CSS 代码

  •  
  •   cyio
    cyio 2015-12-12 11:02:46 +08:00 6897 次点击
    这是一个创建于 3614 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目开发过程中,前端设计改来改去,这时往往会先把新的效果做出来,等项目做完,就会有一些遗弃的 CSS 代码,比如有些 CSS 类在 DOM 改动后用不到了。那么,有哪些可用的方法呢?

    对比清除无用 CSS 的解决方法:

    1. 在线网站分析,优点是输个地址就行,有直观的图表展示,缺点是要获取详细数据可能需要付费,不支持本地使用。
    2. gulp npm 工具,优点是可以融入工作流,缺点是清除无用 CSS 只是一次性任务,配置有点麻烦,而且哪些代码要剔除恐怕必须要人工判断。
    3. unusedCSS - Chrome 网上应用店 推荐,支持本地服务上跑的页面,界面简陋但够用方便。

    图文简单介绍下 unusedCSS 的使用:

    1. 如图,点Set Domain,对当前网站分析。

    2. 随便点空白地方,等扩展界面关掉再次打开,界面显示扩展已开启,有三个按钮,点第二个查看分析结果。

    3. 结果页,主要是看后两项,未使用和重复项,结合这两项数据,逐条清理。

    总结

    清理无效 CSS ,需要花一点时间手动剔除(无法自动化),有些代码只在某种特殊状态下才用到(如 media query ),这些代码就要跳过了。清理过程中,要做好测试,防止误伤。

    附原文链接:如何清理无效的 CSS 代码 - Oaker's Blog

    14 条回复    2016-12-22 17:12:30 +08:00
    zzuieliyaoli
        1
    zzuieliyaoli  
       2015-12-12 12:07:26 +08:00
    chrome 带有查看无效 CSS 代码的工具。。。。



    zzuieliyaoli
        2
    zzuieliyaoli  
       2015-12-12 12:10:24 +08:00   1
    F12 => 顶部工具条选择“ Audits ” => 底部“ Run ”按钮 => “ Web Page Performance ” => “ Remove unused CSS rules ”
    sparanoid
        3
    sparanoid  
       2015-12-12 12:22:34 +08:00 via iPhone
    jonechenug
        4
    jonechenug  
       2015-12-12 12:40:10 +08:00 via Android
    怎么知道无效,不同浏览器对应不同的 CSS 的时候(譬如有些属性不支持 ie ,有些仅支持 ie),你怎么破?
    viko16
        5
    viko16  
       2015-12-12 12:55:22 +08:00
    然而还要考虑后续添加进来的 DOM 是否用上,也是累啊
    Wangxf
        6
    Wangxf  
       2015-12-12 13:24:07 +08:00
    这个东西 jb 家的 ide 自带这个功能,没用的 css 都显示暗色
    coolzjy
        7
    coolzjy  
       2015-12-12 13:44:41 +08:00
    @jonechenug 而且 CSS 经常是全站共享的,一个页面怎么能分析出来
    ys0290
        8
    ys0290  
       2015-12-12 14:10:20 +08:00 via iPhone
    css 文件大到影响网站载入了吗?
    cyio
        9
    cyio  
    OP
       2015-12-12 14:11:17 +08:00
    @zzuieliyaoli 经你提醒才知道 audits 的存在(这个单词没学过)

    刚用了下,请教两个问题:
    1. 它是否可以用来检测重复的 CSS 类?
    2. 它能给出多个页面(比如 webapp )的检测结果吗,还是只能一个页面一个页面来?
    cyio
        10
    cyio  
    OP
       2015-12-12 14:16:53 +08:00
    @jonechenug
    @coolzjy

    写 blog 的时候忘了,当时做的是微信端的 webapp 项目,要对所有页面交互操作一遍,再看 unusedCSS 的检测结果。
    cheneydog
        11
    cheneydog  
       2015-12-12 15:24:02 +08:00
    @zzuieliyaoli
    然后呢?怎么能去除无效的规则保存,怎么匹配多个页面。
    hiluluke
        12
    hiluluke  
       2015-12-12 15:54:14 +08:00
    chrome 开发 devstool 里面的 audits ,那用这么麻烦。
    nickleefly
        13
    nickleefly  
       2015-12-13 08:29:07 +08:00 via Android
    huage
        14
    huage  
       2016-12-22 17:12:30 +08:00
    @zzuieliyaoli remove 只是一个提示多少百分比的无效代码吧,但是不会给一个结果
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     935 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:57 PVG 04:57 LAX 12:57 JFK 15:57
    Do have faith in what you're doing.
    ubao msn 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