We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近正在准备找工作,作为野路子前端个人认为很有必要梳理一下前端相关基础知识,所以分三大块HTML、CSS和JavaScript来进行整理记录。 其中很多知识点并不是一两句话就能聊清楚的,所以很多内容都是粗鄙浅显的,更加深入的讨论需要单独开坑,所以引入了其他大牛整理好的相关内容以供翻阅参考。 切记不可急于求成,也不能妄自菲薄。
主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。 渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS引擎则:解析和执行javascript来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于单指渲染引擎。
常见的浏览器内核可以分这四种:Trident、Gecko、Webkit、Blink。
Trident:IE内核。 Gecko: Mozilla FireFox(火狐浏览器)使用该内核,开源内核。 Webkit:Safari 使用该内核,拥有清晰的源码结构和极快的渲染速度。 Blink:使用的内核被命名为 chromium,chromium fork 自开源引擎 webkit,却把 WebKit 的代码优化了很多。谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度。而Blink 其实是 WebKit 的分支,并且在不断的优化。
浏览器内核 各主流浏览器内核介绍
Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页。 标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。
Quirks (包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。 在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
HTML5 不基于 SGML,因此不需要对DTD(文档类型定义)进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
SGML (Standard Generalized Markup Language)标准通用标记语言 SGML是一种指示文档标准语言或标记集的标准。这种说明本身就是一种文档标准定义。
而HTML4.01基于SGML,所以需要对DTD(文档类型定义)进行引用,才能告知浏览器文档所使用的文档类型。
首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
<br> <hr> <img> <input> <link> <meta>
<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
link标签:<link> 标签定义文档与外部资源的关系,最常见的用途是链接样式表。 @import:@import CSS@规则,用于从其他样式表导入样式规则。
<link>
@import CSS@规则
区别:
link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;
总体来说:link优于@import
HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
移除的元素:
全局属性是所有HTML元素共有的属性; 它们可以用于所有元素,尽管属性可能对某些元素没有影响。
常见的有:
支持HTML5新标签: IE8/IE7/IE6支持通过document.createElement方法产生的标签, 可以利用这一特性让这些浏览器支持HTML5新标签, 浏览器支持新标签后,还需要添加标签默认的样式。
当然也可以直接使用成熟的框架、比如html5shiv;
如何区分HTML5: DOCTYPE声明\新增的结构元素\功能元素
*****
用正确的标签做正确的事情。
html5语义化标签使用规范
h5离线存储功能: 离线存储可以将站点的一些文件存储在本地,在没有网络的时候还是可以访问到以缓存的对应的站点页面,其中这些文件可以包括html,js,css,img等等文件,但其实即使在有网络的时候,浏览器也会优先使用已离线存储的文件,返回一个200(from cache)头。
在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。
原理:HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。
如何使用: 1、页面头部像下面一样加入一个manifest的属性; 2、在cache.manifest文件的编写离线存储的资源;
CACHE MANIFEST #v0.11 CACHE: js/app.js css/style.css NETWORK: resourse/logo.png FALLBACK: / /offline.html
3、在离线状态时,操作window.applicationCache进行需求实现。
离线存储资源管理:需要有一个缓存文件清单,这个文件是一个manifest后缀名的文件。
h5的离线存储 HTML5 离线缓存-manifest简介
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。
但是好像有很多黑魔法,只是没有用到过。。。
Iframe 有什么好处,有什么坏处?国内还有哪些知名网站仍用Iframe,为什么?有哪些原来用的现在抛弃了?又是为什么?
label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。
<label for="Name">Number:</label> <input type=“text“name="Name" id="Name"/> <label>Date:<input type="text" name="B"/></label>
Number: <input type=“text“name="Name" id="Name"/>
Date:
autocomplete 属性规定表单是否应该启用自动完成功能。 自动完成允许浏览器预测对字段的输入。当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。
给不想要提示的 form 或某个 input 设置为 autocomplete=off。
HTML 5 form autocomplete 属性
WebSocket、SharedWorker; 也可以调用localstorge、cookies等本地存储方式;
localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信;
页面A发送事件
function sendMsg(text) { window.localStorage.setItem('msg',text); }
页面B接收事件
window.addEventListener('storage', function (evt) { if(evt.key==='msg') console.log(evt.newValue); });
注意quirks:Safari 在无痕模式下设置localstorge值时会抛出 QuotaExceededError 的异常;
Document.visibilityState (只读属性), 返回document的可见性, 即当前可见元素的上下文环境. 由此可以知道当前文档(即为页面)是在背后, 或是不可见的隐藏的标签页,或者(正在)预渲染.可用的值如下:
当此属性的值改变时, 会递交 visibilitychange 事件给Document。
通过 visibilityState 的值检测页面当前是否可见,以及打开网页的时间等; 在页面被切换到其他后台进程的时候,自动暂停音乐或视频的播放;
// css .disc{ width:100px; height:100px; background-color:dimgray; border-radius: 50%; cursor: pointer; position: absolute; left:150px; top:150px; line-height: 100px; text-align: center; color: white; } // html <div class="disc">我是圆形</div>
3.纯js实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等
// 假设圆心为(100,100),半径为50,在圆内点击弹出相应的信息,在圆外显示不在圆内的信息 document.onclick = function(e) { var r = 50; var x1 = 100; var y1 = 100; var x2= e.clientX; var y2= e.clientY; var distance = Math.abs(Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2))); if (distance <= 50) alert("Ok!"); }
<div style="height:1px;overflow:hidden;background:red"></div>
区分用户是计算机还是人的公共全自动程序。可以防止恶意破解密码、刷票、论坛灌水; 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。
title属性没有明确意义只表示是个标题,用于为元素提供附加的advisory information, H1则表示层次明确的标题,对页面信息的抓取也有很大的影响;
strong是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:<strong>会重读,而<B>是展示强调内容。
<strong>
<B>
i内容展示为斜体,em表示强调的文本;
Physical Style Elements -- 自然样式标签 b, i, u, s, pre Semantic Style Elements -- 语义样式标签 strong, em, ins, del, code 应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。
参考文章: markyun-FEDQ
The text was updated successfully, but these errors were encountered:
No branches or pull requests
浏览器内核
主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。
JS引擎则:解析和执行javascript来实现网页的动态效果。
最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于单指渲染引擎。
常见的浏览器内核
常见的浏览器内核可以分这四种:Trident、Gecko、Webkit、Blink。
Trident:IE内核。
Gecko: Mozilla FireFox(火狐浏览器)使用该内核,开源内核。
Webkit:Safari 使用该内核,拥有清晰的源码结构和极快的渲染速度。
Blink:使用的内核被命名为 chromium,chromium fork 自开源引擎 webkit,却把 WebKit 的代码优化了很多。谷歌公司还研发了自己的 Javascript 引擎,V8,极大地提高了 Javascript 的运算速度。而Blink 其实是 WebKit 的分支,并且在不断的优化。
浏览器内核
各主流浏览器内核介绍
Doctype作用
声明位于位于HTML文档中的第一行,处于 `` 标签之前。告知浏览器的解析器用什么**文档标准**解析这个文档。DOCTYPE不存在或格式不正确会导致文档以**兼容模式**呈现。文档标准有那些?
Standards (标准)模式(也就是严格呈现模式)用于呈现遵循最新标准的网页。
标准模式的排版 和JS运作模式都是以该浏览器支持的最高标准运行。
Quirks (包容)模式(也就是松散呈现模式或者兼容模式)用于呈现为传统浏览器而设计的网页。
在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。
HTML5 为什么只需要写 ?
HTML5 不基于 SGML,因此不需要对DTD(文档类型定义)进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
而HTML4.01基于SGML,所以需要对DTD(文档类型定义)进行引用,才能告知浏览器文档所使用的文档类型。

html元素,行内元素有哪些?块级元素有哪些? 空(void)元素有那些?
首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。
<br> <hr> <img> <input> <link> <meta>
鲜为人知的是:
<area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr>
页面导入样式link和@import区别
link标签:
<link>
标签定义文档与外部资源的关系,最常见的用途是链接样式表。@import:
@import CSS@规则
,用于从其他样式表导入样式规则。区别:
link属于XHTML标签,除了加载CSS外,还能用于定义RSS, 定义rel连接属性等作用;而@import是CSS提供的,只能用于加载CSS;
页面被加载的时,link会同时被加载,而@import引用的CSS会等到页面被加载完再加载;
import是CSS2.1 提出的,只在IE5以上才能被识别,而link是XHTML标签,无兼容问题;
总体来说:link优于@import
html5有哪些新特性、移除了那些元素?
HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。
移除的元素:
HTML全局属性(global attribute)有哪些
全局属性是所有HTML元素共有的属性; 它们可以用于所有元素,尽管属性可能对某些元素没有影响。
常见的有:
如何处理HTML5新标签的浏览器兼容问题?
支持HTML5新标签:
IE8/IE7/IE6支持通过document.createElement方法产生的标签, 可以利用这一特性让这些浏览器支持HTML5新标签, 浏览器支持新标签后,还需要添加标签默认的样式。
当然也可以直接使用成熟的框架、比如html5shiv;
如何区分 HTML 和 HTML5?
如何区分HTML5: DOCTYPE声明\新增的结构元素\功能元素
对HTML语义化的理解?
*****
用正确的标签做正确的事情。
html5语义化标签使用规范
浏览器怎么对h5的离线存储资源进行管理和加载的?
h5离线存储功能:
离线存储可以将站点的一些文件存储在本地,在没有网络的时候还是可以访问到以缓存的对应的站点页面,其中这些文件可以包括html,js,css,img等等文件,但其实即使在有网络的时候,浏览器也会优先使用已离线存储的文件,返回一个200(from cache)头。
在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。
如何使用:
1、页面头部像下面一样加入一个manifest的属性;
2、在cache.manifest文件的编写离线存储的资源;
3、在离线状态时,操作window.applicationCache进行需求实现。
离线存储资源管理:需要有一个缓存文件清单,这个文件是一个manifest后缀名的文件。

h5的离线存储
HTML5 离线缓存-manifest简介
iframe有那些缺点?
使用iframe之前需要考虑这两个缺点。如果需要使用iframe,最好是通过javascript动态给iframe添加src属性值,这样可以绕开以上两个问题。
但是好像有很多黑魔法,只是没有用到过。。。
Iframe 有什么好处,有什么坏处?国内还有哪些知名网站仍用Iframe,为什么?有哪些原来用的现在抛弃了?又是为什么?
Label的作用是什么?是怎么用的?
label标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。
Number:
<input type=“text“name="Name" id="Name"/>
Date:
HTML5的form如何关闭自动完成功能?
autocomplete 属性规定表单是否应该启用自动完成功能。
自动完成允许浏览器预测对字段的输入。当用户在字段开始键入时,浏览器基于之前键入过的值,应该显示出在字段中填写的选项。
给不想要提示的 form 或某个 input 设置为 autocomplete=off。
HTML 5 form autocomplete 属性
如何实现浏览器内多个标签页之间的通信?
WebSocket、SharedWorker;
也可以调用localstorge、cookies等本地存储方式;
localstorge另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信;
页面A发送事件
页面B接收事件
注意quirks:Safari 在无痕模式下设置localstorge值时会抛出 QuotaExceededError 的异常;
页面可见性(Page Visibility API) 可以有哪些用途?
Document.visibilityState (只读属性), 返回document的可见性, 即当前可见元素的上下文环境. 由此可以知道当前文档(即为页面)是在背后, 或是不可见的隐藏的标签页,或者(正在)预渲染.可用的值如下:
当此属性的值改变时, 会递交 visibilitychange 事件给Document。
通过 visibilityState 的值检测页面当前是否可见,以及打开网页的时间等;
在页面被切换到其他后台进程的时候,自动暂停音乐或视频的播放;
如何在页面上实现一个圆形的可点击区域?
3.纯js实现 需要求一个点在不在圆上简单算法、获取鼠标坐标等等
实现不使用 border 画出1px高的线,在不同浏览器的标准模式与怪异模式下都能保持一致的效果。
网页验证码是干嘛的,是为了解决什么安全问题?
区分用户是计算机还是人的公共全自动程序。可以防止恶意破解密码、刷票、论坛灌水;
有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。
title与h1的区别、b与strong的区别、i与em的区别?
title属性没有明确意义只表示是个标题,用于为元素提供附加的advisory information,
H1则表示层次明确的标题,对页面信息的抓取也有很大的影响;
strong是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:
<strong>
会重读,而<B>
是展示强调内容。i内容展示为斜体,em表示强调的文本;
Physical Style Elements -- 自然样式标签
b, i, u, s, pre
Semantic Style Elements -- 语义样式标签
strong, em, ins, del, code
应该准确使用语义样式标签, 但不能滥用, 如果不能确定时首选使用自然样式标签。
DOM target 属性
前端需要注意哪些SEO
参考文章:
markyun-FEDQ
The text was updated successfully, but these errors were encountered: