前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【解决方案】UI高度自适应的修改

【解决方案】UI高度自适应的修改

作者头像
一尾流莺
发布于 2022-12-10 03:11:49
发布于 2022-12-10 03:11:49
72900
代码可运行
举报
运行总次数:0
代码可运行

myspace

蓝湖UI设计图

整体的布局就是这样一个 Header,一个 sider,还有内容 content,我们要关心的就是 content  区域。

根据设计图 content 区域分成三个容器A B C

现在是要求 content 区域实现高度响应式,同时 A + B 的高度 和 C 的高度一致。

补充:

  • A,B 的宽度可以调整,C 的宽度自适应。
  • A 的高度可以调整,B 的高度自适应。

解决方案Demo

这是一个抽象出来的示意图

html 结构如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="outer">
    <div class="left">
      <div class="top"></div>
      <div class="bottom"></div>
    </div>
    <div class="right"></div>
  </div>

css 布局如下,一整个分成左右两个部分, 然后左边的部分再分上下两部分 ,全部使用 flex 做自适应。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.outer {
  width: 100%;
  height: 100%;
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  .left {
    display: flex;
    width: 240px;
    margin-right: 8px;
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: space-between;
    .top {
      height: 50%;
      margin-bottom: 8px;
      background-color: #fff;
    }
    .bottom {
      flex: 1;
      background-color: yellow;
    }
  }
  .right {
    flex: 1;
    background-color: #ff33ff;
  }
}

真实解决场景

  • 按照上面的 html 结构进行重构。
  • 可以与当前 rowcol 组件进行兼容。

最终效果如下

副作用

由于修改了代码结构,导致部分容器内元素的 CSS 失效,暂时没有查明原因,以及无法预估后续修改的工作量,单就调整 css 来看应该难度不大,但是细节比较多。

codePage

蓝湖UI设计图

设计图展示划分如下

  • Header 通用
  • Sider 通用
  • Content 自定义

Content区域规划

由于面包屑展示形式不一致,计划放在页面单独管理,所以把面包屑放在 Content 区域进行布局,效果如下

  • outer 最外层容器
  • YsBreadcrumb 面包屑区域
  • box 真正内容的区域

Vue2.x 要求每个组件必须有根节点,所以还需要一个 root

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <div class="root">
    <div class="YsBreadcrumb"></div>
    <div class="box">
    </div>
  </div>

Box区域规划

box 区域 划分成 左, 中 ,右 三个部分,其中右部分再细分为 上 下 两个部分。

  • Left
  • Middle
  • Top
  • Bottom
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div class="root">
    <div class="YsBreadcrumb"></div>
    <div class="box">
      <div class="left"></div>
      <div class="middle"></div>
      <div class="right">
        <div class="top"></div>
        <div class="bottom"></div>
      </div>
    </div>
  </div>
</template>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.root {
  width: 100%;
  height: 100%;
}

.box {
  width: 100%;
  height: 100%;
  height: calc(100% - 48px);
  display: flex;
  flex-wrap: nowrap;
  justify-content: space-between;
  .left {
    display: flex;
    margin-right: 8px;
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: space-between;
    background: #2f3e59;
  }
  .middle {
    flex: 1;
    background: #2f3e59;
    margin-right: 8px;
    border: 1px solid #fff;
  }
  .right {
    height: 100%;
    display: flex;
    margin-right: 8px;
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: space-between;
    .top {
      height: 50%;
      margin-bottom: 8px;
      background: #2f3e59;
    }
    .bottom {
      flex: 1;
      background: #2f3e59;
    }
  }
}

真实解决场景

  • 因为可以同时兼容 FlexColRow 组件,所以对整体结构影响不大
  • 需要注意的是每层 dom 结构都需要继承上一级的高度(height:100%)
  • 按照设定好的 html 结构对代码进行重构

最终效果如下

动态展示

备注

  • 类名为演示用,应适当修改更具语义化
  • 由于修改了 dom 结构,需要把背景颜色设置在对应的 div
  • 颜色当前是写死的,需要在 less 文件中声明共同类名,然后在对应的 dom 节点上添加类名
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSS魔法堂:Flex布局
前言  Flex是Flexible Box的缩写,就是「弹性布局」。从2012年已经面世,但由于工作环境的原因一直没有详细了解。最近工作忙到头晕脑胀,是要学点新东西刺激一下大脑,打打鸡血。 Flex就
^_^肥仔John
2018/07/11
4040
CSS画圆、三角形、品字、骰子
让 border-radius属性的值等于盒子高度的一半就行(当然,盒子得是正方形才能得到圆,否则便不是圆)
赤蓝紫
2023/01/05
1.3K0
CSS画圆、三角形、品字、骰子
[查缺补漏] 熟悉HTML页面架构和常用布局
<img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/71a9e02b8f4a46e88308dbfc2b8ed64b~tplv-k3u1fbpfcp-zoom-1.image">
程序员海军
2022/02/15
1.4K0
[查缺补漏] 熟悉HTML页面架构和常用布局
flex给我实现一个对角线布局
flex在css布局中的是一个经常考察的知识点,虽然垂直居中问题已经问得快烂大街了,flex你虽然总是在用,但是总会有你不知道的盲点
Maic
2022/07/28
7600
flex给我实现一个对角线布局
为hexo-next建立静态说说
曾经考虑使用Artitalk,但由于网络原因以及github无法备案等原因,暂时放弃,转而使用静态方法写说说
姓王者
2024/10/31
700
为hexo-next建立静态说说
HTML基础第六课(冲浪笔记6)
1、flex-wrap: nowrap; 当内容过多,会自动缩小内容,不会自动换行(默认不换行)
申小兮
2023/04/01
3130
HTML基础第六课(冲浪笔记6)
Day13:H5+JS+C3
BFC是Block formatting context的缩写,表示“块级格式化上下文”。 设置BFC的元素,是一个独立的渲染区域,只有Block-level box参与,它规定了内部的 Block-level Box如何布局(与该区域外部无关)。
达达前端
2019/07/15
7670
Day13:H5+JS+C3
flex布局详细
Flex 是 Flexible Box 的缩写,意为“弹性布局”或者“弹性盒子”,是 CSS3 中的一种新的布局模式,可以简便、完整、响应式地实现各种页面布局,当页面需要适应不同的屏幕大小以及设备类型时非常适用。目前,几乎所有的浏览器都支持 Flex 布局。
FGGIT
2024/10/15
1570
flex布局详细
使用flex弹性布局来为微信小程序写自适应页面
    我们知道,写习惯了前端的人,一般切图后布局页面的话,上手最习惯的是基于盒子模型的浮动布局,依赖 display 属性 + position属性 + float属性,但是浮动布局有一些致命的小问题,比如垂直居中比较费劲,比如著名的float坍塌问题,另外有些极端情况下,还得使用模型+clear:both来手动清除浮动,比较麻烦。
用户9127725
2022/08/08
1.2K0
使用flex弹性布局来为微信小程序写自适应页面
7b2美化-首页添加导航会员区块
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
小狐狸说事
2022/11/17
7860
你肯定会用到的CSS多行多列布局
我们都知道,之所以对不齐是因为最后一行的子项目没有达到4个,space-between的对齐方式,自然会把中间空出来。既然如此,何不直接补位,让元素排满4个。
Vam的金豆之路
2021/12/01
2.3K0
你肯定会用到的CSS多行多列布局
深入 CSS 中的弹性盒子 Flexible Box
弹性布局是指通过调整其内元素的宽高,从而在任何显示设备上实现对可用显示空间最佳填充的能力。弹性容器扩展其内元素来填充可用空间,或将其收缩来避免溢出。
IT技术小咖
2019/07/09
1.1K0
详解CSS Flexbox,附带示例
英文 | https://medium.com/javascript-in-plain-english/css-flexbox-explained-with-examples-85efa38e4770
winty
2021/02/05
1.3K0
详解CSS Flexbox,附带示例
【CSS——页面布局】新鲜的蔬菜(蓝桥杯真题-2439)【合集】
Rossy Yan
2025/03/07
630
【CSS——页面布局】新鲜的蔬菜(蓝桥杯真题-2439)【合集】
10·灵魂前端工程师养成-CSS布局(上)
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/10/31
4480
10·灵魂前端工程师养成-CSS布局(上)
Hexo侧边栏添加微博热搜
无意中浏览到了Lucifer三思而后行的博客,看到了首页侧边栏的微博热搜板块,比较感兴趣,自己尝试做一个(样式一致)。
花猪
2022/06/27
7070
Hexo侧边栏添加微博热搜
flex深度剖析-解决移动端适配问题!
上回说到,移动端适配,推荐了,使用px为主,vw,百分比为辅助,再搭配flex的布局方式,于是有人就开始问我了,这个flex搭配布局应该怎么用,梳理一遍,巩固一下
用户7413032
2020/06/11
2.1K0
flex深度剖析-解决移动端适配问题!
前端课程——弹性盒子模型
CSS3 新增了弹性盒子模型(Flexible Box 或 FlexBox),是一种新的用于在 HTML 页面实现布局的方式。使得当 HTML 页面适应不同尺寸的屏幕和不同的设备时,元素是可预测地运行。
Dreamy.TZK
2020/04/09
7140
CSS 入门指南(二):盒模型 & 浮动弹性布局 & CSS 特性
这个盒子由这几个部分构成 : 边框 border、 内容 content、 内边距 padding、 外边距 margin
IsLand1314
2025/03/30
1240
CSS 入门指南(二):盒模型 & 浮动弹性布局 & CSS 特性
再不学 flex 就不会写布局了
块状元素居中是一个老生常谈的话题,之前面试的时候考官也曾问到过这个。下面写几种常见的块状元素居中的方式。
李振
2021/11/26
3150
再不学 flex 就不会写布局了
相关推荐
CSS魔法堂:Flex布局
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档