npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jsincss

v2.2.2

Published

A JS-in-CSS stylesheet loader

Downloads

581

Readme

jsincss

An event-driven virtual stylesheet manager

About

Jsincss is a plugin that allows you to use JavaScript to template the creation of CSS stylesheets at runtime based on events happening in the browser. This allows you to use JavaScript to easily extend CSS to include new features.

This plugin is a JavaScript module that loads JS-in-CSS stylesheets, manages the creation of <style> tags to output the processed stylesheets, and registers event listeners for reprocessing loaded stylesheets when changes occur in the browser.

Downloading

You can download jsincss and add it to your codebase manually, or download it with npm:

npm install jsincss

Another option is linking to the module directly from a CDN like unpkg:

<script type=module>
  import jsincss from 'https://unpkg.com/jsincss/index.vanilla.js'
</script>

Importing

You can import the plugin into your own JavaScript modules in a couple of ways.

The first way is using the native import statement in JavaScript. Here you can assign any name you want to the function you are importing, and you only need to provide a path to the plugin's index.vanilla.js file:

import jsincss from './index.vanilla.js'

You can also use require() to load this plugin instead with a bundler like Webpack or Parcel:

const jsincss = require('jsincss')

Once you have imported this plugin into your module, you can use the plugin as jsincss()

Using JS-in-CSS Stylesheets

The main goal of this plugin is to let people using a JS-in-CSS workflow load JIC stylesheets inside of a JavaScript module.

The plugin has the following format:

jsincss(stylesheet, selector, events)
  • stylesheet is a JavaScript function that returns a CSS stylesheet as a string
  • selector is string containing either 'window' or a CSS selector
  • events is an array of events to add event listeners for, quoted as strings: (eg. ['load', resize'])

The default selector is window, and the default list of events is ['load', 'resize', 'input', 'click', 'reprocess'].

You can also create and listen for custom events with JavaScript using new Event() and dispatchEvent() for total control over when jsincss reprocesses styles.

Example

This example uses the default selector and events list, and provides the stylesheet inline.

<script type=module>
  import jsincss from 'https://unpkg.com/jsincss/index.vanilla.js'

  jsincss(event => `

    body::before {
      content: '${innerWidth} x ${innerHeight} on ${event.type}';
    }

  `)
</script>

It's also possible to write your stylesheets as a separate JavaScript module like this:

export default event => `

  body::before {
    content: '${innerWidth} x ${innerHeight} on ${event.type}';
  }

`

And then import both the jsincss plugin and the stylesheet into your module and run them like this:

import jsincss from 'https://unpkg.com/jsincss/index.vanilla.js'
import stylesheet from './path/to/stylesheet.js'

jsincss(stylesheet)

Tools using jsincss

Compatible JS-in-CSS Plugins