1. DOCTYPE有什么作用?标准模式与混杂模式如何区分?它们有何意义?
DOCTYPE 是 document type (文档类型的)的简写。
作用:
告诉浏览器通过哪种规范(文档类型定义,DTD) 解析文档 (如HTML或XHTML规范);
DTD 是一系列的语法规则,用来定义 XML 或 (X)HTML 的文件类型。
浏览器会使用它来判断文档类型, 决定使用何种协议来解析,以及切换浏览器模式。
浏览器模式—标准模式(standards mode):浏览器根据W3C标准来渲染页面。
浏览器模式—混杂模式(quirks mode):浏览器采用更宽松、向后兼容方式渲染页面。
混杂模式下,浏览器会模仿旧浏览器的行为,比如IE6,在此基础上兼容新的标准特性。
混杂模式又称兼容模式、怪异模式等。
浏览器根据不同的 DOCTYPE 选择不同的渲染方法就叫做 DOCTYPE 切换。
DOCTYPE切换就是用来识别和兼容旧网页的。
!DOCTYPE html 的重要性:声明文档的解析类型(document.compatMode),
避免浏览器的怪异模式。
2. image 标签上title属性与alt属性的区别是什么?
title
alt
3. 请说说你对标签语义化的理解?
4. 简述一下 src 与 href 的区别
src
href
5. 页面导入样式时,使用link和@import有什么区别?
区别:
从属关系区别:
link 是HTML提供的标签,不仅可加载 CSS 文件,还可以定义 RSS、rel 连接属性等。
@import 是 CSS 提供的语法规则,只有导入样式表的作用。
加载顺序区别:
link 引用CSS时候,页面载入时同时加载。
@import 引入的 CSS需要在页面完全加载完毕后被加载。
兼容性问题:
link 标签作为 HTML 元素,不存在兼容性问题。
@import 是在css2.1提出来的,低版本的浏览器不支持。
DOM 可控性区别:
link 支持使用 javascript 控制去改变样式。
@import 不支持 javascript 方式插入样式。
权重区别:
link 方式的样式的权重高于 @import 的权重
6. iframe框架有那些优缺点?
优点:
缺点:
7. 介绍一下对浏览器内核的理解
8. 常见的浏览器内核有哪些?
Trident内核:IE,360,搜过浏览器;
Gecko内核:Netscape6及以上版本,
Presto内核:Opera
Blink内核:Opera;
Webkit内核:Safari,Chrome
9. 对 WEB 标准以及 W3C 的理解与认识
10. xhtml 和 html 有什么区别?
11. 清除浮动的几种方式,各自的优缺点?
1. CSS3实现圆角(border-radius),阴影(box-shadow),
2. 对文字加特效(text-shadow、),线性渐变(gradient),旋转(transform)
3. transform:rotate(9deg) scale(0.85,0.90) translate(0px,-30px) skew(-9deg,0deg);// 旋转,缩放,定位,倾斜
4. 增加了更多的CSS选择器 多背景 rgba
5. 在CSS3中唯一引入的伪类是 ::selection.
6. 媒体查询,多栏布局
7. border-image
CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式。
1)盒模型: 内容(content)、填充(padding)、边界(margin)、 边框(border)
2)有两种, IE 盒子模型、标准 W3C 盒子模型;IE的content部分包含了 border 和 padding;
折叠结果遵循下列计算规则:
同:rgba()和 opacity 都能实现透明效果
异:
static: 无特殊定位,对象遵循 HTML 定位规则
absolute: 将对象从文档流中拖出,用 left , right , top , bottom 等属性做绝对定位。
而其层叠通过 css z-index 属性定义。此时对象不具有边距,但仍有补白和边框
relative: 对象不可层叠, 但将依据 left, right, top, bottom 等属性在正常文档流中偏移位置
A:共同点:
改变行内元素的呈现方式,display 被置为 block;
让元素脱离普通流,不占据空间;
默认会覆盖到非定位元素上
B 不同点:
absolute 的”根元素“是可以设置的,而 fixed 的”根元素“固定为浏览器窗口。
当你滚动网页,fixed 元素与浏览器窗口之间的距离是不变的。
px 和 em 都是长度单位。
区别:
浏览器的默认字体高都是 16px。
所以未经调整的浏览器都符合: 1em=16px。那么 12px=0.75em, 10px=0.625em。
区别:
border:none 表示边框样式无。 border:0 表示边框宽度为 0;
当定义了border:none,即隐藏了边框的显示,实际就是边框宽度为 0.
当定义边框时,必须定义边框的显示样式.
因为边框默认样式为不显示 none,所以仅设置边框宽度,由于样式不存在,
边框的宽度也自动被设置为0.
block 元素特点:
inline 元素特点 :
GIF:
JPEG:
PNG:
浮动元素引起的问题:
解决方法:
1. 使用 CSS 中的 clear:both; 属性来清除元素的浮动可解决 2、3 问题。
2. 对于问题 1,添加如下样式,给父元素添加 clearfix 样式:
.clearfix:after{
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix{
display: inline-block;
} /* for IE/Mac */
清除浮动的几种方法:
1. 额外标签法,
(缺点:不过这个办法会增加额外的标签 使 HTML 结构看起来不够简洁。)
2. 使用 after 伪类
#parent:after{
content:".";
height:0;
visibility:hidden;
display:block;
clear:both;
}
3. 浮动外部元素
4. 设置 overflow 为 hidden 或者 auto
浮动元素脱离文档流,不占据空间。浮动元素碰到包含它的边框或者浮动元素的边框停留。
1.使用空标签清除浮动。
这种方法在所有浮动标签后添加一个空标签定义 css clear:both. 弊端是增加无意义标签
2.使用 overflow。
给包含浮动元素的父标签添加 css 属性 overflow:auto; zoom:1; zoom:1 用于兼容 IE6。
3.使用 after 伪对象清除浮动。
该方法只适用于非 IE 浏览器。
该方法必须为需要清除浮动元素的伪对象设置 height:0,否则该元素比实际高若干像素
cookie虽然在持久保存客户端数据提供了方便,分担了服务器存储的负担,但还是有很多局限性的。
缺点:
1.`Cookie`数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
2.安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
3.有些状态不可能保存在客户端。例如,为了防止重复提交表单,我们需要在服务器端保存一个计数器。如果我们把这个计数器保存在客户端,那么它起不到任何作用。
优点:极高的扩展性和可用性
sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。
而localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
dns 缓存,cdn 缓存,浏览器缓存,服务器缓存。
// 创建 cookie
function setCookie(name, value, expires, path, domain, secure) {
var cookieText = encodeURIComponent(name) + '=' + encodeURIComponent(value);
if (expires instanceof Date) {
cookieText += '; expires=' + expires;
}
if (path) {
cookieText += '; expires=' + expires; }
if (domain) {
cookieText += '; domain=' + domain;
}
if (secure) {
cookieText += '; secure'; }
document.cookie = cookieText; }
// 获取 cookie
function getCookie(name) {
var cookieName = encodeURIComponent(name) + '=';
var cookieStart = document.cookie.indexOf(cookieName);
var cookieValue = null;
if (cookieStart > -1) {
var cookieEnd = document.cookie.indexOf(';', cookieStart); if (cookieEnd == -1) {
cookieEnd = document.cookie.length;
}
cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));
}
return cookieValue;
}
// 删除 cookie
function unsetCookie(name) {
document.cookie = name + "= ; expires=" + new Date(0);
}
网站重构: 在不改变外部行为的前提下,简化结构、添加可读性,而在网站前端保持一致的行为。也就是说是在不改变 UI 的情况下,对网站进行优化,在扩展的同时保持一致的 UI。
对于传统的网站来说重构通常是:
Array.prototype.uniq = function () {
// 长度只有 1,直接返回当前的拷贝
if (this.length <= 1) {
return this.slice(0);
}
var aResult = [];
for (var i = 0, l = this.length; i < l; i++) {
if (!_fExist(aResult, this[i])) {
aResult.push(this[i]);
}
}
return aResult;
// 判断是否重复
function _fExist(aTmp, o) {
if (aTmp.length === 0) {
return false;
}
var tmp;
for (var i = 0, l = aTmp.length; i < l; i++) {
tmp = aTmp[i];
if (tmp === o) {
return true;
}
// NaN 需要特殊处理
if (!o && !tmp && tmp !== undefined && o !== undefined && isNaN(tmp) && isNaN(o)) {
return true;
}
}
return false;
}
}
交互过程:
Flash:
Ajax:
共同点:
内存泄漏: 指任何对象在您不再拥有或需要它之后仍然存在。
垃圾回收器定期扫描对象,并计算引用了每个对象的其他对象的数量。如果一个对象的引用数量为 0(没有其他对象引用过该对象),或对该对象的惟一引用是循环的,那么该对象的内存即可回收。
Ajax 的工作原理:
相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。
并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给 Ajax 引擎自己来做,只有确定需要从服务器读取新数据时再由 Ajax 引擎代为向
服务器提交请求
优点:
本地对象为 array obj regexp 等可以 new 实例化。
内置对象为 gload Math 等不可以实例化的。
宿主为浏览器自带的 document,window 等。
this 是 js 的一个关键字,随着函数使用场合不同,this 的值会发生变化。
但是有一个总原则,那就是 this 指的是调用函数的那个对象。
this 一般情况下:是全局对象 Global。 作为方法调用,那么 this 就是指这个对象
创建一个空对象,并且 this 变量引用该对象,同时还继承该函数的原型。
属性和方法被加入到 this 引用的对象中。
新创建的对象由 this 所引用,并且最后隐式的返回 this 。
var obj = {};
obj.proto = Base.prototype;
Base.call(obj);
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它是基于 JavaScript 的一个子集。数据格式简单, 易于读写, 占用带宽小 {‘age’:‘12’, ‘name’:‘back’}
题目练习:https://www.nowcoder.com/ta/front-end-interview?query=&asc=true&order=&tagQuery=&page=1
框架bootstrap:https://blog.csdn.net/qq_32888087/article/details/89447576?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task