CARVIEW |
Select Language
HTTP/2 200
date: Sat, 19 Jul 2025 15:51:01 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-robots-tag: none
etag: W/"118a407b6932185b99e35f33a87e75b4"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=o%2BpZlAI2RoKgJ0reGR0sYZmaXI6h4pQ75LIem2fJLHO0uqep1%2FPM6NajxX%2FZQmA9j2kAcp49JxZtXWUdAEPPyJFz6Q8nFu4v9R%2FkN%2FOidir1z9bIZTjExW0ZYLvinKA82pRgWQOolGapx434d2YUCOayZKmTpRw6%2BiZBYiXPY21PcAAA71wRSaZWHqi34gPFKJiq8qP7HsORU335XLIzmmHW4CVQQGAF%2B%2BuMMXvqTXQCnhDtcA298L3OZKcBhO9ejVpGSIK0kJ2I%2B2%2B3NXK9YA%3D%3D--oA1dhInGTyvLBnX2--C2gvrZQNuOaRhzLUh0ZWmQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.1458079928.1752940261; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 15:51:01 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sun, 19 Jul 2026 15:51:01 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 9EC2:3DC509:63EDB4:7D2811:687BBEE5
Work with popular JS Lib · cssobj/cssobj Wiki · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 13
Work with popular JS Lib
James Yang edited this page Mar 19, 2018
·
19 revisions
cssobj is good for using with vanilla JS or any JS libs like MVC frameworks
Think below code at head of your page:
var obj = {
'.nav': {
'.item': {
color: 'blue',
'&.active': {
color: 'red'
}
}
}
}
Just like your normally use with plain css, just beware of local class names
You may want to use with:
You can use react-cssobj with React
// get result from cssobj
var result = cssobj(obj, {local: true})
// get local selector
$(result.mapSel('.nav .item')).append(...)
// get local class list
$('div').addClass(result.mapClass('!news item active'))
For mithril, please check out cssobj-mithril, for zero effect to mapClass
Without above repo, you can just use mithril natively as below:
fiddle demo Please open console and see local class names work!
var component = {
controller: function () {
var self = this
this.result = cssobj(obj, {local:true})
this.updateCSS = () => {
obj['.nav'].fontSize = '34px'
self.result.update()
}
},
view: function (ctrl) {
var result = ctrl.result
return m (
result.mapSel('ul.nav'),
m (
result.mapSel('li.item'),
{
class: result.mapClass('!news item active'),
onclick: ctrl.updateCSS
},
'cssobj is awesome!'
)
)
}
}
m.mount(document.getElementById('container'), component)
Notice, if you use Vue2.0, should check babel-plugin-transform-cssobj to simplify mapClass
cssobj can use in Vue component for better capsulation.
fiddle demo Please open console and see local class names work!
HTML
<template id="my-template">
<ul class="{{'nav' | mapClass}}" @click="updateCSS">
<li class="{{'!news item active' | mapClass}}">cssobj is awesome!</li>
</ul>
</template>
<div id="app">
<my-component></my-component>
</div>
JS
// register a custom filter
Vue.filter('mapClass', function (value) {
return this.result.mapClass(value)
})
// you component here
Vue.component('my-component', {
template: '#my-template',
data: function () {
return {
result: cssobj(obj, {local: true})
}
},
methods: {
updateCSS: function () {
obj['.nav'].fontSize = '34px'
this.result.update()
}
}
})
new Vue({
el: '#app'
})
Angular has more power to work with cssobj.
HTML
<div ng-app>
<div ng-controller="CssobjCtrl">
<ul ng-class="mapClass('nav')" ng-click="updateCSS()">
<li ng-class="mapClass('!news item active')">[+ click me +] cssobj is awesome!</li>
</ul>
</div>
</div>
JS
function CssobjCtrl($scope) {
var result = cssobj(obj, {
local: true
})
$scope.updateCSS = function() {
obj['.nav'].fontSize = '34px'
result.update()
}
$scope.mapClass = function(list) {
return result.mapClass(list)
}
}
Contribution welcome :)
Clone this wiki locally
You can’t perform that action at this time.