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 🙏

© 2026 – Pkg Stats / Ryan Hefner

css-proxy

v1.0.1

Published

Easily set, and get css properties

Readme

css-proxy

Install

npm install --save css-proxy

Usage

//script.js
import cssProxy from 'css-proxy';
//Calling cssProxy without an element uses document.documentElement
let css = cssProxy();

//The body background-color will change to green
//cssProxy decamelizes bgColor to bg-color
css.bgColor = 'green';
/*styles.css*/
:root {
    --bg-color: red;
}

body {
    transition: color 1s, background-color 1s;
    background-color: var(--bg-color);
}

The HTML file:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Hello World!</title>
    <link rel="stylesheet" type="text/css" href="styles.css" />
  </head>
  <body>
    <h1>Hello World!</h1>
    <p>Hello universe too!</p>
    <script src="script.js"></script>
  </body>
</html>

The API

cssProxy(element, props, pseudo) -> css

The default for element is document.documentElement. element can be passed a DOM element of your choosing.

Pass a POJO to props to set them on element.style.

Pass a pseudo-element to pseudo for getComputedStyle(element, pseudo).

cssProxy() with all it's parameters:

let css = cssProxy(
    document.querySelector('.my-element'),
    {
        backgroundColor: '#000',
        color: 'white',
        customProperty: 'red'
    },
    ':hover'
);

Setting properties

Set, and get what ever properties you like on the object returned by cssProxy(). This includes properties that correspond to element.style.color, or element.style['any css property'].

You can set CSS custom properties too.

Like:

let css = cssProxy(document.querySelector('.my-element'));
//A normal css property
css.backgroundColor = 'blue';
//A css custom property
css.bgColor = 'green';

Methods

css.setProperty(name, value, priority)

This equivalent to CSSStyleDeclaration.setProperty().

css.getProperty(name)

This is equivalent to CSSStyleDeclaration.getPropertyValue().

css.cssGet(name)

css.cssGet() works like css.getProperty(), but css.cssGet() also decamelizes the name parameter.

css.cssSet(name, value, priority)

css.cssSet() works like css.setProperty(), but css.cssSet() decamelizes the name parameter, and changes a value of --custom-property, or --customProperty to var(--custom-property). You also pass var(--custom-property), or any other valid CSS property value to the value argument.

css.remove(prop)

Remove the style property from the element.

css.setAll(object)

From object add it's properties, and values to element.style.

Notes

getComputedStyle is used by css-proxy. getComputedStyle is not supported by IE, but we don't care about that because we're using Proxy. Also new Proxy(object, handler) is not supported by all browsers either.