Code Monkey home page Code Monkey logo

clevercss3's Introduction

CleverCSS

CleverCSS is a small markup language for CSS inspired by Python that can be used to build a style sheet in a clean and structured way. In many ways it's cleaner and more powerful than CSS2 is.

The most obvious difference to CSS is the syntax: it is indentation based and not flat. While this is obviously against the Python Zen, it's nonetheless a good idea for structural styles.

New Syntax Additions

Imports

(commit)

This works like normal css @imports, but expects a ccss file, which is then parsed, allowing cross-sheet variables

Backstrings (literal CSS)

(commit)

Sometimes CleverCSS is a bit too clever for its own good and you just want to pass something directly to CSS. For instance, functions that aren't rgb() or url() need to be escaped. Added is a simple new backtick-surrounded string format that will be passed verbatim without further processing. Example:

.gradient:
    background: `-moz-linear-gradient(...)`

Spritemaps

(commit)

Commonly in CSS, you'll have an image of all your UI elements, and then use background positioning to extract a part of that image. CleverCSS helps you with this, via the spritemap(fn) call. For example:

ui = spritemap('ui.sprites')
some_button = $ui.sprite('some_button.png')
other_button = $ui.sprite('other_button.png')

div.some_button:
    background: $some_button

div.other_button:
    background: $other_button
    width: $other_button.width()
    height: $other_button.height()

Mix-ins!!

There is currently only partial mixin support -- arguments are not yet implemented. But they will be...sometime soon. Anyway, the syntax for a macro is [currently] pretty pythonic:

def macro:
  color: red
  border-width: 5px - 1px

body:
  $macro

This syntax may change, though, b/c conceivably "def macro:blah" could refer to the CSS "def macro { blah }", so there is some inconsistent magic going in.

Nutshell

To get an idea of how CleverCSS works you can see a small example below. Note the indentation based syntax and how you can nest rules:

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

Of course you can do the very same in CSS, but because of its flat nature the code would look more verbose. The following piece of code is the CleverCSS output of the above file:

ul#comments,
ol#comments {
  margin: 0;
  padding: 0;
}

ul#comments li,
ol#comments li {
  padding: 0.4em;
  margin: 0.8em 0 0.8em;
}

ul#comments li h3,
ol#comments li h3 {
  font-size: 1.2em;
}

ul#comments li p,
ol#comments li p {
  padding: 0.3em;
}

ul#comments li p.meta,
ol#comments li p.meta {
  text-align: right;
  color: #dddddd;
}

But that's only a small example of what you can do with CleverCSS. Have a look at the following documentation of CleverCSS for more details.

clevercss3's People

Contributors

andreypopp avatar dbr avatar dziegler avatar guileen avatar isolationism avatar jaredly avatar jbergstroem avatar kroo avatar lericson avatar paluh avatar teepark avatar tymofij avatar worldmaker avatar yaanno avatar zakj avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.