Last active
April 9, 2026 21:41
-
-
Save rndme/580d608530a0d4c87561396fd6c9523e to your computer and use it in GitHub Desktop.
turns json object/array data into literal css variables
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function json2css(o, selector, blnMinify) { | |
| if(!Array.isArray(o)) { | |
| let sepItems = blnMinify ? "" : "\n\t", | |
| sepLines = blnMinify ? "}\n" : ";\n}", | |
| sepProp = blnMinify ? "" : " "; | |
| return(`${selector||":root"}${sepProp}{${sepItems}` + Object.entries(o).map(([k, v], i) => { | |
| return `--${k.replace(/\s/g, "-")}:${sepProp}${JSON.stringify(v).replace(/\\n/g,"\\A")}`; | |
| }).join(`;${sepItems}`) + `${sepLines}`); | |
| } // end if !array | |
| return o.map(function(item, index) { | |
| var label = selector + "_" + index; | |
| if(selector.match(/\$1/)) label = selector.replace("$1", index); | |
| return json2css(item, label, blnMinify); | |
| }).join(""); | |
| } // end json2css() | |
| /* | |
| json2css({ | |
| "make": "Ford", | |
| "model": "F-Series", | |
| "category": "Truck", | |
| "country": "USA" | |
| }, ".cars"); | |
| returns: | |
| .cars { | |
| --make: "Ford"; | |
| --model: "F-Series"; | |
| --category: "Truck"; | |
| --country: "USA"; | |
| } | |
| json2css({ | |
| "make": "Ford", | |
| "model": "F-Series", | |
| "category": "Truck", | |
| "country": "USA" | |
| }, ".cars", true); | |
| returns: | |
| .cars{--make:"Ford";--model:"F-Series";--category:"Truck";--country:"USA"} | |
| json2css([{ | |
| "make": "Ford", | |
| "model": "F-Series", | |
| "category": "Truck", | |
| "country": "USA" | |
| }, | |
| { | |
| "make": "Chevrolet", | |
| "model": "Silverado", | |
| "category": "Truck", | |
| "country": "Mexico" | |
| }], ".cars"); | |
| returns: | |
| .cars_0 { | |
| --make: "Ford"; | |
| --model: "F-Series"; | |
| --category: "Truck"; | |
| --country: "USA"; | |
| }.cars_1 { | |
| --make: "Chevrolet"; | |
| --model: "Silverado"; | |
| --category: "Truck"; | |
| --country: "Mexico"; | |
| } | |
| json2css([{ | |
| "make": "Ford", | |
| "model": "F-Series", | |
| "category": "Truck", | |
| "country": "USA" | |
| }, | |
| { | |
| "make": "Chevrolet", | |
| "model": "Silverado", | |
| "category": "Truck", | |
| "country": "Mexico" | |
| }], "[data-car='$1']", true); | |
| returns: | |
| [data-car='0']{--make:"Ford";--model:"F-Series";--category:"Truck";--country:"USA"} | |
| [data-car='1']{--make:"Chevrolet";--model:"Silverado";--category:"Truck";--country:"Mexico"} | |
| json2css([{ | |
| "make": "Ford", | |
| "model": "F-Series", | |
| "category": "Truck", | |
| "country": "USA" | |
| }, | |
| { | |
| "make": "Chevrolet", | |
| "model": "Silverado", | |
| "category": "Truck", | |
| "country": "Mexico" | |
| }], "$1%", true); | |
| returns: (keyframes contents, see https://gist.github.com/rndme/f694feb576c2e79c1015ec77cc667d57 for usage) | |
| 0%{--make:"Ford";--model:"F-Series";--category:"Truck";--country:"USA"} | |
| 1%{--make:"Chevrolet";--model:"Silverado";--category:"Truck";--country:"Mexico"} | |
| */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment