kui-vue
Version:
A lightweight desktop UI component library suitable for Vue.js 2.
152 lines (139 loc) • 3.41 kB
Markdown
<cn>
### 固定侧边栏
当内容较长时,使用固定侧边栏可以提供更好的体验。
</cn>
```vue
<template>
<div class="k-demo-layout">
<Layout class="layout-back">
<Sider :class="['demo-sider', { 'demo-sider-collapsed': collapsed }]">
<a class="logo-box" href="">
<Icon :type="LogoKui" size="30" class="logo" />
<span class="logo-title">KUI运营后台</span>
</a>
<Menu
v-model:selectedKeys="selectedKeys"
:openKeys="openKeys"
class="demo-left-menu"
mode="inline"
:inline-collapsed="collapsed"
>
<MenuItem key="t1" :icon="Home">首页</MenuItem>
<SubMenu key="t2" :icon="StatsChart" title="数据统计">
<MenuItem key="t2-1">今日订单</MenuItem>
<MenuItem key="t2-2">今日销售额</MenuItem>
</SubMenu>
<SubMenu key="t3" :icon="StatsChart" title="数据统计">
<MenuItem key="t3-1">今日订单</MenuItem>
<MenuItem key="t3-2">今日销售额</MenuItem>
</SubMenu>
<MenuItem key="t4" :icon="Settings">能源管理</MenuItem>
</Menu>
<Button
type="text"
block
size="large"
:icon="collapsed ? ChevronForward : ChevronBack"
@click="collapsed = !collapsed"
class="btn-collapsed"
><i></i
></Button>
</Sider>
<Content class="k-demo-main">
<Breadcrumb class="nav">
<BreadcrumbItem>Home</BreadcrumbItem>
<BreadcrumbItem>List</BreadcrumbItem>
<BreadcrumbItem>App</BreadcrumbItem>
</Breadcrumb>
<div
style="padding:200px 0;text-align:center;color:#ddd;margin:20px;"
class="demo-back"
>
Content
</div>
<Footer>KUI ©2025 Created by chuchur</Footer>
</Content>
</Layout>
</div>
</template>
<script setup>
import {
LogoKui,
Home,
StatsChart,
Settings,
ChevronBack,
ChevronForward,
} from "kui-icons";
import { ref } from "vue";
const top = ref(["t1"]);
const collapsed = ref(false);
const selectedKeys = ref(["t1"]);
const openKeys = ref(["t2"]);
</script>
<style scoped lang="less">
.k-demo-layout {
overflow: hidden;
.demo-sider {
height: 360px;
/*这里是例子,实际中请适当修改*/
left: 0;
width: 200px;
background: var(--kui-color-back);
transition: width 0.3s;
}
.logo-title {
transition: opacity 0.3s;
opacity: 1;
}
.btn-collapsed {
position: absolute;
bottom: 0;
left: 0;
transition: all 0.3s;
}
.demo-sider-collapsed {
width: 60px;
overflow: hidden;
.logo-title {
opacity: 0;
}
.logo-box {
padding-left: 16px;
}
}
.demo-left-menu {
border: none;
height: calc(100% - 105px);
overflow: auto;
&::-webkit-scrollbar {
width: 1px;
}
}
.logo-box {
box-sizing: border-box;
display: flex;
align-items: center;
height: 60px;
padding-left: 25px;
white-space: nowrap;
transition: all 0.3s;
.logo {
margin-right: 8px;
}
}
.k-demo-main {
overflow: auto;
height: 360px;
background-color: #7f7f7f17;
.nav {
padding: 20px 0 0 20px;
}
}
.k-layout-footer {
text-align: center;
color: #999;
}
}
</style>
```