当前位置: 首页 > 面试题库 >

用于缩小CSS的Python脚本?

公孙英飙
2023-03-14
问题内容

我正在寻找一个简单的Python脚本,该脚本可以在网站部署过程中最小化CSS。(Python是服务器上支持的唯一脚本语言,而像CSS
Utils
这样的功能强大的解析器对该项目来说是多余的)。

基本上,我想要jsmin.py for
CSS。一个没有依赖性的脚本。

有任何想法吗?


问题答案:

对于我来说,进入已经等待了一段时间的python似乎是一项艰巨的任务。我特此介绍我的第一个python脚本:

import sys, re

with open( sys.argv[1] , 'r' ) as f:
    css = f.read()

# remove comments - this will break a lot of hacks :-P
css = re.sub( r'\s*/\*\s*\*/', "$$HACK1$$", css ) # preserve IE<6 comment hack
css = re.sub( r'/\*[\s\S]*?\*/', "", css )
css = css.replace( "$$HACK1$$", '/**/' ) # preserve IE<6 comment hack

# url() doesn't need quotes
css = re.sub( r'url\((["\'])([^)]*)\1\)', r'url(\2)', css )

# spaces may be safely collapsed as generated content will collapse them anyway
css = re.sub( r'\s+', ' ', css )

# shorten collapsable colors: #aabbcc to #abc
css = re.sub( r'#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3(\s|;)', r'#\1\2\3\4', css )

# fragment values can loose zeros
css = re.sub( r':\s*0(\.\d+([cm]m|e[mx]|in|p[ctx]))\s*;', r':\1;', css )

for rule in re.findall( r'([^{]+){([^}]*)}', css ):

    # we don't need spaces around operators
    selectors = [re.sub( r'(?<=[\[\(>+=])\s+|\s+(?=[=~^$*|>+\]\)])', r'', selector.strip() ) for selector in rule[0].split( ',' )]

    # order is important, but we still want to discard repetitions
    properties = {}
    porder = []
    for prop in re.findall( '(.*?):(.*?)(;|$)', rule[1] ):
        key = prop[0].strip().lower()
        if key not in porder: porder.append( key )
        properties[ key ] = prop[1].strip()

    # output rule if it contains any declarations
    if properties:
        print "%s{%s}" % ( ','.join( selectors ), ''.join(['%s:%s;' % (key, properties[key]) for key in porder])[:-1] )

我相信这可以正常工作,并将其输出在最新的Safari,Opera和Firefox上测试正常。除了下划线和/ **
/骇客,它将破坏CSS骇客!如果您遇到大量黑客攻击(或将它们放在单独的文件中),请不要使用Minifier。

我对python的任何提示表示赞赏。不过请温柔,这是我的第一次。:-)



 类似资料:
  • 我正在尝试取消缩放/取消合并我的CSS样式。我有一个style.css文件,里面有很多合并的样式,比如: 我试图把它转换成的是: 我如何取消合并缩小的css样式以获得这样的输出?我已经尝试了几个CSS美化器和缩小器,但它们并不完全是我所需要的。 UPD:这里是解决方案:codeBeautifier.com。要获得与上面示例相同的输出,请打开此页面,找到,将其设置为,粘贴您的CSS,然后点击

  • 问题内容: 我通常在Python脚本中使用以下shebang声明: 最近,我遇到了这个shebang声明: 在脚本文档中,已指出使用此表单“更具可移植性”。 这个声明是什么意思?路径中间为什么会有空间?它实际上有助于提高可维护性吗? 问题答案: 之所以具有更高的可移植性,是因为该程序通常可用于在没有完整路径的情况下“激活”所需的命令。 否则,您将必须指定Python解释器的完整路径,该路径可能有所

  • 我正在使用来自Grav(https://getgrav.org/downloads/skeletons)的Saturn站点主题,并希望更改主页的背景图像(以及最终的其他样式)。在主题的自定义CSS()中,我更改了背景图像,但除非同时更新和,否则不会呈现新图像。 我相信两个档案都改是不合适的;系统应该生成一个缩微CSS的新版本。阅读Grav文档(https://learn.getgrav.org/t

  • 问题内容: 我有一个简单的python脚本,我需要启动和停止,我需要使用start.sh和stop.sh脚本来执行此操作。 我有start.sh: 和stop.sh 我主要关注stop.sh脚本。我 认为 这是找到pid的适当方法,但我对此并不敢多说。start.sh成功启动它。当我运行stop.sh时,我无法再通过控制台找到该进程,但输出如下: 因此似乎可以正常工作,并显示“没有这样的过程”的错

  • While Emmet abbreviations are good for generating HTML, XML or any other structured markup, it may look useless for CSS. You don’t want to write CSS selectors and transform them to CSS selectors, righ

  • 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 访问论坛获取帮助 压缩 css 代码可降低 css 文件大小,提高页面打开速度。 我们接着将规律转换为 gulp 代码 规律 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 当熟悉 使用 g

  • 本文向大家介绍点球小游戏python脚本,包括了点球小游戏python脚本的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python点球小游戏的具体代码,供大家参考,具体内容如下 1.游戏要求: 设置球的方向:左中右三个方向,射门或者扑救动作,循环5次,直接输入方向。电脑随机挑选方向,如果方向相同,那么电脑得分,如果方向相反,那么人得分。 2.分析如何写程序: 1)循环,使用for