<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1">
<title>Layout</title>
<link rel="stylesheet" href="./plugins/font-awesome-4.7.0/css/font-awesome.min.css">
<script src="./plugins/jquery-3.6.0/jquery-3.6.0.js"></script>
<link rel="stylesheet" href="./a.css">
<script src="./a.js"></script>
<style>
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html,
body,
.layout {
height: 100%;
margin: 0;
padding: 0;
font-size: 14px;
font-family: Tahoma, Verdana, "Microsoft Yahei";
}
#layout-navbar {
top: 0;
left: 0;
width: 100%;
height: 50px;
z-index: 1000;
position: absolute;
background-color: aliceblue;
}
#layout-main {
position: absolute;
width: 100%;
height: 100%;
top: 0;
z-index: 0;
padding: 10px;
padding-top: 50px;
background-color: beige;
}
.layout-sidebar {
position: absolute;
display: inline-block;
top: 0;
height: 100%;
z-index: 500;
outline: none;
}
#layout-sidebar-left {
left: 0;
}
#layout-sidebar-right {
right: 0;
}
.layout-sidebar-panel {
position: absolute;
display: inline;
width: 260px;
height: 100%;
padding-top: 50px;
}
.float-sidebar>.layout-sidebar-panel {
box-shadow: 0px 0px 12px;
}
.fixed-sidebar>.layout-sidebar-panel {
box-shadow: 0px 0px 2px;
}
#layout-sidebar-left>.layout-sidebar-panel {
left: 0;
}
#layout-sidebar-right>.layout-sidebar-panel {
right: 0;
}
.layout-siderbar-body {
position: relative;
width: 100%;
height: 100%;
}
.layout-sidebar-view {
height: 100%;
overflow: hidden;
background-color: blanchedalmond;
}
.layout-sidebar-view>div {
height: 100%;
}
.opend>.layout-siderbar-body>.layout-sidebar-view>div {
overflow: auto;
}
.closed>.layout-siderbar-body>.layout-sidebar-view>div {
overflow: hidden;
}
.layout-sidebar-button {
position: absolute;
display: inline;
float: left;
height: 56px;
width: 12px;
top: 0;
border: 0;
background-color: #a5a5a5;
cursor: pointer;
padding-top: 19px;
padding-left: 3px;
opacity: 0.5;
}
.layout-sidebar-button:hover {
background-color: black;
color: white;
opacity: 1;
}
#layout-sidebar-left .layout-sidebar-button {
right: -12px;
border-radius: 0 5px 5px 0;
}
#layout-sidebar-right .layout-sidebar-button {
left: -12px;
border-radius: 5px 0 0 5px;
}
.layout-sidebar-button>i {
font-size: 18px;
}
#layout-sidebar-left>.opend .fa-angle-right {
display: none;
}
#layout-sidebar-left>.closed .fa-angle-left {
display: none;
}
#layout-sidebar-right>.opend .fa-angle-left {
display: none;
}
#layout-sidebar-right>.closed .fa-angle-right {
display: none;
}
#layout-main-tabcard {
position: relative;
top: 0px;
width: 100%;
height: 36px;
padding-left: 40px;
line-height: 36px;
border-bottom: 1px solid gray;
z-index: 100;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
}
#layout-main-tabcard>.scrollbar {
position: absolute;
left: 0px;
width: 40px;
height: 35px;
}
#layout-main-tabcard>.scrollbar>.scroll-button {
display: inline;
width: 20px;
float: left;
cursor: pointer;
line-height: 35px;
}
#layout-main-tabcard>.scrollbar>.scroll-button>i {
margin-left: 4px;
}
#layout-main-tabcard>.scrollbar>.scroll-button:hover {
background-color: brown;
}
#layout-main-tabcard-tablist {
position: relative;
width: 100%;
overflow: hidden;
}
#layout-main-tabcard-tablist div {
position: relative;
line-height: 35px;
height: 35px;
max-width: 260px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: table-cell;
white-space: nowrap;
padding-left: 20px;
padding-right: 20px;
border-right: 1px solid #505050;
}
#layout-main-tabcard-tablist div:hover {
background-color: #909090;
}
#layout-main-tabcard-tablist div:hover>i {
display: inherit;
}
#layout-main-tabcard-tablist div[class="active"] {
background-color: #505050;
color: white;
}
#layout-main-tabcard-tablist div[class="normal"] {
background-color: #a5a5a5;
cursor: pointer;
}
#layout-main-tabcard-tablist i {
position: absolute;
top: 2px;
right: 3px;
margin-left: 5px;
white-space: nowrap;
cursor: pointer;
display: none;
}
#layout-main-tabcard-tablist i:hover {
color: red;
display: block;
}
.layout-main-view {
position: relative;
top: -36px;
width: 100%;
height: 100%;
padding-top: 36px;
}
#layout-main-view {
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div class="layout">
<div id="layout-navbar"></div>
<div id="layout-main" style="padding-top: 50px;">
<div id="layout-main-tabcard">
<div class="scrollbar">
<div id="layout-main-tabcard-scroll-left" class="scroll-button"><i class="fa fa-chevron-left" aria-hidden="true"></i>
</div>
<div id="layout-main-tabcard-scroll-right" class="scroll-button"><i class="fa fa-chevron-right" aria-hidden="true"></i>
</div>
</div>
<div id="layout-main-tabcard-tablist">
<div class="active">index1.html<i class="fa fa-times"></i></div>
<div class="normal">index2.html<i class="fa fa-times"></i></div>
<div class="normal">index3.html<i class="fa fa-times"></i></div>
<div class="normal">index12313.html<i class="fa fa-times"></i></div>
<div class="normal">layout-tabcard.html<i class="fa fa-times"></i></div>
<div class="normal">中华人民共和国浙江省杭州市滨江区滨安路1199号浙江大华技术股份有限公司.html<i class="fa fa-times"></i></div>
<div class="normal">index.html<i class="fa fa-times"></i></div>
<div class="normal">index.html<i class="fa fa-times"></i></div>
<div class="normal">index.html<i class="fa fa-times"></i></div>
<div class="normal">index.html<i class="fa fa-times"></i></div>
<div class="normal">index.html<i class="fa fa-times"></i></div>
</div>
</div>
<div class="layout-main-view">
<div id="layout-main-view">0000</div>
</div>
</div>
<div id="layout-sidebar-left" class="layout-sidebar fixed-sidebar" tabindex="-1">
<div class="layout-sidebar-panel opend">
<div class="layout-siderbar-body">
<div id="layout-sidebar-left-view" class="layout-sidebar-view">
<div>
<!-- 这里就是按需进行填充,作为左侧边栏的内容 begin -->
<div class="title">我的</div>
<ul class="group">
<li>设备#1
<ul>
<li>视频预览</li>
<li>应用中心</li>
<li>系统设置</li>
<li>实施日志</li>
</ul>
</li>
<li class="active">设备#2
<ul>
<li>视频预览</li>
<li>应用中心</li>
<li>系统设置</li>
<li>实施日志</li>
</ul>
</li>
<li class="normal">设备#3
<ul>
<li>视频预览</li>
<li>应用中心</li>
<li>系统设置</li>
<li>实施日志</li>
</ul>
</li>
<li class="normal">设备#4
<ul>
<li>视频预览</li>
<li>应用中心</li>
<li>系统设置</li>
<li>实施日志</li>
</ul>
</li>
</ul>
<!-- 这里就是按需进行填充,作为左侧边栏的内容 end -->
</div>
</div>
<div id="layout-sidebar-left-button" class="layout-sidebar-button">
<i class="fa fa-angle-left" aria-hidden="true"></i>
<i class="fa fa-angle-right" aria-hidden="true"></i>
</div>
</div>
</div>
</div>
<div id="layout-sidebar-right" class="layout-sidebar float-sidebar" tabindex="-1">
<div class="layout-sidebar-panel opend">
<div class="layout-siderbar-body">
<div id="layout-sidebar-right-view" class="layout-sidebar-view">
<div>
<!-- 这里就是按需进行填充,作为右侧边栏的内容 begin -->
<div>
<p>阿达地方阿达地方阿达地方阿达地方阿达地方阿达地</p>
<p>阿达地方阿达地方阿达地方阿达地方阿达地方阿达地</p>
</div>
<!-- 这里就是按需进行填充,作为右侧边栏的内容 end -->
</div>
</div>
<div id="layout-sidebar-right-button" class="layout-sidebar-button">
<i class="fa fa-angle-left" aria-hidden="true"></i>
<i class="fa fa-angle-right" aria-hidden="true"></i>
</div>
</div>
</div>
</div>
</div>
</body>
<script>
function layout_replaceClass(e, oldClass, newClass) {
if (e != null) {
var i = 0;
var className = e.className.split(" ");
var strClass = "";
for (i = 0; i < className.length; i++) {
if (className[i] != oldClass && className[i] != newClass) {
strClass += (className[i] + " ");
}
}
e.className = strClass += newClass;
}
}
function layout_all() {
var items = {
navbar: null,
main: null,
left: {
bar: null,
view: null,
panel: null,
button: null,
status: null,
style: null,
},
right: {
bar: null,
view: null,
panel: null,
button: null,
status: null,
style: null,
},
};
items.navbar = document.getElementById("layout-navbar");
items.main = document.getElementById("layout-main");
items.left.bar = document.getElementById("layout-sidebar-left");
items.left.view = document.getElementById("layout-sidebar-left-view");
items.left.panel = items.left.bar.children[0];
items.left.button = document.getElementById("layout-sidebar-left-button");
if (items.left.panel.className.search("opend") >= 0) {
items.left.status = "opend";
}
if (items.left.panel.className.search("closed") >= 0) {
items.left.status = "closed";
}
if (items.left.bar.className.search("fixed-sidebar") >= 0) {
items.left.style = "fixed";
}
if (items.left.bar.className.search("float-sidebar") >= 0) {
items.left.style = "float";
}
items.right.bar = document.getElementById("layout-sidebar-right");
items.right.view = document.getElementById("layout-sidebar-right-view");
items.right.panel = items.right.bar.children[0];
items.right.button = document.getElementById("layout-sidebar-right-button");
if (items.right.panel.className.search("opend") >= 0) {
items.right.status = "opend";
}
if (items.right.panel.className.search("closed") >= 0) {
items.right.status = "closed";
}
if (items.right.bar.className.search("fixed-sidebar") >= 0) {
items.right.style = "fixed";
}
if (items.right.bar.className.search("float-sidebar") >= 0) {
items.right.style = "float";
}
return items;
}
function layout_sidebar_collpase(bar) {
var style = bar.style;
if (bar.status == "closed") {
return false;
}
layout_replaceClass(bar.panel, "opend", "closed");
$(bar.panel).animate({
width: '0px'
});
if (style == "fixed") {
$("#layout-main").animate({
paddingLeft: '10px'
});
}
}
function layout_sidebar_expand(bar) {
var style = bar.style;
if (bar.status == "opend") {
return false;
}
$(bar.panel).animate({
width: '260px'
}, function() {
layout_replaceClass(bar.panel, "closed", "opend");
});
if (style == "fixed") {
$("#layout-main").animate({
paddingLeft: '270px'
});
}
}
function layout_sidebar_toggle(which) {
var layout = layout_all();
if (which == "left") {
if (layout.left.status == "closed") {
layout_sidebar_expand(layout.left);
} else {
layout_sidebar_collpase(layout.left);
}
}
if (which == "right") {
if (layout.right.status == "closed") {
layout_sidebar_expand(layout.right);
} else {
layout_sidebar_collpase(layout.right);
}
}
}
document.body.onload = function() {
var i = 0;
var layout = layout_all();
// 左侧边栏展开按钮点击
layout.left.button.onclick = function() {
layout_sidebar_toggle("left");
};
// 右侧边栏展开按钮点击
layout.right.button.onclick = function() {
layout_sidebar_toggle("right");
};
// 左侧边栏,如果是float模式,这会在失焦时自动折叠起来
layout.left.bar.onblur = function() {
var e = layout_all();
if (e.left.style == "float") {
layout_sidebar_collpase(layout.left);
}
};
// 右侧边栏,如果是float模式,这会在失焦时自动折叠起来
layout.right.bar.onblur = function() {
var e = layout_all();
if (e.right.style == "float") {
layout_sidebar_collpase(layout.right);
}
};
// 鼠标点击左右调整按钮,实现选项卡左右移动
tablist = document.getElementById("layout-main-tabcard-tablist");
document.getElementById("layout-main-tabcard-scroll-left").onclick = function() {
tablist.scrollLeft -= 30;
console.log(tablist.scrollLeft);
};
document.getElementById("layout-main-tabcard-scroll-right").onclick = function() {
tablist.scrollLeft += 30;
console.log(tablist.scrollLeft);
};
// 支持鼠标滚轮事件,实现选项卡左右移动
$("#layout-main-tabcard").bind("mousewheel", function(event) {
console.log(event.originalEvent.wheelDelta);
if (event.originalEvent.wheelDelta < 0) {
tablist.scrollLeft += 30;
}
if (event.originalEvent.wheelDelta > 0) {
tablist.scrollLeft -= 30;
}
if (event.originalEvent.detail < 0) {
tablist.scrollLeft += 30;
}
if (event.originalEvent.detail > 0) {
tablist.scrollLeft -= 30;
}
});
// 支持鼠标点击每个选项卡,用于切换选中
for (i = 0; i < tablist.children.length; i++) {
tablist.children[i].onclick = function() {
if (this.className != "active") {
var j = 0;
for (j = 0; j < this.parentElement.children.length; j++) {
this.parentElement.children[j].className = "normal";
}
this.className = "active";
}
}
}
// 初始状态设置
if (layout.left.style == "fixed") {
layout.main.style.paddingLeft = ($(layout.left.panel).width() + 10) + 'px';
} else {
layout_sidebar_collpase(layout.left);
}
if (layout.right.style == "fixed") {
layout.main.style.paddingRight = ($(layout.right.panel).width() + 10) + 'px';
} else {
layout_sidebar_collpase(layout.right);
}
rightbar_init();
}
</script>
</html>
function rightbar_init() {
var bar = document.getElementById("layout-sidebar-left-view");
var li = bar.children[0].children[1].children;
var i = 0;
for (i = 0; i < li.length; i++) {
li[i].onclick = function() {
rightbar_expand(this);
}
}
}
function rightbar_expand(e) {
var li = e.parentElement.children;
var i = 0;
if (e.className == 'active') {
return;
}
for (i = 0; i < li.length; i++) {
if (li[i].className == 'active') {
li[i].className = "";
li[i].children[0].className = "";
$(li[i].children[0]).slideUp(500);
break;
}
}
e.className = "active";
$(e.children[0]).slideDown(500, function() {
this.className = "active";
});
}
.title {
font-weight: bold;
font-size: 16px;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
}
.group {
list-style: none;
margin: 0;
padding-inline-start: 0px;
line-height: 42px;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
}
.group li {
background-color: cornflowerblue;
text-indent: 10px;
cursor: pointer;
}
.group>li:hover {
background-color: rgb(74, 131, 236);
}
ul[class="active"]>li:hover {
background-color: rgb(74, 131, 236);
}
.group li[class="active"] {
background-color: rgb(74, 131, 236);
}
.group li>ul {
list-style: none;
padding-left: 10px;
display: none;
}
最后编辑于 :2022.03.13 21:52:01
©著作权归作者所有,转载或内容合作请联系作者 【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。