JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4
  • Score
    100M100P100Q44881F
  • License apache

facilitates usage of the CSS Object Model

Package Exports

  • cjs3
  • cjs3/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (cjs3) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

CJS3 - Getting Started

Installation

npm init CJS3 --save-dev
import CJS3 from "CJS3"

Creating a new Stylesheet

  • Stylesheets can be created through the new instances of the CJS3.Stylesheet class
const myStyles = new CJS3.StyleSheet({
    'body' : {
        color : 'black',
        fontSize : '20px'
    }
    '.txt-green' : {
        color : 'green',
    }
});

Selector Syntax

  • The syntax for selectors borrows from SCSS, and uses nesting to indicate relationships.

Selecting Children

header : {
    h1: {
        textAlign:'center'
    }
}
/* CSS equivalent */
header > h1 {
    text-align : center;
}

Selecting Descendants

  • note the space!
header : {
    ' h1': {
        textAlign:'center'
    }
}
/* CSS eqiuvalent */
header h1 {
    text-align : center;
}

Selecting Element w/ class

  • '&' is used for denoting element.class
header : {
    '&.text-center': {
        textAlign:'center'
    }
}
/* CSS eqiuvalent */
header.text-center {
    text-align : center;
}

Pseudo Selectors

header : {
    color:'red'
    ':hover' : {
        color:'green'
    }
}
/* CSS eqiuvalent */
header {
    color : red;
}
header:hover{
    color:green;
}

@Rules

Keyframes

'@keyframes' : {
    fadeout : {
        0 : {
            opacity : 0
        }
        1 : {
            opacity : 1
        }
    },
    fadein : {
        0 : {
            opacity : 1
        },
        1 : {
            opacity : 0
        }
    }
}
/* CSS equivalent */
@keyframes fadein {
    0% {
        opacity : 0
    }
    100% {
        opacity : 1
    }
}
@keyframes fadeout {
    0% {
        opacity : 1
    }
    100% {
        opacity : 0
    }
}
}
  • Keyframe rules defined using CJS3 can be accessed via CJS3.keyframes, where they can be applied dynamically.
CJS3.keyframes.fadein.apply('#some-button',{
    duration : 1000,
    fill : 'forwards'
})

Import

{
    '@import' : [
        'url(...)',
        'stylesheet.css',
    ]
}
/* CSS equivalent */
@import url(...);
@import 'stylesheet.css'

Event Handlers

  • Event Handlers can be created as well.
  • Styles returned by an event will be applied to the object.
  • This bound to event target.
{
    button {
        color:'black',

        click(){
            if (!this.counter){
                this.counter = 0;
            }
            this.textContet = 
            `click # ${this.counter}`
            if (this.counter % 2 === 1){
                return {
                    color:'yellow'
                }
            }
            else {
                return {
                    color : 'green'
                }
            }
        }
    }
}