CSS实现多列复杂界面布局
时间:2022-05-03
本文章向大家介绍CSS实现多列复杂界面布局,主要内容包括1、此页面宽高均占满全屏、2、布局大致分为左中右结构(中间再分为左右布局)、3、中间两个区域均可分上中下结构、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
最近做一个云客服项目,可以把多个微信号消息集中到一个客服平台中,方便统一管理,这里就不详细说客服平台的功能。
做为码农,工作职责就是把功能实现了,在此,我简单说一下页面布局吧。先贴上设计稿吧:
UI图主要是为PC设计的,手机上可能看不太清,但这不影响接下来讲解的布局,我们先简单分析一下页面,看看如何实现这个复杂的页面布局。
我写的HTML结构代码:
<div class="wrapper">
<!-- left -->
<div class="kf-left-panel"></div>
<!-- main left -->
<div class="kf-contact-panel"></div>
<!-- main-right -->
<div class="kf-content-panel"></div>
<!-- right -->
<div class="kf-right-panel"></div>
</div>
1、此页面宽高均占满全屏
这种占满全屏的布局,比较常见的是早期的一些论坛,width都设置为100%,现在也有不少论坛设置成了定宽~
当前这种页面元素比较多的布局,建议加上最小宽度 & 最小高度,再加上宽度高度都是100%(要设置html,body高度为100%)。
<style>
html, body{
height: 100%;
}
.wrapper{
width: 100%;
height: 100%;
min-width: 1000px;
min-height: 600px;
}
</style>
2、布局大致分为左中右结构(中间再分为左右布局)
左右布局是CSS布局中比较常见的一种布局方式,这里的难点是,既要实现左右布局,又要保证width: 100%;(就是宽度不定,因为用户的浏览器宽度是各不相同的)。 好了,直接上代码吧(实现方式应该不止这一种):
<style>
.wrapper{
min-width: 1000px;
height: 100%;
min-height: 600px;
}
// left:用左浮动 and 定宽
.kf-left-panel{
position: relative;
float: left;
width: 104px;
background: $bg_black;
height: 100%;
overflow: auto;
text-align: center;
}
// main left:用左浮动 and 定宽
.kf-contact-panel{
position: relative;
float: left;
width: 260px;
height: 100%;
border-right: 1px solid $border;
overflow: hidden;
}
// main right: 设置margin-left和margin-right值,给left-panel和right-panel留出空间
.kf-content-panel{
position: relative;
margin-left: 364px;
margin-right: 260px;
height: 100%;
overflow: hidden;
}
// right:这个很好理解了,绝对定位,宽度正好是上面content留下的margin-right值
.kf-right-panel{
position: absolute;
top: 0;
right: 0;
width: 260px;
height: 100%;
border-right: 1px solid $border;
background: $bg_user_info;
overflow: auto;
}
</style>
这个左右布局问题也解决了,剩下的上中下布局也就好办了~
3、中间两个区域均可分上中下结构
上中下布局属于多行布局,也是比较常见的布局方式,就当前设计稿来说,难点儿是高度100%的情况下(高度根据用户浏览器高度而定)来实现这效果。 就拿中间的对话区域来分析:顶部高度定高,底部输入区域也是定高,中间区域高度是剩余的高度。
好了,还是直接上代码吧:
html部分
<!-- 顶部标题区 -->
<div class="dialog-title dialog-content-title"></div>
<!-- 对话内容区 -->
<div class="dialog-content-news"></div>
<!-- 底部输入框区域 -->
<div class="dialog-input-panel"></div>
css部分
<style>
// 顶部标题区
.dialog-title{
height: 48px;
line-height: 48px;
padding-left: 16px;
font-size: $font_title;
color: $color_default;
overflow: hidden;
}
// 对话内容区
.dialog-content-news{
position: absolute;
top: 48px;
left: 0;
bottom: 161px;
width: 100%;
border-top: 1px solid $border;
overflow: hidden;
}
// 底部输入框区域
.dialog-input-panel{
position: absolute;
bottom: 0;
width: 100%;
height: 160px;
border-top: 1px solid $border;
}
</style>
OK,看来解决好上面这三个问题,这个复杂的布局就搞定了。纯CSS实现,没有用一行JS代码,不说了,要继续写代码了~
想查看DEMO,请点击:http://demos.pxuexiao.com/kefu/index.html
- LeetCode——Longest Substring Without Repeating Characters
- Python time模块详解(时间戳↔元组形式↔格式化形式三者转化)
- Maven 核心原理解析(2)
- Linux C 编程——互斥锁mutex
- python两个 list 获取交集,并集,差集的方法.
- python——时间与时间戳之间的转换
- Maven 核心原理解析(3)
- String中的null,以及String s;等区别详解
- Shell编程——Shell中的数学运算
- 如何利用微信监管你的TF训练?
- python 安装spark_Spark环境搭建 (Python)
- MongoDB触发oom-killer的简单处理(一)(r7笔记第54天)
- int与integer的区别
- java 自动装箱与拆箱
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备
- XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复
- [修正]XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复
- XtraBackup工具详解 Part 7 使用innobackupex对数据库进行增量备份
- XtraBackup工具详解 Part 8 使用innobackupex对增量备份进行恢复
- MySQL复制全解析 Part 2 一步步搭建基于二进制文件位置的MySQL复制
- MySQL复制全解析 Part 3 MySQL半同步复制设置
- MySQL 复制全解析 Part 4 使用备库搭建MySQL复制
- MySQL复制全解析 Part 5 MySQL GTID的格式和存储
- MySQL复制全解析 Part 6 MySQL GTID 生命周期
- MySQL复制全解析 Part 7 gtid_next和gtid_purged系统变量解析
- MySQL复制全解析 Part 8 GTID Auto-Positioning
- 红队之windows用户和组
- MySQL 复制全解析 Part10 基于GTID的MySQL复制的一些限制
- MySQL 复制全解析 Part 11 使用xtrabackup建立MySQL复制