这是我参与「第四届青训营 」笔记创作活动的的第1天
HTML部分
📌 图形界面下人机交流的问题。
页面要求
- 功能
- 美观
- 无障碍
- 性能
- 安全
- 兼容:PC、mobile
- 用户体验
DOM Tree
html
-
lang属性:设置页面语言
-
head
-
title:页面标题
-
meta:元数据(name-content)
- charset:设置字符编码
- description:添加作者和描述优化SEO结果、)
-
link
- icon
- css
-
script(optional)
defer告诉浏览器在解析完成 HTML 后再加载 JavaScript
-
-
body
HTML语法
- 不区分大小写!
- 空标签可以不闭合,如input、meta
- 属性值推荐用双引号包裹
- 某些属性值可以省略,如required、readonly
List
ol(order list):有序列表
ul(un-order list):无序列表
dl:定义列表
- dt:defination title
- dd:defitation description
Link
- href:跳转地址
- target=“_blank”:新窗口打开
Input
引用
- blockquote:长引用
- cite:段引用
代码
- pre:保留html原始键入
- code:代码
📌 HTML → HTML5:语义化
语义化的好处?
- 代码可读性
- 可维护性
- 搜索引擎优化(SEO)
- 提升无障碍性
Q:服务端渲染(SSR)优化
A:bundle.js在服务器本地加载
Q:组件化怎么做SEO
Q:SEO优化场景
内外链接
提升搜索权限
Q:怪异模式
box-sizing不同:
- 标准模式box-sizing: content-box;
- 怪异模式box-sizing: border-box;
CSS
基础
Work Flow
Selector
-
通配选择器
-
标签选择器
-
id选择器
-
属性选择器(可使用正则)
-
伪类选择器
- 状态伪类(鼠标聚焦?按钮激活?)
- 结构伪类
Combinators
- 直接组合(AB):同时满足
- 后代组合(A B):选中A的子孙B
- 亲子组合(A>B):选中A的子元素B
- 兄弟选择器(A~B):选中A后与A同级的B
- 相邻选择器(A+B):选中紧邻A的B
Specificity
id > (pseudo)class > label
颜色表示
- 16进制-rgb
- rgba
- hsla(适用于颜色明亮变化)
font-family
写多个字体,避免多种设备不存在该字体,提高兼容性。
在字体族属性最后一定记得加通用字体族。
英文字符的字体放在前面。因为中文字体中包含英文字符。
Web Fonts
使用服务器上的字体。可能会有性能和跨域问题。
(转)CSS3 @font-face - _成飞 - 博客园 (cnblogs.com)
@font-face {
font-family: f1;
src: url("//s2.ssl.qhimg.com/static/ff00cb8151eeecd2.woff2") format("woff2");
}
font属性
font-size: [style] [weight] size[/height] family
spacing
- letter-spacing:字间距(eng)
- word-spacing:词间距(eng/zh)
white-space
- normal:正常
- nowrap:不换行
- pre:源形式
- pre-wrap:保留
- pre-line:保留换行,没有空格
Q:CSS预处理?
Q:CSS如何挂载到DOM Tree中?
Q:CSS Module?
作用域问题-隔离
加父子选择器
深入
继承 inherit
css中与文字相关的一般都可继承,与盒子模型有关的一般不可继承。
显示继承
* {
box-sizing: inherit;
}
html {
box-sizing: border-box;
}
.some-widget {
box-sizing: content-box;
}
初始值 initial
CSS 中,每个属性都有一个初始值
resolving:分析css context可以计算出具体结果的。
formatting:需要知道实际环境才可计算出结果。
box-sizing属性
border-box:
content-box: 宽高等于content的宽高
行级排版上下文(IFC)
-
只包含行级盒子的容器会创建一个IFC
-
IFC 内的排版规则
- 盒子在一行内水平摆放
- 一行放不下时,换行显示
- text-align 决定一行内盒子的水平对齐
- vertical-align 决定一个盒子在行内的垂直对齐
- 避开浮动(float)元素*
块级排版上下文(BFC)
-
某些容器会创建一个BFC
- 根元素
- 浮动、绝对定位、inline-block
- Flex子项和Grid子项
- overflow 值不是 visible 的块盒
- display: flow-root;
-
BFC 内的排版规则
- 盒子从上到下摆放
- 垂直 margin 合并
- BFC 内盒子的 margin 不会与外面的合并
- BFC 不会和浮动元素重叠
块级元素和行级元素在同一个父元素中:
css渲染引擎生成匿名块元素包裹行级元素。
Q:飞书水印的实现
遮罩层
o.s. 使用一个div,设置宽度和高度为100vw和100vh,采用position: fix;布局。然后设置div为透明,使用background-image重复排版水印。
Q:原子化CSS
e.g. tailwindcss
(10条消息) 重新构想原子化 CSS_若川视野的博客-CSDN博客
Q:响应式布局
- 纯mobild APP
- 多端响应:FlexBox、Grid
Q:行盒
IFC中每一行有一个行盒,包含一个或多个行级元素的行块
vertical-align:每一个行盒会有一个baseline,设置该属性会改变该行盒内行级元素在垂直方向相对baseline的对齐
Flex Box
-
一种新的排版上下文
-
它可以控制子级盒子的:
-
摆放的流向 ( → ← ↑ ↓ ):flex-direction
-
摆放顺序:order
-
盒子宽度和高度:
-
水平和垂直方向的对齐:主轴justify-content,侧轴align-items
- align-item默认stretch
- baseline以每个flex子项内部的baseline来对齐
-
是否允许折行:align-self
-
间距:gap
-
Flexibility:可以设置子项的弹性
- flex-grow:有剩余空间时的伸展能力
- flex-shrink:容器空间不足时收缩的能力
- flex-basis:没有伸展或收缩时的基础长度
-
缩写
-
Grid
- 先画格子,再布局
- grid-template划分格子
- grid line网格线
- grid-area:grid-row-start/grid-column-start/grid-row-end/grid-column-end
Float
- 关注本身的作用:文字环绕的效果
Position
Q:CSS书籍推荐
- CSS设计思想:W3C设计文档
- CSS高级应用:CSS secret
Q:匿名块级元素
见例子,本身不存在,只是在css排版引擎中的一个概念。并没有生成一个真实的bfc,所以依旧保持ifc的特性。
Q:BFC解决塌陷问题
ifc中较高元素浮动导致坍塌
Q:重绘、重排
影响页面layout的变化会导致页面元素重排。
解决:分层(layer),使用translate。依靠GPU加速
Q:获取offset-top属性的时候引起页面重排
浏览器底层实现。没有缓存相关信息,需要重新计算。