布局中的尺寸与位置
一. CSS盒模型组成
组成:content,padding,border,margin。把盒模型堪称一个包裹,content是物品,padding是填充物,border是盒子边,margin是盒子外面环境。
注意点:padding不能负值,margin可以
背景色可以平铺到margin区域,margin-top有传递问题。
二. 块级盒子和内联盒子
- 块级盒子:div,p;特性:独占一行。支持所有样式。不写宽度时和父容器的宽度相同,
- 内联盒子:span;特性:不会换行。有些样式不支持,比如宽高。宽高由content决定的。所占的区域不一定是矩形。内联标签之间有空隙,连成一行就没有了。
- 做布局一定用块级盒子,做修饰用内联盒子。内联盒子加浮动,绝对定位可以支持所有样式
三. 自适应盒模型特性:不写宽度的时候,content会进行重新的计算,盒子在添加padding,margin时,盒子会缩小。
四. 怪异盒模型
- 好处:直接量取盒子宽高不用计算一些padding或border;解决一些需要设置百分比和盒模型值。
五. 浮动注意点:只会影响后面的元素;文本不会被浮动元素覆盖;有内联盒子的特性,宽度由内容决定;内联盒子加浮动就可以设置宽高;父容器内浮动放不下会自动换行。
六. 绝对定位盒子:脱离了文档流;宽高由内容决定,支持所有样式。
七. 固定定位(fixed)与绝对定位相似,不同点是固定定位不受祖先元素影响
Flex弹性布局
一. 主轴和交叉轴
- 改变轴方向:flex-direction(row-reverse 翻转轴),换行 flex-wrap
- 主轴对齐:justify-content (space-between)
- 交叉轴对齐:align-content(在换行的情况下才能使用);align- item:每一行对齐
二. 子盒子上下左右居中
.box1{ |
三. 不定项居中布局,即轮播图上面的小圆点
.box1{ |
四. 均分列布局
- 即页面底部的导航栏
.box1{ |
五. 子项分组布局
- flex-grow ,flex-shrink ,flex-basis 指定flex元素在主轴方向上的初始大小 。flex:1;包括grow,shrink,basis。
六. 等高布局
.box1{ |
图片
七. 两列,三列布局:左边定宽,右边自适应
八. 溢出项布局
.box1{ |
grid网格布局
一. 定义网格及fr单位,二维布局,gird容器属性:
- 基于网格的行和列,定义网格线的名称和网格轨道的尺寸大小
grid-template-columns: 1fr 1fr 1fr; |
- 使用命名方式定义网格区域,子项需配合grid- area使用
grid-template-areas: |
用于设置元素行列之间的间隙大小,
gap: 20px 30px;
指定子项在网格中的对齐方式,默认值:stretch
/* 行 垂直对齐 水平对齐 */ |
- 隐式网格:指定在现实网格之外的隐式网格,如何排列及尺寸大小
/* 可以调节产生隐式网格的高度 */ |
二. grid子项属性:
- 基于线的元素放置,表示grid子项所占据的区域的起始和终止位置,包括水平和垂直。
/* 列 第二列开始,第四列结束 */ |
缩写方式,通过 / 作为分割
grid-row: 2 / 3; |
- repeat(),指定课选重复值
三. 多个方块组合排列
.box{ |
四. 栅格布局:一个网页会分成12个栅格
移动端适配布局
一.
- px to rem的插件。ps中量取的是物理像素,css中设置的是逻辑像素,所以对量取的值除以2
响应式布局
一. 媒体查询
- 添加到样式表的底部
- min-width方式:移动优先原则,先编写移动端设备,然后响应式过度到PC端。
二. 响应式交互实现
- 利用 :checked 伪类
- 利用JS脚本。