把页面分成一块一块,按左中右,上中下等排列
固定宽度布局,一般宽度为960/1000/1024px(都是8的倍数)
不固定宽度布局,主要靠文档流的原理来布局
文档流本来就是自适应的,不需要加额外的样式
响应式布局
意思就是PC上固定宽度,手机上不固定宽度
也就是一种混合布局
先定下大局
然后完善每个部分的小布局
先完成小布局
然后组合成大布局
新人推荐用第二种,因为小的简单
老手一般用第一种,因为熟练有大局观
不多逼逼,直接给你所有套路
Screen Shot 2021-12-11 at 11.58.31 PM 子元素上加float:left和width
在父元素上加.clearfix(忘了加被方方看到你就完了)
为什么要加.clearfix?看第二张不加的图,加了之后header可以把div和nav都包裹住。
Screen Shot 2021-12-12 at 1.34.13 AM Screen Shot 2021-12-12 at 1.35.05 AM 如果想让div和nav之间有点空隙
把float:left改成float:right
Screen Shot 2021-12-12 at 1.39.29 AM 如何让两个标题居中对齐?
Screen Shot 2021-12-12 at 1.41.14 AM 有经验者会留一些空间或者最后一个不设width
下图.user就没有设置width,设置max-width文字会跑出来
Screen Shot 2021-12-12 at 11.38.22 AM 手机上不需要做响应式,因为手机上没有IE,而这个布局是专门为IE准备的
下面的css在IE6/7浏览器会自动把margin双倍显示
IE6/7存在双倍margin bug,解决方法有两个
一是将错就错,针对IE6/7把margin减半
二是神来一笔,再加一个display:inline-block
不要问为什么
面试官问:你会不会兼容IE,举个例子
答:会。我们用float布局的时候,如果写了一个margin-left,IE6/7会变成双倍,有两种方法可以解决,一种是将复制减半,或者使用display:inline-block即可。
代码链接:https://jsbin.com/kexuzar/edit?html,css,output
用float做两栏布局(如顶部条)
用float做三栏布局(如内容区)
用float做四栏布局(如导航)
用float做平局布局(如产品展示区)
曾经淘宝的前端发明了双飞翼布局,不要学,已过时
加上头尾,即可满足所有PC页面需求
手机页面傻子采用float
float要程序员自己计算宽度,不灵活
float用来应付IE足以
问:老师你说float适合ie,但是你刚刚是chrome啊,是我理解不对吗
回答
问:如果logo和nav的高度不固定,还能用margin-top:5px吗
回答
问:父div宽度800,四个子元素宽度分别191,不是还有border 1px吗,所以四个加起来的宽度就不止764了吧
教程(来自CSS Tricks)
把教程过一遍,然后忘掉
完成Flex青蛙游戏
开始用flex!
缩写用约定俗成的,未经约定俗成的不要用,比如将container缩写成cnt
container用做父元素
Screen Shot 2021-12-12 at 12.24.44 AM Screen Shot 2021-12-12 at 12.24.50 AM flex container有哪些样式?
以下内容都是container的样式
让一个元素变成flex容器
改变items流动方向(主轴)
默认flex-direction:row
弹性流,即一字排开
控制什么方向,主轴就是什么方向
Screen Shot 2021-12-12 at 12.25.40 AM Screen Shot 2021-12-14 at 9.12.12 AM Screen Shot 2021-12-14 at 9.12.32 AM Screen Shot 2021-12-14 at 9.15.19 AM Screen Shot 2021-12-14 at 9.15.42 AM flex-wrap 指定 flex 元素单行显示还是多行显示 。如果允许换行,这个属性允许你控制行的堆叠方向。初始值是nowrap
Screen Shot 2021-12-12 at 12.28.09 AM 如果本来item设置了宽度,一旦多了会被挤压,比如下图
Screen Shot 2021-12-14 at 9.20.40 AM 如果还是想维持原来的width,也不想被挤压,就通过
flex-wrap:wrap,如下图
Screen Shot 2021-12-14 at 9.21.31 AM flex-wrap:wrap-reverse
Screen Shot 2021-12-14 at 9.26.24 AM 默认主轴是横轴,除非你改变了flex-direction方向
默认是justify-content:flex-start
Screen Shot 2021-12-12 at 12.29.57 AM 默认靠左
Screen Shot 2021-12-14 at 9.40.47 AM 靠右
Screen Shot 2021-12-14 at 9.39.59 AM 居中
Screen Shot 2021-12-14 at 9.41.46 AM 不居中,不靠右也不靠左,把space空间放到间隙中
Screen Shot 2021-12-14 at 9.43.02 AM 把空间放到周围,space-around
Screen Shot 2021-12-14 at 9.44.43 AM Screen Shot 2021-12-14 at 9.46.00 AM Screen Shot 2021-12-14 at 9.47.00 AM 默认次轴是纵轴,当高度不一样时,需要做次轴对齐,
align-items:flex-start是默认值,向上对齐
Screen Shot 2021-12-12 at 12.32.02 AM align-items:flex-start
Screen Shot 2021-12-14 at 9.52.53 AM align-items:center
Screen Shot 2021-12-14 at 9.53.12 AM align-items:flex-end
Screen Shot 2021-12-14 at 9.53.33 AM align-items:stretch就是默认一样高,stretch就是衍生
Screen Shot 2021-12-14 at 10.08.18 AM baseline比较少用
Screen Shot 2021-12-14 at 10.10.21 AM Screen Shot 2021-12-12 at 12.34.14 AM 如果container的高度是400px,默认里面的每一行的高度就是平均分,默认是stretch
Screen Shot 2021-12-14 at 10.21.13 AM align-content:flex-start把多余的行高全部放下面
Screen Shot 2021-12-14 at 10.22.42 AM align-content:flex-end把多余的行高放上面
Screen Shot 2021-12-14 at 10.24.04 AM align-content:center把多余的行高放两遍
Screen Shot 2021-12-14 at 10.25.20 AM align-content:stretch
Screen Shot 2021-12-14 at 10.28.20 AM align-content:space-between
Screen Shot 2021-12-14 at 10.28.36 AM align-content:space-around这个属性基本不用
Screen Shot 2021-12-14 at 10.28.50 AM 数字越大越往后排,数字越小越靠前,数字为负也是靠前
Screen Shot 2021-12-12 at 12.35.37 AM Screen Shot 2021-12-19 at 4.33.21 AM item上面加flex-grow
控制自己如何长胖
Screen Shot 2021-12-12 at 12.36.24 AM Screen Shot 2021-12-19 at 4.38.11 AM flex-shrink控制如何变瘦
一般写flex-shrink:0防止变瘦,默认是1
如果使用flex-shrink的话,需要设置宽度,以及nowrap,这样能明显看到变化
Screen Shot 2021-12-19 at 4.42.37 AM flex-basis控制基准宽度
默认是auto
就是宽度的意思,用的不多
flex:flex-grow flex-shrink flex-basis
缩写,空格隔开
align-self定制align-items
用来调整单个的item
Screen Shot 2021-12-12 at 12.40.51 AM Screen Shot 2021-12-19 at 4.53.46 AM 忘掉它,开始干
工作中基本只用这些
https://flexboxfroggy.com/#zh-cn
上课的示例代码
codesandbox
Balsamiq
Screen Shot 2021-12-19 at 5.04.22 AM Figma
墨刀
Adobe XD
特点
直接干,不用学
如何在两套布局中切换
后面的课程单独讲,主要使用@media媒体查询
用flex做两栏布局
用flex做三栏布局
用flex做四栏布局
用flex做平均布局
用flex组合使用,做更复杂的布局
永远不要把width和height写死,除非特殊说明
用min-width/max-width/min-height/max-height
flex可以基本满足所有需求
flex和margin-xxx:auto配合有意外的效果
特点:不使用px,或者加min max前缀