JSFiddle - React, Tailwind, and code Playground
by NerfAnarchist
HTML
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="viewport" content="width=device-width, user-scalable=no" />
<div id="testing_container">
<div id="tree"></div>
</div>
CSS
#tree {
width: 100%;
height: 100%;
}
#tree {
position:relative;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
font-family: helvetica;
overflow: auto;
overflow-x: hidden;
line-height: 20px;
}
.tree_line_opener {
display: block;
position: absolute;
font-size: 9px;
width: 13px;
right: 5px;
height: 19px;
top: 7px;
}
.level_table {
width: 100%;
}
.level_table, .level_table tr, .level_table tr td {
border-collapse:collapse;
}
.level_table tr td {
border-bottom: 1px solid #DDD;
position: relative;
width: 100%;
padding: 6px;
}
.tree_toolbar {
background-color: #DDD;
border-bottom: 1px solid #AAA;
}
.tree_toolbar_title {
text-align: center;
}
.tree_parent {
position:relative;
overflow: auto;
}
JavaScript
// javascript/jquery slider tree view
// code purely for testing purposes
$('#testing_container').css({"position": "fixed",
"left": "0px",
"top": "0px",
"width": window.innerWidth + 'px',
"height": window.innerHeight + 'px'});
// end code purely for testing purposes
var root_title = 'Home';
var build_level = function (level, content) {
var html = '<div class="level_container"><table class="level_table">', i, len, history = $('#tree').data('history');
if (level === 0) {
$('#tree').find('.back').css('visibility', 'hidden');
} else {
$('#tree').find('.back').css('visibility', 'visible');
}
for (i = 0, len = content.length; i < len; i = i + 1) {
if (typeof content[i].sub_folders != 'undefined') {
html += '<tr class="tree_line" data-level="' + (level + 1) + '" data-tree_marker="' + i + '" data-open="false"><td class="tree_line_title">' + content[i].name + '<div class="tree_line_opener">►</div></td></tr>';
} else {
html += '<tr class="tree_line" data-level="' + (level + 1) + '" data-tree_marker="' + i + '" data-open="false"><td class="tree_line_title">' + content[i].name + '<div class="tree_line_opener"></div></td></tr>';
}
}
return html + '</table></div>';
};
var tree = [
{"name": "Music", "sub_folders": []},
{"name": "Documents", "sub_folders": []},
{"name": "Programs", "sub_folders": [
{"name": "Alert", "onclick": function () {alert('a'); }},
{"name": "Games", "sub_folders": [
{"name": "Minecraft"},
{"name": "Xonotic"},
{"name": "Nexius"},
{"name": "Urban Terror"}
]},
{"name": "Test"}
]},
{"name": "Photos", "sub_folders": [
...