Python的CSS级联样式表库
项目描述
概述
一个用于解析和构建CSS级联样式表的Python包。仅DOM,没有任何渲染功能!
基于并部分实现以下规范
- CSS 2.1rev1
- 在此定义了CSS的一般规则和属性 
- CSS3模块:语法
- 自cssutils 0.9.4版本起用于组件。cssutils尝试使用CSS 2.1和CSS 3的特性,优先使用CSS3,但由于CSS 3尚未最终确定,因此某些部分来自CSS 2.1。 
- CSS Fonts Module Level 3
- 添加了更改和附加内容(自cssutils v0.9.6起) 
- MediaQueries
- MediaQueries自v0.9.4起成为stylesheets.MediaList的一部分,用于@import和@media规则中。 
- Namespaces
- 自v0.9.1添加,在v0.9.4更新为CSSOM中的定义,在v0.9.5的dev版本中更新 
- CSS3 Module: Pages Media
- 实现了本规范的大多数属性,包括MarginRules 
- Selectors
- 此处定义的选择器语法(而不是在CSS 2.1中定义)应该可以用cssutils解析(但请注意,应该;) 
- CSS Backgrounds and Borders Module Level 3,CSS3 Basic User Interface Module,CSS Text Level 3
- 包含一些属性验证,主要是cursor,outline,resize,box-shadow,text-shadow 
- Variables / CSS Custom Properties
- CSS Variables的实验性规范,cssutils部分实现。在新版的CSS Custom Properties规范中定义的变量应该至少可以用cssutils解析。 
- DOM Level 2 Style CSS
- css包的DOM。0.9.8移除了对CSSValue和相关API的支持,现在请查看PropertyValue和Value API 
- DOM Level 2 Style Stylesheets
- stylesheets包的DOM 
- CSSOM
- 从这里获取了一些细节(主要是NamespaceRule DOM)。计划将实现转移到这里定义的内容,这是更新的,但仍然是REC,可能会随时更改… 
cssutils的标记器是对CSS3 Module: Syntax (W3C Working Draft 13 August 2003)的定制实现,它本身基于CSS 2.1标记器。它试图尽可能地遵守规范,但使用了CSS 2.1标记器的一些(有用的)部分。
我认为cssutils既不是CSS 2.1也不是CSS 3兼容的,但至少尝试解析这两种语法,包括一些更实际的情况(一些CSS技巧实际上可以解析和序列化)。这两个官方语法都不是最终的也不是无错误的,但仍然可行。cssutils的目标不是完全遵守任何CSS规范(规范似乎总是在不断流动),但cssutils应该能够尽可能多地读取和写入“野生”CSS样式表,同时实现官方API,这些API有良好的文档。还提供了一些小的扩展。
兼容性
cssutils是在现代Python版本上开发的。请检查包元数据以确定兼容性。
请注意,cssutils已知是线程不安全的。
示例
import cssutils
css = '''/* a comment with umlaut ä */
     @namespace html "http://www.w3.org/1999/xhtml";
     @variables { BG: #fff }
     html|a { color:red; background: var(BG) }'''
sheet = cssutils.parseString(css)
for rule in sheet:
    if rule.type == rule.STYLE_RULE:
        # find property
        for property in rule.style:
            if property.name == 'color':
                property.value = 'green'
                property.priority = 'IMPORTANT'
                break
        # or simply:
        rule.style['margin'] = '01.0eM' # or: ('1em', 'important')
sheet.encoding = 'ascii'
sheet.namespaces['xhtml'] = 'http://www.w3.org/1999/xhtml'
sheet.namespaces['atom'] = 'http://www.w3.org/2005/Atom'
sheet.add('atom|title {color: #000000 !important}')
sheet.add('@import "sheets/import.css";')
# cssutils.ser.prefs.resolveVariables == True since 0.9.7b2
print sheet.cssText
结果是
@charset "ascii";
@import "sheets/import.css";
/* a comment with umlaut \E4  */
@namespace xhtml "http://www.w3.org/1999/xhtml";
@namespace atom "http://www.w3.org/2005/Atom";
xhtml|a {
    color: green !important;
    background: #fff;
    margin: 1em
    }
atom|title {
    color: #000 !important
    }
善意请求
cssutils远非完美或完整。如果您发现任何错误(尤其是规范违规)或有问题或建议,请将它们放入问题跟踪器。
谢谢
特别感谢Christof Höke为该库的原始创建。
感谢Simon Sapin,Jason R. Coombs和Walter Doerwald提供的补丁,帮助和讨论。感谢Kevin D. Smith的价值验证模块。还感谢Cory Dodt,Tim Gerla,James Dobson和Amit Moscovich提供有用的建议和代码补丁。感谢Fredrik Hedman帮助将encutils移植到Python 3。
企业版
作为Tidelift订阅的一部分提供。
该项目和数千个其他包的维护者正在与Tidelift合作,提供一个企业订阅,涵盖您使用的所有开源软件。
了解更多.
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。