首页 前端知识 CSS八股知识点串联(初版)

CSS八股知识点串联(初版)

2024-04-01 10:04:39 前端知识 前端哥 571 706 我要收藏

该文主要是帮助直接梳理知识点,具体讲解可以点击文中连接,大佬的讲的内容好得多
不过可以来我的博客看看,说不定有什么收获https://zo-no.github.io/

一、CSS发展历史

现代 CSS 进化史 - 知乎 (zhihu.com)(只浏览了)

  • 浮动的布局:2006年,A List Apart 上发表了一篇热门文章 In Search of the Holy Grail,文章概述了实现圣杯布局的详细方法——一个头部、三列内容和一个底部,你一定觉得一个简单的布局被称为圣杯布局很疯狂吧,但是在当时纯 CSS 的时代这的确很难实现。
  • 基于 Flexbox 的布局:Flexbox CSS 属性实在2009年第一次提出来的,但直到2015年才得到浏览器的广泛支持。
  • 基于 Grid的布局:CSS网格最早在2011年提出的(比flexbox提案晚不了多久),但是花了好长时间才在浏览器上普及起来。截止2018年初,大多数现代浏览器都已经支持CSS grid(这比一两年前有巨大的进步了)
  • 使用 CSS 预处理器扩展 CSS 语法

二、单位

一文读懂 CSS 单位 - 知乎 (zhihu.com)

知乎上的一个图

px:像素

相对单位

字体

em:1em = font-size的值(大概,如果嵌套起来,就按链计算)

rem:按根来算

ex:所用字体中小写字母 x 的高度。

ch:基于数字 0 的宽度计算的。会随着字体的变化而变化。

视窗(CSS3)

  • vw:视窗宽度的百分比;(css3)
  • vh:视窗高度的百分比;(css3)

min-height: 50vh;在全局中加上这个,那么显示就只有一半页面

  • vmax:较大的 vh 和 vw;(css3)
  • vmin:较小的 vh 和 vw。(css3)

vmin 和 vmax 与视窗宽度和高度的最大值和最小值有关。假如一个浏览器高度为500px,宽度为1200px,那么1vmin就是5px,1vmax就是12px。

绝对单位

1in = 25.4mm = 2.54cm = 6pc(Picas,印刷术语) = 72pt(Point,印刷术语) =96px
1pc = 16px
1cm = 37.8px
1mm = 3.78px
1in(inches,英尺) = 96px

频率、时间、分辨率单位

通常情况下,频率单位使用在听或说级联样式表中。频率可以被用来改变一个语音阅读文本的音调。低频率就是低音,高频率就是高音。

1kHz = 1000Hz

时间单位主要用于过度和动画中,用于定义持续时间或延迟时间。下面两种定义是等效的:

/*1s = 1000ms*/
a[href] {
 transition-duration: 2.5s;
}

a[href] {
 transition-duration: 2500ms;
}

主要用于媒体查询

1dppx = 96dpi
1dpi ≈ 0.39dpcm
1dpcm ≈ 2.54dpi

角度单位(CSS3)

一般这些角度单位用于元素的**旋转操作,**包括2D旋转、3D旋转等。

90deg(Degress,度) = 100grad(Radians,梯度) = 0.25turn(Turns,圈) ≈ 1.570796326794897rad(Radians,弧度)

360度=400梯度

百分比单位

邪门知识点(bushi)

font-size: 62.5%的意义

font-size: 62.5%的意义_font-size 62.5-CSDN博客

让1rem=16px变为1rem=10px

三、五种布局

CSS布局(重点整理) - 知乎 (zhihu.com)

流式布局:块和内联

绝对定位(position)

CSS position 属性用于指定一个元素在文档中的定位方式。

浮动(float)

float CSS 属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,但是仍然保持部分的流动性(与绝对定位相反)。

表格(table)

弹性(flex)

Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com)

是什么?

Flex 布局示例 (vgee.cn)

这是一位网友根据阮一峰大佬的文章写的实现,可以按F12去样式里面调着玩玩

容器的属性

flex-direction: row | row-reverse | column | column-reverse;
flex-wrap: nowrap | wrap | wrap-reverse;
flex-flow: <flex-direction> || <flex-wrap>;/*简写*/
justify-content: flex-start | flex-end | center | space-between | space-around;
align-items: flex-start | flex-end | center | baseline | stretch;
align-content: flex-start | flex-end | center | space-between | space-around | stretch;

项目的属性

order: <integer>;
flex-grow: <number>; /* default 0 */
flex-shrink: <number>; /* default 1 */
flex-basis: <length> | auto; /* default auto */
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]/*是flex-grow, flex-shrink 和 flex-basis的简写*/
align-self: auto | flex-start | flex-end | center | baseline | stretch;

实战

Flex 布局教程:实例篇 - 阮一峰的网络日志 (ruanyifeng.com)

网格(grid)

CSS Grid 网格布局教程 - 阮一峰的网络日志 (ruanyifeng.com)

容器属性

display: grid;
grid-template-columns:...;
grid-template-rows:repeat();
1. grid-template-columns 属性, grid-template-rows 属性

(1)repeat()

(2)auto-fill 关键字:自动填充

(3)fr 关键字:比例

.container {
  display: grid;
  grid-template-columns: 150px 1fr 2fr;
}

(4)minmax():产生一个长度范围,表示长度就在这个范围之中

grid-template-columns: 1fr 1fr minmax(100px, 1fr);

(5)auto 关键字

grid-template-columns: 100px auto 100px;

基本上等于该列单元格的最大宽度,除非单元格内容设置了min-width

(6)网格线的名称

使用方括号,指定每一根网格线的名字(允许同一根线有多个名字)

grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];
grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4];
2.grid-row-gap 属性, grid-column-gap 属性, grid-gap 属性

grid-row-gap属性设置行与行的间隔(行间距)。

grid-column-gap属性设置列与列的间隔(列间距)。

grid-gap属性是grid-column-gapgrid-row-gap的合并简写形式。grid-gap: <grid-row-gap> <grid-column-gap>;

如果省略第二个值,自动认为第二个值等于第一个值

.container {
  grid-row-gap: 20px;
  grid-column-gap: 20px;
  /* =   grid-gap: 20px 20px;*/
}

根据最新标准,上面三个属性名的grid-前缀已经删除,grid-column-gapgrid-row-gap写成column-gaprow-gapgrid-gap写成gap

3.grid-template-areas 属性

用于定义区域。该定义与后面的项目属性中的grid-area 联动

.container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
  grid-template-areas: 'a b c'
                       'd e f'
                       'g h i';
}

区域的命名会影响到网格线。

4.grid-auto-flow 属性

默认的放置顺序是"先行后列",这个顺序由grid-auto-flow属性决定,默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"。

grid-auto-flow: column;
5.justify-items 属性, align-items 属性, place-items 属性

justify-items属性设置单元格内容的水平位置(左中右),align-items属性设置单元格内容的垂直位置(上中下),place-items属性是align-items属性和justify-items属性的合并简写形式。place-items: <align-items> <justify-items>;

.container {
  justify-items: start;
  align-items: start;
    /*place-items: start end;*/
}
6.justify-content 属性, align-content 属性, place-content 属性

justify-content属性是整个内容区域在容器里面的水平位置(左中右),align-content属性是整个内容区域的垂直位置(上中下)。place-content属性是align-content属性和justify-content属性的合并简写形式。

.container {
  justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
  align-content: start | end | center | stretch | space-around | space-between | space-evenly;  
}
7.grid-auto-columns 属性, grid-auto-rows 属性

用来设置,浏览器自动创建的多余网格的列宽和行高。

8.grid-template 属性, grid 属性

grid-template属性是grid-template-columnsgrid-template-rowsgrid-template-areas这三个属性的合并简写形式。

grid属性是grid-template-rowsgrid-template-columnsgrid-template-areasgrid-auto-rowsgrid-auto-columnsgrid-auto-flow这六个属性的合并简写形式。

项目属性

1.grid-column-start 属性, grid-column-end 属性, grid-row-start 属性, grid-row-end 属性
  • grid-column-start属性:左边框所在的垂直网格线
  • grid-column-end属性:右边框所在的垂直网格线
  • grid-row-start属性:上边框所在的水平网格线
  • grid-row-end属性:下边框所在的水平网格线
.item-1 {
  grid-column-start: 2;
  grid-column-end: 4;
}
/*第二条线出发,第四条结束*/

grid-auto-flow属性决定排列,columnrow densecolumn dense也生效,这四个属性的值,除了指定为第几个网格线,还可以指定为网格线的名字。

span关键字,表示"跨越",即左右边框(上下边框)之间跨越多少个网格。

.item-1 {
  grid-column-start: span 2;
}
2. grid-column 属性, grid-row 属性

grid-column属性是grid-column-startgrid-column-end的合并简写形式,grid-row属性是grid-row-start属性和grid-row-end的合并简写形式。

.item {
  grid-column: <start-line> / <end-line>;
  grid-row: <start-line> / <end-line>;
}
.item-1 {
  grid-column: 1 / 3;
  grid-row: 1 / 2;
}
/* 等同于 */
.item-1 {
  grid-column-start: 1;
  grid-column-end: 3;
  grid-row-start: 1;
  grid-row-end: 2;
}
/* 等同于 */
.item-1 {
  background: #b03532;
  grid-column: 1 / span 2;
  grid-row: 1 / span 2;
}

斜杠以及后面的部分可以省略,默认跨越一个网格。

3.grid-area 属性

grid-area属性指定项目放在哪一个区域。

grid-area属性还可用作grid-row-startgrid-column-startgrid-row-endgrid-column-end的合并简写形式,直接指定项目的位置。

.item {
  grid-area: <row-start> / <column-start> / <row-end> / <column-end>;
}
4.justify-self 属性, align-self 属性, place-self 属性

justify-self属性设置单元格内容的水平位置(左中右),跟justify-items属性的用法完全一致,但只作用于单个项目。

align-self属性设置单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,也是只作用于单个项目。

place-self属性是align-self属性和justify-self属性的合并简写形式。

实例

CSS布局方案汇总(30个实例图文并茂) - 掘金 (juejin.cn)

转载请注明出处或者链接地址:https://www.qianduange.cn//article/4344.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!