17丨HTML&CSS:伪元素是怎么回事儿?

选择器的组合在 CSS 规则中,选择器部分是一个选择器列表。 选择器列表是用逗号分隔的复杂选择器序列;复杂选择器则是用空格、大于号、波浪线等符号连接的复合选择器;复合选择器则是连写的简单选择器组合。 根据选择器列表的语法,选择器的连接方式可以理解为像四则运算一样有优先级。 第一优先级 无连接符号 第二优先级 “空格” “~” “+” “>” “|...

Read More

16丨HTML&CSS:CSS 选择器

选择器的基本意义是:根据一些特征,选中元素树上的一批元素。 我们把选择器的结构分一下类,那么由简单到复杂可以分成以下几种。 简单选择器:针对某一特征判断是否选中元素。 复合选择器:连续写在一起的简单选择器,针对元素自身特征选择单个元素。 复杂选择器:由“(空格)”“ >”“ ~”“ +”“ ||”等符号连接的复合选择器,根据父元素或者前序元素检查...

Read More

15丨HTML&CSS:HTML元信息类标签

我们可以先来了解一下什么是元信息类标签。所谓元信息,是指描述自身的信息,元信息类标签,就是 HTML 用于描述文档自身的一类标签,它们通常出现在 head 标签中,一般都不会在页面被显示出来(与此相对,其它标签,如语义类标签,描述的是业务)。 元信息多数情况下是给浏览器、搜索引擎等机器阅读的,有时候这些信息会在页面之外显示给用户,有时候则不会。 head...

Read More

14丨HTML&CSS:CSS语法

CSS 是前端工程师几乎每天都要用的技术了,不过 CSS 的学习资料却是最糟糕的。 来看 W3C 提供的标准文档https://www.w3.org/TR/?title=csshttps://www.w3.org/TR/css-syntax-3/ 我们拿到这份标准可以看到,去除空格、HTML 注释等无效信息,CSS 的顶层样式表由两种规则组成的规则列表构...

Read More

13丨HTML&CSS:div和span不是够用了吗?

在讲语义之前,我们来说说为什么要用语义。 现在我们很多的前端工程师写起代码来,多数都不用复杂的语义标签, 只靠 div 和 span 就能走天下了。 这样做行不行呢?毫无疑问答案是行。那这样做好不好呢?按照正确的套路,我应该说不好,但是在很多情况下,答案其实是好。 这是因为在现代互联网产品里,HTML 用于描述“软件界面”多过于“富文本”,而软件界面里的东西...

Read More

12丨新加入的**运算符

在一些通用的计算机语言设计理论中,能够出现在赋值表达式右边的叫做:右值表达式(RightHandSideExpression),而在 JavaScript 标准中,规定了在等号右边表达式叫做条件表达式(ConditionalExpression),不过,在 JavaScript 标准中,从未出现过右值表达式字样。 JavaScript 标准也规定了左值表达...

Read More

11丨JavaScript-什么是表达式语句

表达式语句实际上就是一个表达式,它是由运算符连接变量或者直接量构成的(关于直接量我们在下一节详细讲解)。一般来说,我们的表达式语句要么是函数调用,要么是赋值,要么是自增、自减,否则表达式计算的结果没有任何意义。 PrimaryExpression 主要表达式首先我们来给你讲解一下表达式的原子项:Primary Expression。它是表达式的最小单位,...

Read More

10丨JavaScript-语句

概览 普通语句: 声明型语句: 声明型语句跟普通语句最大区别就是声明型语句响应预处理过程,普通语句只有执行过程。 普通语句语句块我们可以这样去简单理解,语句块就是一对大括号。 12345{ var x, y; x = 10; y = 20;} 空语句空语句就是一个独立的分号,实际上没什么大用。我们来看一下: 1;...

Read More

09丨JavaScript-在script标签写export为什么会抛错?

3## 脚本和模块 首先,JavaScript 有两种源文件,一种叫做脚本,一种叫做模块。这个区分是在 ES6 引入了模块机制开始的,在 ES5 和之前的版本中,就只有一种源文件类型(就只有脚本)。 脚本是可以由浏览器或者 node 环境引入执行的,而模块只能由 JavaScript 代码用 import 引入执行。 从概念上,我们可以认为脚本具有主动性(调...

Read More

08丨JavaScript-到底要不要写分号呢?

自动插入分号规则自动插入分号规则其实独立于所有的语法产生式定义,它的规则说起来非常简单,只有三条。 要有换行符,且下一个符号是不符合语法的,那么就尝试插入分号。 有换行符,且语法中规定此处不能有换行符,那么就自动插入分号。 源代码结束处,不能形成完整的脚本或者模块结构,那么就自动插入分号。 举两个例子🌰: 1234let a = 1void funct...

Read More