前端常见问题

207 阅读3分钟

position 有哪些值? relative 和 absolute 区别?

  1. absolute 生成绝对定位的元素,相对于static定位以为的第一个父元素进行定位。将对 象从文档流中拖出,使用 left , right , top , bottom 等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象,则依据 body对象。而其层叠通过z-index属性定义
  2. Fixed 生成绝对定位元素,相对于浏览器窗口进行定位。
  3. Relative 生成相对定位元素,相对于其正常位置定位。
  4. Static 默认值,没有定位,元素出现在正常流中。
  5. Inherit 规定应该从父元素继承 position 属性的值。

前端性能优化

  1. 减少http请求。合并多个CSS文件和js文件,利用CSS Sprites整合图像。
  2. 减少DOM节点。
  3. 避免404:HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。
  4. 避免空的图像src
  5. 减小Cookie大小,针对Web组件使用域名无关的Cookie
  6. 将CSS代码放在HTML页面的顶部,避免使用CSS表达式,使用 link代替@import.
  7. 将JavaScript脚本放在页面的底部。
  8. 将JavaScript和CSS作为外部文件来引用:在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。
  9. 优化图片大小
  10. 通过CSS Sprites优化图片
  11. 不要在HTML中使用缩放图片

jsonp是什么,怎么进行跨域请求的?

json 是一种数据格式,jsonp 是一种数据调用的方式。你可以简单的理解为 带callback的json就是jsonp.

SONP是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。 很简单,就是利用script标签没有跨域限制的“漏洞”(历史遗迹啊)来达到与第三方通讯的目的。当需要通讯时,本站脚本创建一个script元素,地址指向第三方的API网址,形如:

<script src="http://www.example.net/api?param1=1&param2=2"></script>

并提供一个回调函数来接收数据(函数名可约定,或通过地址参数传递)。 第三方产生的响应为json数据的包装(故称之为jsonp,即json padding),形如: callback({"name":"hax","gender":"Male"}) 这样浏览器会调用callback函数,并传递解析后json对象作为参数。本站脚本可在callback函数里处理所传入的数据。 补充:“历史遗迹”的意思就是,如果在今天重新设计的话,也许就不会允许这样简单的跨域了嘿,比如可能像XHR一样按照CORS规范要求服务器发送特定的http头。