You can use CSS in conjunction with Tree nodes to achieve the desired look-and-feel.
In this article, you will know how:
To apply some style to the whole tree, you can use the css parameter.
<style> .my_style {
font-style: italic;
color:blue;
}
</style>
<script> webix.ui({
view:"tree",
css:"my_style",
...
});
</script>
Generally, to style a specific item, you can add the $css attribute inside the data source.
<style> .my_style{
background-color:#FFAAAA;
}
</style>
<script>webix.ui({
view:"tree",
data: [
{id:"root", value:"Films data", open:true, data:[
{ id:"1", open:true, value:"The Shawshank Redemption", data:[
{ id:"1.1", value:"Part 1" },
{ id:"1.2", value:"Part 2", $css:"my_style" },
{ id:"1.3", value:"Part 3" }
]},
{ id:"2", value:"The Godfather", open:true, data:[
{ id:"2.1", value:"Part 1" },
{ id:"2.2", value:"Part 2", $css:"my_style" }
]}
]}
]
});
</script>
To add lines to tree nodes, set the type parameter to the 'lineTree' value.
Adding lines to tree nodes
webix.ui({
view:"tree",
type:"lineTree"
});
Note, you still have a possibility to define your custom style for lines and apply it through the css parameter (see details in the first part).
One of the ways to fine-tune the style of the tree is defining some template for it.
Using templates for styling
webix.ui({
view:"tree",
template:"{common.icon()}{common.folder()}<div style='color:blue;'>#value#</div>"
});
Read more about using templates in Node Templates.
The look-and-feel of tree icons is set via CSS classes applied to definite parts of it. You can:
Study the Tree CSS image map to learn which CSS classes there are in Tree. Folders and files have the following CSS:
The simplest way to change folder and file icons for all tree nodes is to redefine default ones:
/* customizing all folders and files in a tree */
.webix_tree_folder{
background-image: url("icons/folder.png");
background-position: 0px 4px;
}
.webix_tree_file{
background-image: url("icons/file.png");
background-position: 0px 4px;
}
Related sample: Custom Folders
To set icons to desired tree nodes, you should store their titles in the data source:
If icon titles are stored under an icon property in the dataset, they are applied as webix_icon_{icon_name} CSS class:
var data_with_icon = [
{ id:"root", value:"Films data", icon:"home", open:true, data:[
{ id:"1", icon:"puzzle", value:"Part 1" }]
}
];
webix.ui({
view:"tree",
data:data_with_icon
});
The root item gets webix_icon_home CSS class. All you have to do is to set the rule for this class:
.webix_tree_home{
background-image: url("icons/home.png")
}
If icon titles are stored under the image property in the dataset, they are applied within a node template:
var data_with_icon = [
{ id:"root", value:"Films data", image:"home", open:true, data:[
{ id:"1.1", image:"puzzle", value:"Part 1" }]
}
];
webix.ui({
view:"tree",
template:"<img src='icons/#image#.png' style='...'> #value#",
data:data_with_icon
});
You can study Webix tree node templates in detail separately.
Back to top