📔
饥人谷前端体系课程笔记
黑马程序员笔记前端面试押题前端精进
  • 课程大纲
  • Git入门
    • 3. 软件安装详解
    • 4. Mac环境搭建
    • 5. 命令行入门
    • 6. 本地仓库
    • 7. Git远程仓库-GitHub
  • HTML全解
    • 8. HTML概览
    • 9. HTML标签
    • 10. HTML重难点
    • 11. HTML实践 & 手机调试
  • CSS全解
    • 12. CSS基础
    • 13. CSS布局(上)
    • 14. CSS布局(下)
    • 15. CSS定位
    • 16. CSS动画
  • HTTP全解
    • 17. URL 是什么
    • 18. 请求和响应 & Node.js Server
  • JS全解
    • 19. JavaScript概览
    • 20. 内存图与JS世界(精品课)
    • 21. Canvas 实践—画图板
    • 22. JS语法
    • 23. JS数据类型
    • 24. JS 对象
    • 25. JS 对象分类
    • 26. JS 数组
    • 27. JS 函数
    • 28. JS 实战,会动的代码
    • 29. JS运算符
    • 30. JS总结
  • JS编程接口
    • 31. DOM编程
    • 32. 手写DOM库
    • 33. JQuery中的设计模式(上)
    • 34. JQuery中的设计模式(下)
    • 35. DOM事件与事件委托
  • 项目 前端导航站点
    • 前端导航项目笔记
  • 前后分离
    • 40. AJAX的原理
    • 41. 异步与Promise
    • 42. 跨域、CORS、JSONP
    • 43. 静态服务器
    • 44. AJAX实战:Cookie、Session
  • JS进阶MVC
    • 48. MVC(上)
    • 49. MVC(中)
    • 50. MVC(下)
  • 项目构建
    • 51. Webpack(上)
    • 52. Webpack(下)
  • 算法与数据结构
    • 62. 伪代码与流程图
  • React全解
    • 75. React起手式
    • 76. React类组件和函数组件
    • 77. Class组件详解
    • 78. 函数组件
    • 79. Hooks原理解析
    • 80. Hooks各个击破
    • 81. 精通Redux
  • Node.js
    • 84. Node.js技术架构
    • 85. 文件模块
    • 86. 单元测试之文件模块
    • 87. 调试 Node.js 程序
    • 88. 静态服务器
    • 89. 命令行翻译工具
    • 90. 操作数据库
    • 91. 数据库基础知识
    • 92. Stream 流
    • 93. child_process
    • 94. 总结
  • TypeScript
    • 112. 基础
    • 113. 泛型
  • Next.js全解
    • Next.js 上
    • Next.js 下
  • ES6精讲
    • Promise,async/await
  • 大屏可视化笔记
    • 大屏可视化项目
  • SCSS全解
    • SCSS全解
  • 拓展
    • 一次性弄懂性能优化
    • Web性能优化
由 GitBook 提供支持
在本页
  • 13. CSS布局(上)
  • 布局是什么
  • 布局分类
  • 两种
  • 还记得吗
  • 第三种布局
  • 布局的两种思路
  • 从大到小
  • 从小到大
  • 两种均可
  • 布局需要用到哪些属性?
  • Float布局
  • 步骤
  • 经验
  • 实践
  • 不同布局
  • 经验
  • Flex布局上
  • 容器containter
  • flex container有哪些样式?
  • 改变items流动方向(主轴)
  • 改变折行
  • 主轴对齐方式
  • 次轴对齐
  • 多行内容
  • item上面加order
  • item上面加flex-grow
  • flex-shrink控制如何变瘦
  • flex-basis控制基准宽度
  • flex:flex-grow flex-shrink flex-basis
  • align-self定制align-items
  • flex所有属性讲完
  • 重点
  • 记住这些代码
  • Flex小游戏
  • 前端的底线
  • 草图软件推荐
  • 实践
  • 不同布局
  • 经验
  • 什么叫写死
  • 写死
  • 不写死

这有帮助吗?

  1. CSS全解

13. CSS布局(上)

CSS

13. CSS布局(上)

布局是什么

把页面分成一块一块,按左中右,上中下等排列

布局分类

两种

固定宽度布局,一般宽度为960/1000/1024px(都是8的倍数)

不固定宽度布局,主要靠文档流的原理来布局

还记得吗

文档流本来就是自适应的,不需要加额外的样式

第三种布局

响应式布局

意思就是PC上固定宽度,手机上不固定宽度

也就是一种混合布局

布局的两种思路

从大到小

先定下大局

然后完善每个部分的小布局

从小到大

先完成小布局

然后组合成大布局

两种均可

新人推荐用第二种,因为小的简单

老手一般用第一种,因为熟练有大局观

布局需要用到哪些属性?

不多逼逼,直接给你所有套路

Float布局

步骤

子元素上加float:left和width

在父元素上加.clearfix(忘了加被方方看到你就完了)

为什么要加.clearfix?看第二张不加的图,加了之后header可以把div和nav都包裹住。

如果想让div和nav之间有点空隙

把float:left改成float:right

如何让两个标题居中对齐?

经验

有经验者会留一些空间或者最后一个不设width

下图.user就没有设置width,设置max-width文字会跑出来

手机上不需要做响应式,因为手机上没有IE,而这个布局是专门为IE准备的

下面的css在IE6/7浏览器会自动把margin双倍显示

margin-left:10px;

IE6/7存在双倍margin bug,解决方法有两个

一是将错就错,针对IE6/7把margin减半

_margin-left:5px;/*其他的浏览器看不到这句话*/

二是神来一笔,再加一个display:inline-block

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了吧

Flex布局上

教程(来自CSS Tricks)

把教程过一遍,然后忘掉

完成Flex青蛙游戏

开始用flex!

缩写用约定俗成的,未经约定俗成的不要用,比如将container缩写成cnt

容器containter

container用做父元素

flex container有哪些样式?

以下内容都是container的样式

让一个元素变成flex容器

.container{
	display:flex;/*or inline-flex */
}
.item*3//三个div,class是item
d:f //display:flex 会另外起一行
d:if//display:inline-flex不会另外起一行

改变items流动方向(主轴)

默认flex-direction:row

弹性流,即一字排开

控制什么方向,主轴就是什么方向

.container{
 flex-direction:row|row-reverse|column|column-reverse;
}

改变折行

flex-wrap 指定 flex 元素单行显示还是多行显示 。如果允许换行,这个属性允许你控制行的堆叠方向。初始值是nowrap

.container{
 flex-wrap:nowrap|wrap|wrap-reverse;
}

如果本来item设置了宽度,一旦多了会被挤压,比如下图

如果还是想维持原来的width,也不想被挤压,就通过

flex-wrap:wrap,如下图

flex-wrap:wrap-reverse

主轴对齐方式

默认主轴是横轴,除非你改变了flex-direction方向

默认是justify-content:flex-start

.container {
  justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly | start | end | left | right ... + safe | unsafe;
}

默认靠左

靠右

居中

不居中,不靠右也不靠左,把space空间放到间隙中

把空间放到周围,space-around

次轴对齐

默认次轴是纵轴,当高度不一样时,需要做次轴对齐,

align-items:flex-start是默认值,向上对齐

.container {
  align-items: stretch | flex-start | flex-end | center | baseline | first baseline | last baseline | start | end | self-start | self-end + ... safe | unsafe;
}

align-items:flex-start

align-items:center

align-items:flex-end

align-items:stretch就是默认一样高,stretch就是衍生

baseline比较少用

多行内容

.container {
  align-content: flex-start | flex-end | center | space-between | space-around | space-evenly | stretch | start | end | baseline | first baseline | last baseline + ... safe | unsafe;
}

如果container的高度是400px,默认里面的每一行的高度就是平均分,默认是stretch

align-content:flex-start把多余的行高全部放下面

align-content:flex-end把多余的行高放上面

align-content:center把多余的行高放两遍

align-content:stretch

align-content:space-between

align-content:space-around这个属性基本不用

item上面加order

数字越大越往后排,数字越小越靠前,数字为负也是靠前

item上面加flex-grow

控制自己如何长胖

.item {
  flex-grow: 4; /* default 0 */
}

flex-shrink控制如何变瘦

一般写flex-shrink:0防止变瘦,默认是1

如果使用flex-shrink的话,需要设置宽度,以及nowrap,这样能明显看到变化

.item {
  flex-shrink: 3; /* default 1 */
}

flex-basis控制基准宽度

默认是auto

就是宽度的意思,用的不多

flex:flex-grow flex-shrink flex-basis

缩写,空格隔开

.item:first-child{
  flex:1 1 30px;
  
}
.item:nth-child(2){
 flex:1 1 30px
 
}
.item:nth-child(3){
  flex:1 1 34px
}

align-self定制align-items

用来调整单个的item

flex所有属性讲完

忘掉它,开始干

重点

记住这些代码

display:flex
flex-direction:row/column
flex-wrap:wrap
just-content:center/space-between
align-items:center

工作中基本只用这些

Flex小游戏

https://flexboxfroggy.com/#zh-cn

前端的底线

上课的示例代码

草图软件推荐

Balsamiq

Figma

墨刀

Adobe XD

特点

直接干,不用学

如何在两套布局中切换

后面的课程单独讲,主要使用@media媒体查询

实践

不同布局

用flex做两栏布局

用flex做三栏布局

用flex做四栏布局

用flex做平均布局

用flex组合使用,做更复杂的布局

经验

永远不要把width和height写死,除非特殊说明

用min-width/max-width/min-height/max-height

flex可以基本满足所有需求

flex和margin-xxx:auto配合有意外的效果

什么叫写死

写死

width:100px

不写死

width:50%
max-width:100px
width:30vw
min-width:80%

特点:不使用px,或者加min max前缀

上一页12. CSS基础下一页14. CSS布局(下)

最后更新于3年前

这有帮助吗?

codesandbox
Screen Shot 2021-12-11 at 11.58.31 PM
Screen Shot 2021-12-12 at 1.34.13 AM
Screen Shot 2021-12-12 at 1.35.05 AM
Screen Shot 2021-12-12 at 1.39.29 AM
Screen Shot 2021-12-12 at 1.41.14 AM
Screen Shot 2021-12-12 at 11.38.22 AM
Screen Shot 2021-12-12 at 12.24.44 AM
Screen Shot 2021-12-12 at 12.24.50 AM
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
Screen Shot 2021-12-12 at 12.28.09 AM
Screen Shot 2021-12-14 at 9.20.40 AM
Screen Shot 2021-12-14 at 9.21.31 AM
Screen Shot 2021-12-14 at 9.26.24 AM
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
Screen Shot 2021-12-14 at 9.43.02 AM
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
Screen Shot 2021-12-12 at 12.32.02 AM
Screen Shot 2021-12-14 at 9.52.53 AM
Screen Shot 2021-12-14 at 9.53.12 AM
Screen Shot 2021-12-14 at 9.53.33 AM
Screen Shot 2021-12-14 at 10.08.18 AM
Screen Shot 2021-12-14 at 10.10.21 AM
Screen Shot 2021-12-12 at 12.34.14 AM
Screen Shot 2021-12-14 at 10.21.13 AM
Screen Shot 2021-12-14 at 10.22.42 AM
Screen Shot 2021-12-14 at 10.24.04 AM
Screen Shot 2021-12-14 at 10.25.20 AM
Screen Shot 2021-12-14 at 10.28.20 AM
Screen Shot 2021-12-14 at 10.28.36 AM
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
Screen Shot 2021-12-12 at 12.36.24 AM
Screen Shot 2021-12-19 at 4.38.11 AM
Screen Shot 2021-12-19 at 4.42.37 AM
Screen Shot 2021-12-12 at 12.40.51 AM
Screen Shot 2021-12-19 at 4.53.46 AM
Screen Shot 2021-12-19 at 5.04.22 AM