这是我参与「第四届青训营 」笔记创作活动的的第1天
前端与HTML
什么是前端?
- 解决GUI人机交互问题
- 跨终端
-
- PC/移动浏览器
- 客户端/小程序
- VR/AR等
- Web技术栈(HTML+CSS+JS,http网络协议等)
前端工程师就是使用web技术栈解决多端图形用户交互问题
HTML(内容)
CSS(样式)
Javascript(行为)
前端应该关注哪些方面的问题?
- 功能
- 美观
- 无障碍
- 安全
- 性能
- 兼容性
前端常用的开发环境
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
</body>
</html>
html的主体结构
DOM树
基本语法:
- 标签和属性不区分大小写。推荐小写(为了与框架中的组件区分开来)
- 空标签可以不闭合,比如input,meta
- 属性值推荐使用双引号包裹
- 某些属性值可以省略,比如required,readonly
datalist标签能够在用户输入时给一个已有的提示
<datalist>
<option>可以提示的内容</option>
<option></option>
<option></option>
</datalist>
内容划分
语义化:
- html中的元素、属性及属性值都拥有某些含义
- 开发者应该遵循语义来编写html
-
- 有序列表用ol;无序用ul
- lang属性表示内容所受用的语言
HTML是传达内容的,而不是样式
理解CSS
CSS用来定义页面元素的样式
基本语法:
CSS的三种使用方法
1、外链
<link rel="stylesheet" href="/assets/style.css">
2、嵌入
<style>
li{ margin: 0; list-style: none}
p{margin: lem 0;}
</style>
3、内联
<p style="margin:lem 0">Example Content</p>
CSS是如何工作的:
CSS的选择器有
- 标签选择器
- 通配选择器
- id选择器
- 类选择器
- 属性选择器
- 伪类选择器
-
- 不基于标签和属性元素定位
- 几种伪类
-
- 状态伪类
- 结构性伪类
颜色:
- RGB
- HSL
- 颜色名字
通用字体族:
font-size:
- 关键字
-
- small,medium,large
- 长度
-
- px,em
- 百分数
-
- 相对于父元素的大小
属性继承:某些属性会自动继承其父元素的计算值,除非显示指定一个值
不可继承的属性,可以使用inherit关键字值来继承父元素的属性(显示继承)
CSS求值过程:
Layout布局:
- 确定内容的大小和为位置的算法
- 依据元素、容器、兄弟节点和内容等信息
布局相关技术:
常规流(行级、块级、表格布局等)、
浮动、
绝对定位
盒模型:
CSS实现三角形,将内容区设置为0,其他三个边设置成无
块级:不和其他盒子并列摆放,适用所有的盒模型
行级:和其他行级盒子一起放在一行或拆开成多行,盒模型中的width、height不适用
行级排版上下文
- Inline Formatting Context(IFC)
- 只包含行级盒子的容器会创建一个FC
- IFC内的排版规则
-
- 盒子在一行内水平摆放
- 一行放不下时,换行显示
- text-align决定一行内盒子的水平对齐
- vertical-align决定一个盒子在行内的垂直对齐
- 避开浮动(float)元素*
块级排版上下文
- Block Formatting Context(BFC)
- 某些容器会创建一个BFC
-
- 根元素
- 浮动、绝对定位、inline-block
- Flex子项和Grid子项
- overflow值不是visible的块盒
- display:flow-root;
BFC内的排版规则
- 盒子从上到下摆放
- 垂直margin合并
- BFC内盒子的margin不会与外面的合并
- BFC不会和浮动元素重叠
Flex Box
- 一种新的排版上下文
- 它可以控制子级盒子的:
-
- 摆放方向
- 摆放顺序
- 盒子宽度和高度
- 水平和垂直方向的对齐
- 是否允许折行