八股(自己整理)CSS 2

52 阅读4分钟

1.grid布局

容器属性:

①display属性

display:grid容器是块级元素

display:inline-grid 容器为行内元素

②grid-template

grid-template-columns设置列宽

grid-template-rows设置行高

.wrapper {
  display: grid;
  /*  声明了三列,宽度分别为 200px 100px 200px */
  grid-template-columns: 200px 100px 200px;
  grid-gap: 5px;
  /*  声明了两行,行高分别为 50px 50px  */
  grid-template-rows: 50px 50px;
}

repeat()函数

简化重复的值

接收两个参数:重复的次数,要重复的值

如grid-template-rows:repeat(2,50px)等效于...:50px 50px

auto-fill关键字

自动填充,让一行/列尽可能容纳更多的单元格

grid-template-columns:repeat(auto-fill,200px)

表示每个元素列宽200px,但列的数量不固定

fr关键字

fr单位代表网格容器可用空间的一等份

grid-template-columns:200px 1fr 2fr

表示第一个列宽200px,剩下两个占据剩余宽度的1/3和2/3

minmax()函数

长度范围

auto关键字

由浏览器决定长度

grid-template-columns:100px auto 200px

中间的由浏览器决定

③grid-gap

grid-row-gap设置行间距 grid-column-gap设置列间距

grid-gap:10px 20px

表示行间距10px列间距20px

④grid-template-area

grid-area指定项目放在哪个区域

.wrapper {
  display: grid;
  grid-gap: 10px;
  grid-template-columns: 120px  120px  120px;
  grid-template-areas:
    ". header  header"
    "sidebar content content";
  background-color: #fff;
  color: #444;
}

⑤grid-auto-flow

指定网格中被自动布局的元素怎样排列

默认值是row 先行后列

grid-auto-flow:row dense 尽可能填满表格

⑥justify-items...

justify-items设置单元格内容的水平位置(左中右)

align-items设置单元格的垂直位置(上中下)

start对齐单元格的起始边缘

end对齐结束边缘

center单元格内部居中

stretch拉伸占满单元格的整个宽度

⑦justify-content

justify-content设置整个内容区域在容器中的水平位置(左中右)

align-content垂直位置

start end center stretch同上

space-around每个项目两侧的间隔相等

space-between项目之间的间隔相等 项目和容器边框之间没有间隔

space-evenly项目之间间隔相等 项目和容器边框也是同样长度的间隔

实战-实现响应式布局

2.flex布局

弹性盒子布局

display:flex指定任一容器为flex布局

行内元素也可以使用flex布局

display:inline-flex

基本概念

采用flex布局的元素:flex容器

它的所有子元素:flex项目

容器默认有两条轴:水平的主轴 垂直的交叉轴

项目默认沿主轴排列

容器属性:

①flex-direction

决定主轴的方向(即项目的排列方向)

row 默认 水平从左向右

row-reverse 水平从右向左

column 垂直上下

column-reverse垂直下上

②flex-wrap

定义如果项目一条轴线排不下,如何换行

nowrap 默认值 不换行

wrap 换行

wrap-reverse 换行,第一行在下方

③flex-flow

flex-direction和flex-wrap的简写形式

默认值为row nowrap

④justify-content

定义项目在主轴上的对齐方式

flex-start 默认值 左对齐

flex-end 右对齐

center居中

space-between 两端对齐,项目之间间隔相等

space-around 项目两侧的间隔相等

⑤align-items

定义项目在交叉轴上如何对齐

flex-start flex-end center同上

baseline项目的第一行文字的基线对齐

stretch占满容器的高度

⑥align-content

定义了多根轴线的对齐方式

项目属性

①order

定义项目的排列顺序 数值小的在前 默认值为0

②flex-grow

定义项目的放大比例

默认值为0,即存在剩余空间也不放大

所有项目的flex-grow都为1,它们等分剩余空间

③flex-shrink

定义了项目的缩小比例

默认为1,即空间不足该项目缩小

负值对该属性无效

④flex-basis

定义了在分配多余空间前,项目占据的主轴空间

浏览器根据该属性计算主轴是否有多余空间

默认值为auto,即项目的本来大小

flex-basis:<length>|auto; 可以设为和width或height一样的值,则项目将占据固定空间

主轴为水平时,设置了flex-basis,设置的项目宽度值将失效

flex-basis需要跟flex-grow和flex-shrink配合使用才能生效

特殊值:

flex-basis值为0%,项目尺寸会被认为是0

⑤flex

是flex-grow flex-shrink flex-basis的简写

默认值 0 1 auto

属性快捷值:auto(1 1 auto)和none(0 0 auto)