I saw some existing CSS that can rainbow color folders, but I want to keep folders at the same level the same color to easily identify levels.
I didn’t find a script that could do what I wanted, so I wrote one myself. Here is how it looks:
I’m new to Obsidian and also new to CSS. It took me a whole day, and it looks pretty long-winded, but I’m happy it works. There is still one tiny issue: when the indentation is too large, the colored box of the folder slightly overlaps the sidebar window box.
It would be better if this could be resolved, but I’ll leave it at that for now.
CSS snippet:
:root{
/* Folder colors */
--Fold1: 243, 155, 155;
--Fold2: 240, 174, 89;
--Fold3: 219, 206, 89;
--Fold4: 157, 205, 120;
--Fold5: 138, 182, 226;
--Fold6: 170, 165, 219;
/* Opacity setting */
--bgFoldOpacity: 0.25;
/* Margins and padding */
--foldBgPad: 3px;
--foldBgMar: 5px;
}
.mod-root > .nav-folder-children {
padding-left: 0;
margin-left: 0;
}
.nav-files-container > div > .nav-folder > div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold1), var(--bgFoldOpacity));
border-radius: 5px;
padding-inline-start: 30px !important;
}
.nav-files-container > div > .nav-file > div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold1), var(--bgFoldOpacity));
border-radius: 5px;
padding-inline-start: 10px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 15px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 15px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold2), var(--bgFoldOpacity));
border-radius: 5px;
padding-inline-start: 30px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-file > div.tree-item-self.nav-file-title{
background-color: rgba(var(--Fold2), var(--bgFoldOpacity));
border-radius: 5px;
padding-inline-start: 10px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 30px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 30px !important;
margin-inline-start: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold3), var(--bgFoldOpacity));
border-radius: 5px;
padding-inline-start: 15px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file > div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold3), var(--bgFoldOpacity));
border-radius: 5px;
padding-left: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-file > div.tree-item-self.nav-file-title > div {
margin-left: -10px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 45px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 45px !important;
margin-inline-start: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold4), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-inner {
margin-left: -40px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-icon {
margin-left: -60px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file >
div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold4), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-file > div.tree-item-self.nav-file-title > div {
margin-left: -60px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 60px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 60px !important;
margin-inline-start: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold5), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-inner {
margin-left: -85px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-icon {
margin-left: -105px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file >
div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold5), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-file > div.tree-item-self.nav-file-title > div {
margin-left: -105px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 75px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 75px !important;
margin-inline-start: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold6), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-inner {
margin-left: -145px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-icon {
margin-left: -165px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file >
div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold6), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-file > div.tree-item-self.nav-file-title > div.nav-file-title-content {
margin-left: -165px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder >
.nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 90px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder >
.nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 90px !important;
margin-inline-start: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold1), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-inner {
margin-left: -220px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-icon {
margin-left: -240px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file >
div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold1), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-file > div.tree-item-self.nav-file-title > div.nav-file-title-content {
margin-left: -240px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children {
padding-inline-start: 0px !important;
margin-inline-start: 0px !important;
padding-left: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder {
padding-inline-start: 105px !important;
margin-inline-start: 0px !important;
margin-left: 0 !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file {
padding-inline-start: 105px !important;
margin-inline-start: 0px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title {
background-color: rgba(var(--Fold2), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-inner {
margin-left: -310px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
div.tree-item-self.nav-folder-title > div.tree-item-icon {
margin-left: -330px !important;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-file >
div.tree-item-self.nav-file-title {
background-color: rgba(var(--Fold2), var(--bgFoldOpacity));
border-radius: 5px;
}
.nav-files-container > div > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children >
.nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder > .nav-folder-children > .nav-folder >
.nav-folder-children > .nav-file > div.tree-item-self.nav-file-title > div.nav-file-title-content {
margin-left: -330px !important;
}