metro4
Version:
The front-end framework for Build responsive, mobile-first projects on the web with the first front-end component library in Metro Style
111 lines (94 loc) • 2.99 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link href="../metro/css/metro-all.css?ver=@@b-version" rel="stylesheet">
<title>Treeview Menu - Metro 4 :: Popular HTML, CSS and JS library</title>
<style>
#menu {
position: relative;
width: 90%;
max-width: 600px;
background: rgba(0,0,0,.8);
}
li {
font-size: 18px;
padding: 18px 0 ;
}
li ul {
margin-top: 18px ;
}
.tree-node.expanded {
padding-bottom: 0 ;
}
.caption, .icon, .current .caption {
color: #fff ;
}
.icon, .node-toggle {
top: 18px ;
}
.node-toggle::before {
border-color: #fff ;
}
li {
position: relative;
}
li::before {
content: "";
display: block;
position: absolute;
z-index: -1;
height: 56px;
top: 0;
right: 0;
bottom: 0;
box-shadow: inset 0 -1px #46484a;
}
.treeview > li > ul > li > ul > li::before {
left: -56px;
}
.treeview > li > ul > li::before {
left: -40px;
}
.treeview > li::before {
left: -24px;
}
</style>
</head>
<body class="h-vh-100 d-flex flex-align-center flex-justify-center"
data-role="gradient-box"
data-gradient-position="115deg"
data-gradient-colors="rgba(86, 216, 228, 1) 10%, rgba(159, 1, 234, 1) 90%">
<div id="menu">
<ul data-role="treeview" data-on-node-click="nodeClick">
<li data-caption="Item"></li>
<li data-caption="Group" class="expanded">
<ul>
<li data-caption="Sub Group">
<ul>
<li data-caption="Item"></li>
<li data-caption="Item"></li>
<li data-caption="Add New Item" data-icon="<span class='mif-plus'>"></li>
</ul>
</li>
</ul>
</li>
<li data-caption="Item"></li>
<li data-caption="Item"></li>
<li data-caption="Add New Item" data-icon="<span class='mif-plus'>"></li>
</ul>
</div>
<script src="../metro/js/metro.js?ver=@@b-version"></script>
<script>
function nodeClick(node){
var tv = Metro.getPlugin('.treeview', 'treeview');
if ($(node).attr('data-caption') === "Add New Item") {
tv.insertBefore(node, {
caption: "New Item"
});
}
}
</script>
</body>
</html>