1 布局基于angular ng-zorro组件库实现
由于项目中使用了组件库并且要求响应式布局,卡在这个坑上两天,多次调试后终于解决
代码仅供参考,由于没有上传依赖的库和组件包无法直接运行,提供代码参考
示例样式
html代码
< nz-layout class ="container" >
< nz-sider nzCollapsible [nzTrigger] ="null" [(nzCollapsed)] ="isCollapsed" >
<!-- <layout-sidebar ></layout-sidebar> -->
< div >
< ul nz-menu nzMode ="vertical" nzTheme ="dark" [nzInlineCollapsed] ="isCollapsed" >
< li nz-submenu >
< span title class ="mainnav" >< i [ngClass] ="isCollapsed?'icon-daohangzhankai-':'icon-daohangshouqi-'" class ="trigger iconfont " (click) ="toggleCollapsed()" ></ i > < span > CRM </ span ></ span >
< ul >
< li nz-menu-item > Option 1 </ li >
< li nz-menu-item > Option 2 </ li >
</ ul >
</ li >
</ ul >
< ul nz-menu [nzMode] ="'inline'" nzTheme ='dark' [nzInlineCollapsed] ="isCollapsed" >
<!-- <li nz-menu-item >客户管理</li> -->
< li class ="menulist" *ngIf ="leveldisplay" > 客户管理 </ li >
< li nz-submenu >
< span title class ="icont" >
< i class ="iconfont icon-kehuliebiao" ></ i >
< span > 用户列表 </ span >
</ span >
< ul >
< li nz-menu-item routerLink ="/customer/detail" routerLinkActive ="active" > 用户详情 </ li >
< li nz-menu-item routerLink ="/customer/OrderHistoryComponent" routerLinkActive ="active" > 订单历史记录 </ li >
< li nz-menu-item routerLink ="/customer/test" routerLinkActive ="active" > 测试 </ li >
< li nz-menu-item routerLink ="/customer/billSummary" routerLinkActive ="active" > 账单汇总 </ li >
< li nz-menu-item routerLink ="/customer/billingDetails" routerLinkActive ="active" > 账单明细 </ li >
< li nz-menu-item routerLink ="/example/ui" routerLinkActive ="active" > 组件样式 </ li >
</ ul >
</ li >
< li nz-menu-item routerLink ="/customer/verified" routerLinkActive ="active" >
< span title class ="icont" >
< i class ="iconfont icon-chengshijinglitianchong" ></ i >
< span > 实名认证 </ span >
</ span >
</ li >
< li nz-menu-item routerLink ="/customer/blacklistHistory" routerLinkActive ="active" >
< span title class ="icont" >
< i class ="iconfont icon-heimingdan" ></ i >
< span > 黑名单 </ span >
</ span >
</ li >
< li class ="menulist" *ngIf ="leveldisplay" > 管理维护 </ li >
< li nz-menu-item routerLink ="/managementMaintenance/workList" routerLinkActive ="active" >
< span title class ="icont" >
< i class ="iconfont icon-gongdanliebiao" ></ i >
< span > 工单列表 </ span >
</ span >
</ li >
< li nz-submenu >
< span title class ="icont" >
< i class ="iconfont icon-xiaoxi" ></ i >
< span > 消息管理 </ span >
</ span >
< ul >
< li nz-menu-item routerLink ="/managementMaintenance/messageManage/messageType" routerLinkActive ="active" > 消息类型 </ li >
< li nz-menu-item routerLink ="/managementMaintenance/messageManage/messageRecord" routerLinkActive ="active" > 发送记录 </ li >
< li nz-menu-item routerLink ="/managementMaintenance/messageManage/noticeManage" routerLinkActive ="active" > 公告管理 </ li >
</ ul >
</ li >
< li nz-menu-item routerLink ="/managementMaintenance/quotaManagement" routerLinkActive ="active" >
< span title class ="icont" >
< i class ="iconfont icon-yonghupeizhi" ></ i >
< span > 配额管理 </ span >
</ span >
</ li >
</ ul >
</ div >
</ nz-sider >
< nz-layout class ="main" >
< layout-header class ="alain-default__header" ></ layout-header >
< nz-content class ="alain-default__content" >< router-outlet ></ router-outlet ></ nz-content >
</ nz-layout >
</ nz-layout >
css 文件
/* 最外头包裹层 */
.container {
height : 100% ;
display : -webkit-box ;
display : -moz-box ;
display : -webkit-flex ;
display : -ms-flexbox ;
display : flex ;
}
/* 左侧边样式 */
:host ::ng-deep .ant-layout-sider-children {
overflow : auto ;
overflow-x : hidden ;
max-width : 200px ;
min-width : 80px ;
width : 100% ;
height : 100% ;
position : fixed ; /* 固定定位 */
left : 0 ; /* 此处注意只设左边 */
margin-top : 0px ;
}
.ant-layout-sider {
min-height : 100vh ;
}
.alain-default__aside {
overflow : auto ;
width : 100% ;
height : 100% ;
}
.layout-fixed .alain-default__content {
margin-top : 54px ;
}
/* 内容样式 */
.main {
background : #fff ;
padding : 0 ;
position : relative ; /* 此处定位很关键, */
overflow : auto ;
height : 100% ;
-webkit-flex : 1 ;
-moz-flex : 1 ;
-ms-flex : 1 ;
flex : 1 ;
}
.alain-default__header {
background-color : #001529 ;
width : 100% ;
position : fixed ;
top : 0 ; /* 此处注意只设上边边 */
left : auto ; /* 左侧不可设置具体数值,否者无法与左侧定位对齐,会占据整个屏幕 */
}
@media (min-width: 768px) {
.alain-default__content {
margin-left : 21px ;
min-width : 768px ;
}
}
/* sidebar样式 */
:host ::ng-deep .trigger {
font-size : 20px ;
line-height : 40px ;
padding : 0 24px ;
cursor : pointer ;
transition : color .3s ;
}
:host ::ng-deep .trigger:hover {
color : #1890ff ;
}
.mainnav span {
font-size : 18px ;
font-family : MicrosoftYaHei-Bold ;
font-weight : bold ;
}
.ant-menu-inline-collapsed>.ant-menu-submenu .mainnav i {
padding : 0px ;
}
.ant-menu-inline-collapsed>.ant-menu-submenu .mainnav span {
max-width : 0 ;
display : inline-block ;
opacity : 0 ;
}
.icont i {
font-size : 23px ;
margin-right : 17px ;
}
.icont span {
font-size : 14px ;
font-family : MicrosoftYaHeiUI ;
color : #B3B4B6 ;
text-align : left ;
}
.ant-menu-item:hover span {
color : #fff ;
}
.ant-menu-item-selected span {
color : #fff ;
}
.menulist {
padding : 0 16px ;
font-size : 14px ;
line-height : 40px ;
height : 40px ;
margin-top : 4px ;
margin-bottom : 4px ;
overflow : hidden ;
text-overflow : ellipsis ;
margin : 0 ;
padding-left : 24px ;
position : relative ;
display : block ;
white-space : nowrap ;
}
.ant-menu-inline-collapsed>.ant-menu-item>.icont>span {
max-width : 0 ;
display : inline-block ;
opacity : 0 ;
}
.ant-menu-inline-collapsed>.ant-menu-submenu .icont span {
max-width : 0 ;
display : inline-block ;
opacity : 0 ;
}
3此处附写的小demo一个,可直接粘贴运行
<! DOCTYPE html >
< html lang ="en" >
< head >
< meta charset ="UTF-8" >
< meta name ="viewport" content ="width=device-width, initial-scale=1.0" >
< meta http-equiv ="X-UA-Compatible" content ="ie=edge" >
< title > Document </ title >
< style >
/* 最父层,可无此项 */
#framerPar {
padding-left : 0 ;
height : 100% ;
width : 100% ;
}
/* 框架容器 */
#framerParCon {
height : 100% ;
display : -webkit-box ;
display : -moz-box ;
display : -webkit-flex ;
display : -ms-flexbox ;
display : flex ;
}
/* 左侧容器导航 */
#framerLeft {
height : 100% ;
background-color : #197DE7 ;
overflow : auto ;
overflow-x : hidden ;
max-width : 200px ;
min-width : 50px ;
position : fixed ;
}
/* 右侧容器 */
#framerRight {
padding : 0 ;
position : relative ;
overflow : auto ;
height : 100% ;
margin-left : 88px ;
-webkit-flex : 1 ;
-moz-flex : 1 ;
-ms-flex : 1 ;
flex : 1 ;
}
/* 右侧容器上导航 */
#framerRightTop {
width : 100% ;
position : fixed ;
top : 0 ;
/* left: 0; *//* 重点不用设置,会自动随着左边宽度变小而改变,为默认值 auto */
}
/* 右侧容器下内容区域 */
#framerRightBot {
width : 100% ;
height : 100% ;
padding-top : 60px ;
overflow : auto ;
/* margin-top: 50px; */
}
</ style >
</ head >
< body >
< div id ="framerPar" >
< div id ="framerParCon" >
<!-- 左边侧导航 -->
< div id ="framerLeft" >
< ul >
< li > 右导航 </ li >
< li > 右导航 </ li >
< li > 右导航 </ li >
< li > 右导航 </ li >
< li > 右导航 </ li >
< li > 右导航 </ li >
</ ul >
</ div >
<!-- 右边容器 -->
< div id ="framerRight" >
<!-- 右边上导航 -->
< nav id ="framerRightTop" >
< ul >
< li > 上导航 </ li >
</ ul >
</ nav >
< div id ="framerRightBot" >
< div style ="height:2000px;width:100%;" > 我是内容我能动 </ div >
</ div >
</ div >
</ div >
</ div >
</ body >
</ html >
查看更多关于angular 实现左侧和顶部固定定位布局的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did222943