浏览器 缓存区别 HTML&CSS

379 阅读5分钟

浏览器

浏览器内核和JS引擎

浏览器/RunTime内核(渲染引擎)JavaScript 引擎
Chrome(谷歌)Blink(28~)\Webkit(Chrome 27)V8
FireFox(火狐)Gecko(开源也叫Firofox)SpiderMonkey
Safari(苹果)WebkitJavaScriptCore
EdgeEdgeHTMLChakra(for JavaScript)
IETridentChakra(for JScript)
NodeV8

缓存区别

缓存时效大小与服务器端通信
cookie如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束,设置过期时间关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失。,在所有的同源窗口共享4kb每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题
sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除,不在不同的浏览器窗口中共享,即是同一个页面共享一般为5MB仅在客户端(即浏览器)中保存,不参与和服务器的通信
localStorage除非被清除,否则永久保存,在所有的同源窗口共享一般为5MB仅在客户端(即浏览器)中保存,不参与和服务器的通信
indexedDB(以前叫Web Sql)除非被清除,否则永久保存一般来说不少于 250MB,甚至没有上限不参与
html5离线缓存除非被清除,否则永久保存单地址页面
其它框架存储(vuex,React-redux)随生命周期,关闭而结束

HTML&CSS

1.模型

box-sizing:content-box; 将采用标准模式的盒子模型标准

box-sizing:border-box; 将采用怪异模式的盒子模型标准

box-sizing:inherit; 规定应从父元素继承 box-sizing 属性的值。

  • Margin(外边距)  - 清除边框外的区域,外边距是透明的。
  • Border(边框)  - 围绕在内边距和内容外的边框。
  • Padding(内边距)  - 清除内容周围的区域,内边距是透明的。
  • Content(内容)  - 盒子的内容,显示文本和图像。 1.盒模型(怪异盒模型)

标签得实际宽度 = 设置的宽度 如果设置了padding和border就是从设置的实际宽高中减去,减去后才是内容的宽高。

  1. W3C盒模型(标准盒模型)

标签得实际宽度 = 设置的宽度 + border宽度 + padding的宽度

2.常用布局

布局方式优点缺点
文本布局text文档流本质是 nomal flow (普通流、常规流)通俗易懂缺乏可变性
浮动布局float兼容性好,计较简单容易上手脱离文档流,需要清除浮动,高度塌陷
定位布局position让元素拥有了 inline-block 宽高限制脱离文档流,会导致后续元素全部脱离文档流,可用行差
流式布局streaming元素的宽高用百分比做单位,元素宽高按屏幕分辨率调整,布局不发生变化。兼容性比较好,当屏幕分辨率变化时元素大小不变布局也不变如果尺度过大或者过小在屏幕上就不能正常显示
弹性布局rem/em适应性强,在做不同屏幕分辨率的界面时非常使用,可以随意按照宽度,比列划分元素的宽高,实现快捷,易维护。简单,方便,快速浏览器的兼容性比较差只能到ie9以及以上。
自适应布局adaptation(@media媒体查询)屏幕分辨率变化时,页面里面元素的位置变化而大小不会变化如果需要不同页面那么还需要写多页的代码
响应式布局BootStrap(CSS3的Grid类似)栅格布局适应pc和移动端,如果只够的耐心,效果会很完美。媒体查询是有限的,也就是可以枚举出来的,只能 适应主流的宽高,要匹配足够的屏幕大小,工作量比较大,设计也需要多个版本

H5C3

html5+文档 - HTML5+ API Reference(推荐学习网址) www.html5plus.org/doc/h5p.htm… (主要为H5APP需学习的地址,查询手机设备)

CSS3属性和选择器 tool.oschina.net/apidocs/api…

H5新特性:

  • h5新语义元素(有利于代码可读性和SEO)新语义元素:header,footer,nav,aside,article,section
  • 地理定位 即通过window.navigator.geolocation来实现访问 getCurrentPosition()watchPosition() clearWatch()
  • 本地存储提供了sessionStorage、localStorage和indexedDB加强本地存储setItem (key, value) getItem (key)、removeItem (key)、clear () 、key (index)
  • audio标签,你不需要再按照第三方插件来渲染音频,大多数现代浏览器提供了对于HTML5 Audio的支持,不过目前仍旧需要提供一些兼容处理
  • 和Audio很像,标签提供了对于video的支持,由于HTML5文档并没有给video指定一个特定的编码,
  • Canvas画布caibaojian.com/canvas/ CSS3动画(Animation)
  • 关键帧(@keyframes) - 定义动画在不同阶段的状态
  • 动画属性(properties) - 决定动画的播放时长,播放次数,以及用何种函数式去播放动画等。(可以类比音视频播放器)
  • css属性 - 就是css元素不同关键帧下的状态 如:.list div:first-child { animation: dropdown 8s linear infinite; }

@keyframes dropdown { 0% { margin-top: 0px;} /** 暂停效果 */ 10% { margin-top: 0px;} 50% { margin-top: -100px;} 60% { margin-top: -100px;} 90% { margin-top: -200px;} 100% { margin-top: -200px;} }

SVG矢量图

  • 存储多个logo或者其它小图标,通过background-image调用background-repeat是否平铺 background-position调整距离,主要注意距离
  • 如同icon小图标,小图标参考阿里巴巴www.iconfont.cn/
面试问题
  • 如何垂直居中?
  1. 行高同高行内元素line-height
  2. display:inline-block;verticle-align:middle
  3. display:flex;align-self:center;
  4. display:table;display:table-cell
  5. position:relative;top:50%;transform:tranglateY(-50%) 6.父级通过伪元素:before 挤压,还可以隐藏元素挤压
  • 如何水平居中?
  1. margin: 0 auto; text-align: center
  2. 父元素display: flex;flex-direction:column; 子justify-content: center
  3. display:inline-block和text-align:center
  4. position:relative;left:50%;transform:tranglateX(-50%)
  5. 父元素display:table-cell 子元素margin
  6. 父元素position:relative,给子元素float:left和margin-left
  7. 挤压 隐藏元素或者伪元素:before
  • 谈谈cookie,localstoarge,sessionStorage 如上表格所属
  • H5C3谈谈你的理解和用过那些属性
  1. 根据情况回答,挑熟的 水太深 特别Canvas