2019-12-06

页面布局
题目1:高度已知,请写出三栏布局,其中左栏和右栏宽度歌为300px 中间自适应
① 浮动 左边左浮动 右边有浮动
② 绝对定位 定位左边和定位右边 中间left:300 右边left:300
③ 中间的flex:1
④ display:table-ceil布局
⑤ 网格布局
总结:扩充:
1、各自优缺点
2、高度不确定 中间高了两边撑起来 :flex和table-ceil布局能用
3、兼容性 实际中用哪个

清除浮动:
1.在浮动元素的最后添加一个空标签进行clear:both
2.给父元素触发BFC 比如overflow:hidden
3.给父元素添加一个伪元素

.clearfix:after{
  content: '".",
  height:0,
  display: block; 
  visibility: hidden; 
  clear:both
}

 .clearfix {
    *zoom: 1;
}   /* IE6、7 专有 */

https://www.jianshu.com/p/32b35d3f61a7
BFC
规则:
1、垂直方向的边距会重叠
2、BFC的区域不会和浮动元素的box重叠(清除浮动)(就是两栏布局的时候左侧浮动右侧高度高于左边 就会占据下面位置 这个时候给右边div一个BFC 即可)
3、BFC在页面上是独立的容器
4、BFC计算高度的时候浮动元素也会参与计算
触发条件
1、浮动
2、display:inline-block 等
3、定位: position:absolute等
4、overflow:hidden等
5、flex布局 grid布局
https://blog.csdn.net/riddle1981/article/details/52126522

CSS盒模型
设置:
box-sizing:content-box 标准(默认)
box-sizing:border-box IE
获取:
dom.style.width 只能获取内联样式
dom.currentStyle.width 获取解析之后的(IE)
window.getComputedStyle(dom),width 获取接解析之后的宽度 (webkit)
dom.getBoundingClientRect().width 返回四个值 (top,left,width,height)

DOM事件
事件级别:

DOM0  element.onclick=function(){}
DOM2  element.addEventListener("click",function(){},false)  监听最后的参数默认false 表示该事件实在冒泡阶段触发  true则是在捕获阶段触发
DOM3  element.addEventListener("keyup",function(){},false)

事件模型:
冒泡和捕获
事件流:
捕获->目标阶段->冒泡
事件捕获流程:
window->document->html->body->...->目标元素(document.documentElement获取html)
Event对象:

event.preventDefault()  阻止默认事件
event.stopPropagation() 阻止冒泡事件
event.stopImmediatePropagation() 一个事件绑定多个方法 可在第一个方法中阻止第二个方法的执行
event.currentTarget 事件委托绑定事件的父元素
event.target 事件委托的当前被点击的子元素

自定义事件:

var eve = new Event('custome'); CustomEvent在指定事件名称的时候还可指定Object作为参数
        ele.addEventListener('custome', function(){
            console.log("自定义事件的回调")
        })
        ele.dispatchEvent(eve);

HTTP协议
http协议的特点:
无连接:连接一次就会断开
无状态:两种身份 无法区分身份
简单快速:
灵活:
http报文组成部分:
请求报文: 请求行、 请求头、 空行、请求体
响应报文: 状态行、 响应头、 空行、 响应体
请求行:http方法,请求方法、页面地址、版本
请求头: key value值告诉服务端需要的内容
http方法:
get->获取资源
post->传输资源
put->更新资源
delete->删除资源
HEAD->获得报文首部
get和post的区别
1、get在浏览器回退时是无害的,而post不会再次提交请求(记住)
2、get产生的url地址可以被隐藏,而post不可以(浏览器收藏功能)
3、get请求会被浏览器主动缓存,而post不会,除非手动设置(记住 )
4、get请求只能进行url编码,post支持多种编码方式
5、get请求参数会被完整保留在浏览器历史记录中 而post参数不会被保留(记住)
6、get在url中的参数长度是有限制的(2kb),而post没有(记住)
7、参数的数据类型,get只接受ASCII码 而post没有限制
8、get比post更不安全 因为参数暴露在url上 不能用来传递敏感信息
9、get参数通过url传递、post放在请求体中(记住)
http状态码:
1:指示信息-表示请求已经接收,继续处理
2
:成功,请求已经被成功接收
3:重定向: 要完成请求必须进行更进一步的操作
4
:客户端错误:请求有语法错误或请求无法实现
5**:服务器错误:服务器未能实现合法的请求
详细:
206 客服端发送了一个带有range头的get请求,服务器完成了它
301:永久重定向
302:临时重定向
304:浏览器有缓存
400:请求有语法错误
401:请求未授权
403:访问被禁止(某个网页可能只能被服务器访问)
404: 请求资源不存在
500:服务器错误
503:临时过载,一会会恢复
持久连接:使用Keep-Alive模式时候,保持客户端和服务器端持续建立连接(http1.1才支持)
管线化:在持久化连接下,多个请求打包一次发送给服务端 服务端一起打包传回来(http1.1才支持,只有get和head才支持管线化,post有限制 现代浏览器如Chrome和Firefox默认未开启管线化,初次连接是不应该启动,应确保浏览器支持)
面向对象
原型链
创建对象的方法:
1、字面量、new Object()
2、自定义构造函数、实例化构造函数
3、obj = Object.create(obj1) 创建对象obj的原型指向obj1
(只要是对象, 就是实例 ,使用new 后面的函数就是构造函数)
所以原型对象上拥有proto属性而不是prototype属性
instanceof判断实例对象上的proto上的对象和构造函数上的引用对象是否一致 (只要在构造函数原型链上的对象都会返回true)
new关键字的过程:
1、创建一个空对,继承自构造函数的prototype
2、构造函数被执行、传入响应的参数 同时上下文会被指定为新实例
3、如果构造函数返回了一个“”对象“”如果构造函数没有返回对象 则返回的是步骤一创建的对象
new运算符的原理:(代码实现)

function new2(func){ //func为构造函数
    var o = Object.create(func.prototype);
    var k = func.call(o);
    if(typeof k === 'object'){
        return k;
    }else{
        return o;
    }
}
function M(){ //M是构造函数
}
var obj = new2(M) // obj即为M的实例

面向对象:
类的声明:
两种方法 函数式的和ES6的声明(new的时候如果没有传参数 括号可以省略)
继承:
1、构造函数继承

//构造函数实现继承
        function Parent() {
            this.name = "parent"
        }
        Parent.prototype.say = function(){
            console.log(this.name);
        }
        function Child(){
            Parent.call(this);
            this.type = 'child'
        }

缺点:不能继承父类原型上的属性
2、实例继承:

       function Parent2() {
            this.name = "parent2"
        }
        Parent2.prototype.say = function(){
            console.log(this.name);
        }
        function Child2(){
            this.type = 'child2'
        }
        Child2.prototype = new Parent2();

缺点:子类的所有实例全部继承自同一个对象 如Parent2的name修改了 所有的子类的name都修改了
3、组合继承

function Parent3() {
            this.name = "parent3"
        }
        Parent3.prototype.say = function(){
            console.log(this.name);
        }
        function Child3(){
            Parent3.call(this);
            this.type = 'child2'
        }
        Child3.prototype = new Parent3();

缺点:1、这个父类构造函数里面的东西执行了2次 第一次是在call执行的 第二次是在继承的时候执行的
优化:Child3.prototype = Parent3.prototype;
优化后的缺点:c3 = new Child3(); c3.constructor === Parent3 (不符合预期,应该是指向Child3)
再次优化:
Child3.prototype = Object.create(Parent3.prototype);
Child3.prototype.constructor = Child3;

通信
同源策略以及限制
限制:
cookie localstorge和indexDB 无法读取
DOM无法获得
ajax无法发送
前后端通信方式:
ajax、websoket、cors
创建ajax:
XMLHtmlRequest对象的工作流程、兼容性处理、事件的触发条件、 事件的触发顺序
前后端如何通信
原生实现ajax
跨域的几种方式
JSONP、 CORS、 Hash(url中#号后面的部分。hash改变页面不刷新)、postMessage、webSocket
原理:
JSONP...
hash:

// A 中
        var B = document.getElementsByTagName('iframe');
        B.src = B.src + '#' + 'data';

        //B 中
        window.onhashchange = function(){
            var data = window.location.hash;
        }

postMessage:
window.postMessage()方法可以安全地实现Window对象之间的跨域通信。例如,在一个页面和它生成的弹出窗口之间,或者是页面和嵌入其中的iframe之间。

//窗口A给窗口B发消息
        var targetWindow = window.opener; //targetWindow是B窗口的引用
        targetWindow.postMessage('data', "http://B.com");

        //B中监听
        window.addEventListener('message', function(event){
            console.log(event.origin); //http://A.com
            console.log(event.source); //Awindow
            console.log(event.data); //data
        })

webSocket:

let ws = new WebSocket("ws://localhost:8181"); //ws协议 加密的是wxs
            ws.onopen = function() {
                console.log("client:打开连接");
                ws.send("client:hello,服务端");
            };
            ws.onmessage = function(e) {
                console.log("client:接收到服务端的消息 " + e.data);
                setTimeout(() => {
                    ws.close();
                }, 5000);
            };
            ws.onclose = function(params) {
                console.log("client:关闭连接");
            };

https://www.jianshu.com/p/3b5fbc1abc9d
cors: fetch
https://www.cnblogs.com/wyy1234/p/9510692.html

安全
算法
排序:快速、选择、希尔
堆栈、队列、链表
递归
波兰式和逆波兰式

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,591评论 0 6
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,478评论 0 5
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,875评论 0 0
  • 定位 1、流动模型(Flow) 流动(Flow)模型是默认的网页布局模式。也就是说网页在默认状态下的 HTML 网...
    jiujiumi阅读 151评论 0 0
  • 一、给表添加约束1.创建表时添加1)直接在数据类型后添加(这样无法设置索引名)列名1 数据类型1 primary ...
    AkenoSyuRi阅读 339评论 0 0