前端语言的基本能力
html:页面的基石,完成文本到页面的转化过程->骨骼
css:给元素增加样式->皮囊
js:灵活,增加交互体验->肌肉
css
选择器:
- #Class Selector
类选择器
.intro{
...
}
- #*
全选择器 All element
*{
}
- 伪元素选择器
在页面中,有时候同一个元素在不同动作下有不同的样式。比如链接在没有点击的时候有个样式,在鼠标放上去(hover)有另外的样式,还有在点击完成以后又会又一个样式。这几种情况下这个链接的标签并没有变化,有变化的只是它的状态,这时候就可以里用伪类来实现这个需求。
在浏览器中,伪类的出现是为了向某些选择器添加特殊的效果或限制。
伪类是在正常的选择器后面加上伪类名称,中间用冒号(:)隔开。
a:{
text-decoration: none;
}
a:hover{
text-decoration:underline;
}//希望超链接在鼠标放上去之后有一个下划线
常见的标记元素的伪类:
:link 标识未被访问过的链接
:visited 标识被访问过链接
:hover 鼠标移入
:active 表示选中
:focus 选取获得焦点的元素
具有筛选功能的伪类:
:empty 选取没有子元素的伪类
:checked 选取勾选状态下的input元素,只对radio和checkbox生效
:disabled 选取禁用的的表单元素
:first-child 选取当前选择器下的第一个元素
:last-child 选取当前选择器下的最后一个元素
:nth-child(an+b),选取指定位置的元素。:
这个伪类是有参数的,参数可以支持 an+b 的形式,这里 a 和 b 都是可变的,n 从0起。使用这个伪类可以做到选择第几个,或者选择序号符合 an+b 的所有元素。比如使用 li:nth-child(2n+1),就可以选中 li 元素中序号是2的整数倍加1的所有元素,也就是第1、3、5、7、9、2n+1个 li 元素。
:nth-last-child(an+b),这个伪类和 nth-child 相似,只不过在计数的时候,这个伪类是从后往前计数。
:only-child,选取唯一子元素。如果一个元素的父元素只有它一个子元素,这个伪类就会生效。如果一个元素还有兄弟元素,这个伪类就不会对它生效
:only-of-type,选取唯一的某个类型的元素。如果一个元素的父元素里只有它一个当前类型的元素,这个伪类就会生效。这个伪类允许父元素里有其他元素,只要不和自己一样就可以。
伪元素选择器:
::before 在某个元素之前插入一些内容
::after 在某个元素之后插入一些内容
::selection 对光标选中的元素添加样式
-
元素选择器
p{ ... } -
属性选择器
li[class] { color: red; background: yellow; }//选择有 class 属性(值不限)的所有 li 元素,使其文本为 red,背景色为 yellow 。li[class="third done"] { color: red; background: yellow; } //[attr = val] 要求这种选择格式要求必须与“属性值”完全匹配,不多不少,不能有任何形式的简写。 // [attr ~= val] 用于“根据部分属性值”来选择元素 ,可以少 比如只有 thirdli[class^="se"] { color: red; background: yellow; }//选择 class 整个属性值以 se 开头的所有 li 元素li[class$="ne"] { color: red; background: yellow; }//选择 class 整个属性值以 ne 结尾的所有 li 元素li[class*="ir"] { color: red; background: yellow; }//选择 class 属性值中包含字串 ir 的所有 li 元素
JavaScript
- 借鉴c语言的基本语法
- 借鉴java的数据类型和内存管理
- 将函数提到first class
- 早期使用原型
js基本类型:String,Number,Boolean,Null,Undefined,Symbol
Object(Array,Function)。
let const 块级作用域
function定义:
使用function做关键字进行定义
function fName (param1,param2){
...
return
}
前端语言的协调配合
浏览器一般包含两种引擎:js引擎和渲染引擎
http=>构建dom树=>计算css树=>排版=>渲染合成=>绘制页面
EVENT LOOP
Event Loop 是单线程的JavaScript 在处理异步事件进行的一种循环过程。
具体来讲,对于异步事件,会在事件队列中挂起,等主线程空闲了再执行事件队列中的事件。如此循环往复。
避免了阻塞,保证程序的响应性和流畅性。
宏任务和微任务的执行顺序:总方针是先同步再异步,异步中先微任务,在宏任务
你不知道的H5
3.1 HTML DTD
html是一门标记语言
3.2 HTML 全部标签分类
不再是单纯的纯文本标记语言,cavans video audio 加入了许多语义化标签,使得网页层次更加清晰。
拓展了表单组件,表单增强 支持radio 下拉框 颜色时间选择器
3.3 HTML5存储
Cookie 4kb 过期时间设置
Local Storage 10mb 从不过期
Session Storage 关闭时过期
IndexedDb (50MB)
3.4 HTML5 二进制
Blob ArrayBuffer等
3.5 Web Worker
是一种全双工通信方式
拓展交流
web风靡的原因
-
对用户友好
- 无需安装
- 无需强大硬件
- 升级方便
- 容易传播
-
对开发者友好
- 丰富的api
- 心智模型成熟
- 开发调试简单
- 跨平台
交互范式
-
MVC
- View:处理界面
- Model:维护数据层
- Controller:处理用户逻辑
-
MVP
- 把所有操作内置到Presenter中
-
MVVM
- 由微软提出,由vue发扬光大