当前位置: 首页 > news >正文

wpf textbox垂直对齐方式_果冻公开课第九课:打破传统布局方式的flex(上)

1b523d83933787608514deb14b8de9e2.png

传统的布局方式都基于盒模型

像搭积木一样做出布局

这些布局方式的缺点都很明显

于是"flex布局"就诞生了

彻底改变了布局的方式

动画视频:

d57173d547f5331251696d23b5d5b1d5.png
果冻公开课第九课:flexhttps://www.zhihu.com/video/1104825597376946176

文字解析:

传统的布局都基于盒模型

需要灵活运用display+postion+float属性

像搭积木一样的方式做出布局

为了完成一些特殊的需求

需要掌握各种奇技淫巧

像垂直居中 弹性布局等

对于新手来说都是艰难的考验

比如我们有以下几种常见的布局场景

第一种 水平方向的多列自适应布局

它要求两列布局

一侧列宽固定

另一侧列宽自适应填充整个容器

如果是左侧定宽就浮动到左侧

右边元素margin-left与左侧隔离

缺点是右侧元素必须知道左侧元素的宽度精确设置

而这些数值涉及的元素越多

修改样式时越容易产生错误

84756f178510cd36691f68f1f2f4e59f.png

第二种 垂直方向的多行自适应布局

一般来说我们的footer是跟着内容走的

所以当内容较少不足一屏的时候

footer也会跟着内容往上走

导致下面一段空白

e25f16981f3cb54ab92276b629e1ca68.png

如果希望头尾高度固定

中间内容自适应填充整个容器

传统做法里比较简单的方案是用table来实现

table在垂直方向可以占满100%的特性

用一个容器section充当table

d231b9b0d64e14fae2c85df087a40b74.png

里面的三个子元素则设置为表格的行:table-row

这样只设置头尾的高度

剩下的元素也能实现垂直方向自适应占满剩余高度

缺点是这样使用表格行

可能会被同时使用的其他css属性破坏

比如float absolute等等

对margin值也无法正常反应

7d776694ddeb68191486ef5ead7993b8.png

第三种 水平居中

传统的水平居中解决方案有多种

比如inline-block position table

这里我们先看看inline-block的方式

利用文字居中的属性来让content居中

缺点是可能会限制content的发挥

除非这里本身就需要content是个行内块级元素

5e740b60dc693120aa49592f7e2b3f16.png

第四种 垂直居中

传统的垂直居中解决方案也有多种

比如inline-block position table

水平居中里我们已经看过了inline-block的方式

现在来看看position的方式

让元素在纵向平移父元素高度的一半

再反方向位移自身高度的一半

刚好实现垂直居中

水平居中也可以这样实现

01f995947ef3d92d19e5b0e0fb9a8186.png

不过这种方式的缺点是可能和其他transform属性冲突

从前面讲的例子可以看出来

这些布局的缺点都非常明显

如果CSS能支持一种新的布局方式就好了

因此大佬们考虑重新设计出一种新的布局方式来解决这些问题

它需要

1 能够自适应,弹性伸缩占满容器,对移动端更加友好

2 容器里的子元素对齐更加灵活和容易

3 容器里的子元素可以横向纵向正向反向排列组合

对应这几个需求

就有了设计这套布局的最重要的三大概念

轴向 对齐 弹性

每一个概念都有一个或多个属性来实现

114fe0ac618824f3d6b700e7ec46fb15.png

有的作用于父容器上

有的则作用于子容器上

于是在2009年后

W3C给这套方案命名为flex

彻底改变了布局的方式

怎么样是不是很简单?

赶紧上手写点代码练习一下吧~

更多内容,欢迎加大师姐微信:

入群了解课程动态、幕后花絮,还有机会参与到课程制作,成为联合制作人哟

8cf3575a89422724ef4817f6a14c675f.png

相关文章:

  • 4路组相连cache设计_写了多年代码,你却不知道的程序设计的5个底层逻辑
  • python爬取网页文本_python2、python3 伪装浏览器爬取网页内容的简单示例
  • idea html代码提示_Java后端精选基础教程:使用开发工具 IDEA「连载 4」
  • 各路由协议的协议号_离婚协议范本!
  • python按行拆分表格_Python对Excel按列值筛选并拆分表格到多个文件的代码
  • easyui datagrid重新加载detailview异常_tomcat类加载机制了解一下
  • 关于python格式对齐的问题_python格式对齐
  • css清除浮动的几种方法_小猿圈之HTML/css清除浮动的方法都有哪些?
  • python初学者编程指南源码_如何系统地自学 Python?
  • sublime编辑python_Sublime配置python开发环境
  • python快速入门naomiceder_零基础小白python入门必看之Cartopy的基础使用
  • 为什么写了value属性 jq赋值value值不显示_Vue计算属性原理和使用场景
  • python什么为假_在Python中使用filter去除列表中值为假及空字符串的例子
  • php不调用父类构造_popchain与对应poc的构造分析
  • 最常用20000英语单词表_高中英语 | 英语单词中最常用的300+个前缀、后缀
  • @angular/forms 源码解析之双向绑定
  • Android Studio:GIT提交项目到远程仓库
  • centos安装java运行环境jdk+tomcat
  • const let
  • Elasticsearch 参考指南(升级前重新索引)
  • JavaScript的使用你知道几种?(上)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Median of Two Sorted Arrays
  • MQ框架的比较
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法-插入排序
  • 源码安装memcached和php memcache扩展
  • hi-nginx-1.3.4编译安装
  • 从如何停掉 Promise 链说起
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • #100天计划# 2013年9月29日
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • (70min)字节暑假实习二面(已挂)
  • (C++)八皇后问题
  • (C语言)二分查找 超详细
  • (编译到47%失败)to be deleted
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (论文阅读40-45)图像描述1
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (三) diretfbrc详解
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)甲方乙方——赵民谈找工作
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET Core 2.1路线图
  • .net 中viewstate的原理和使用
  • .NET简谈设计模式之(单件模式)
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • @拔赤:Web前端开发十日谈