一种pythonic css前置处理器,设计用于clevercss的替换/升级。

pythoniccss的Python项目详细描述


pythoniccss

Version: 0.0.1
Updated: 2014-12-08
URL:     http://github.com/sebastien/pythoniccss

pythoniccss是一个输出css的预编译器。原来是 本打算是Clevercss2.0,但由于它没有完全兼容 语法保持相同的名字是没有意义的。

pythoniccss具有以下功能:

  • 基于缩进的结构
  • 自动前缀
  • 完全支持CSS3(动画、媒体查询、计算等)
  • 模块性(包括)和MIXIN < /LI>

语法概述

pythoniccss的语法基于缩进,就像在python中一样。这个 主要的区别是pythoniccss更严格,总是期望 适当的缩进量和制表符(不是空格)的使用。

下面是pythoniccss的一个例子(这个例子是 实际上与克利夫茨的文档相同)。

ul#comments, ol#comments:
    margin: 0
    padding: 0
    li:
        padding: 0.4em
        margin: 0.8em 0 0.8em
    h3:
      font-size: 1.2em
    p:
      padding: 0.3em
    p.meta:
      text-align: right
      color: #ddd

选择器和规则

您可以在规则中使用任何类似css的选择器。您可以使用,来 将一行上的选择器与&分开以引用父级 嵌套规则中的选择器。

A = 10
div:
    color:      #FF00FF
    content:    "asdasdd"
    background: #FFAAAAAA.brighten()
    width:      10em * 1.0 + ($A * 10 / 2)
    animation:  name 5s
div, span:
    font-size: 100%
div:
    &:first-child:
        color: red
    &:last-child:
        color: green
    &:nth-child(2):
        color: yellow
.Application:
    &.with-base:
        background: 200%
#Application:
    font-size: 100%
div[data-type=1.0]:
    font-size: 100%
*[data-type=1.0]:hover:
    font-size: 100%
div#Application.widget.application[data-type=Application]:hover:
    font-size: 100%

一些规则也会自动加上前缀,例如:

-placeholder:

将生成:

-moz-placeholder,-webkit-placeholder

属性和表达式

pcss允许在编译时计算表达式,然后再生成 生成的css代码。例如

width: 10em * 3.5

将导致

width: 35em;

属性值可以相对于定义的变量和 也使用计算。可以在css之前预先计算表达式 使用PCSS表达式进行渲染,或使用 css3的calc函数。

而下面将输出calc(10em * 3.5)。注意我们需要 将表达式作为字符串参数传递,否则 表达将由pcss评估。

width: calc("10em * 3.5")

或者,您也可以引用整个值,它只是传递 一成不变的弦。

width: "calc(10em * 3.5)"

pcss允许隐式连接,如下例所示

label1:
    padding: $foo + 2 + 3 $foo - 2
label2:
    padding: ($foo + 2 + 3) ($foo - 2)
< H2>自动前缀< /H2>

pcs知道要加前缀的属性和litteral属性值。 例如,在下面的示例transition-property中, transformfilter将用它们对应的 供应商前缀。

transition-property: color transform filter

一些属性,比如渐变可以有不同的语法, 取决于浏览器。如果CSS3还没有 推荐,将选择WebKit的格式。

background: linear-gradient(to bottom, #1e5799 0%, #2989d8 50%, #207cca 51%, #7db9e8 100%)

将生成以下css代码(谢谢 http://www.colorzilla.com/gradient-editor/

background:#1e5799;background:-moz-linear-gradient(top,#1e57990%,#2989d850%,#207cca51%,#7db9e8100%);background:-webkit-linear-gradient(top,#1e57990%,#2989d850%,#207cca51%,#7db9e8100%);background:-o-linear-gradient(top,#1e57990%,#2989d850%,#207cca51%,#7db9e8100%);background:-ms-linear-gradient(top,#1e57990%,#2989d850%,#207cca51%,#7db9e8100%);background:linear-gradient(tobottom,#1e57990%,#2989d850%,#207cca51%,#7db9e8100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#1e5799',endColorstr='#7db9e8',GradientType=0);

包括

PATH将相对于当前文件进行解析,如果不是的话 找到的将相对于当前工作目录进行解析。

%include test-include.pcss

变量

变量在文件开头声明,可以有 表达式的类型。注意,变量在 参考。

变量应为UPPER_CASE

FONT_SIZE            = 14
PX                   = 1em / $FONT_SIZE
PAD                  = 20 * $PX
BACKGROUND_COLOR     = white
BACKGROUND_COLOR_ALT = #F0F0F0

特殊功能/方法

嵌入URL

如果要将图像作为数据url嵌入,可以通过 在url()属性之后使用.embed()方法调用。

background-image: url(http://ffctn.com/lib/images/nothing.png).embed()

它将下载/检索文件并生成base-64编码的数据 它的url版本。宏===

宏允许定义可同时应用的公共属性 使用<NAME>()

调用宏
@macro cleared:
    clear:   bothAA
    content: ""
    display: block
    height:  0em
div.cleared:
    cleared()

CSS3支持

动画

css动画可以像css3一样使用from/to或 定义框架的百分比。可以使用属性组和宏 就像其他的pcss块一样。具有“从/到”的关键帧

@keyframes animation1:
    from:
        background: red
    to:
        background: yellow

具有%

的关键帧
@keyframes animation2:
    0%:
        background: red
    100%:
        background: yellow

字体字体

@font-face:
    font-family: asdas

媒体查询

@media[screen and (max-width: 300px)]:
    body:
        background-color: lightblue
<分区 id="import">

导入

pcss不支持@importcss指令。

@import url("import4.css") tv, print;

与Clevercss的显著差异

变量必须用有效表达式定义:

``FONT_FAMILY = Helvetica, Arial, sans-serif``

不起作用,相反,您必须引用整个文本

` Font_Family=“Helvetica,宋体,无衬线”

规则尾随冒号是可选的:

::
div color: black

是否为有效的PCSS代码

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java窗口。位置和窗口。公开问题   java如何从存储在ArrayList<Node>中的动态生成的文本字段中获取文本?   java如何立即关闭InputStream?   如何重新启动Java程序以激活环境变量   java搜索字符串是否相差一个字符   java CFB模式输出与CTR输出相同;我做错什么了吗?   java如何在javaFX中将实例化对象添加到Stage   java如何在jtextarea上打印来自不同类的文本消息   java以编程方式确定IOException的原因?   限制Java NIO通道(文件或socket)中的可用内容   javajaxb与JDOM:是否可以使用JAXB更新xml文件   批处理文件到java测试   JavaFX:stage的作用是什么。可设置大小(false)是否会导致额外的页边距?   java有没有办法告诉IntelliJ按需堆叠参数?   java Seam会话范围的组件在下一个请求中消失   java Google Web Toolkit对开发复杂的java脚本有用吗?   安卓 studio java ArrayList正在检索最高值   java为什么递归地用随机数填充LinkedList时会出现StackOverflowException?