-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcssToJs.js
129 lines (108 loc) · 4.55 KB
/
cssToJs.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*
=====================================================
| CSSTOJS |
=====================================================
(c) Ellieeet123 2022
Small (321 characters when minified) Javascript
library that allows you to easily change an
element's style.
=====================================================
| HOW TO USE |
=====================================================
Start by including the cssToJs function somewhere
in your website's files.
Then you can call it like this:
-----------------------------------------------------
cssToJs(`
color: #f00;
background: #333
font-family: monospace;
border-style: solid;
border-radius: 5px;
`, document.getElementById('randomElement'));
-----------------------------------------------------
This will take an element with id `randomElement`,
and apply all of the properties that you specified
in the first argument.
Currently I haven't added any sort of css
validating, so if your css isn't correct then it will
probably malfunction in some way. I might add
validation in the future, I'm not too sure yet.
=====================================================
| OTHER STUFF: |
=====================================================
Yes, this has probably been done before.
But I mostly just made this for practice,
and made it public just incase it would
help anyone :)
If you are looking for the minified version, visit
https://github.com/ellieeet123/cssToJs/blob/main/
cssToJs.min.js
=====================================================
| LICENCE |
=====================================================
MIT License
Copyright (c) 2022 Ellieeet123
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and
associated documentation files (the "Software"),
to deal in the Software without restriction,
including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit
persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission
notice shall be included in all copies or substantial
portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY
OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
function cssToJs(input, element) {
// parse the input into individual css rules.
let statements = input.split(';');
for (let i = 0; i < statements.length; i++) {
// remove whitespaces
statements[i] = statements[i].replace(/\s/g, '');
// remove any blank things in the list
// usually a blank item will appear when
// the input ends with a ;
if (statements[i] === '') {
statements.splice(i, 1);
}
}
for (let i = 0; i < statements.length; i++) {
let statement = statements[i].split(':');
// convert the rule to camel case.
// example:
// background-image gets converted into backgroundImage
let words = statement[0].split('-');
// if the rule has only one word, it can't
// be converted into camelCase so this whole thing is skipped
if (words.length > 1) {
for (let i = 1; i < words.length; i++) {
words[i] = (
// take the first letter, and convert to uppercase
words[i].charAt(0).toUpperCase()
// add the rest of the word to it
+ words[i].slice(1)
);
}
var rule = words.join('');
}
else {
var rule = statement[0];
}
// set the element's style!
// statement[1] is the style value.
element.style[rule] = statement[1];
}
}