前端系列之----补充问题集合

Background-position

background-position定义background-image图片的位置,不受padding影响,相对于盒子模型的边框border定位。

可以修改默认值。
可以使用left right  top bottom来定义;
也可以使用%来定义;
也可以使用像素来定义。比如
left bottom 表示左下角,如果仅定义了一个关键词,另一个center
x% y% 第一个是水平位置;第二个是垂直位置

 

 

SASS

sass是一种CSS预处理器

sass定义了一种专门的编程语言,为CSS增加一些编程特性,比如在CSS中使用变量、简单的逻辑程序、函数等,然后进行页面样式设计的时候

,编译生成正常的CSS文件。

sassCSS定义了许多编程的特性,函数,变量,嵌套等等,但是需要将css文件转化成sass文件。比较麻烦

CSS预处理器,好处:变量、mixin、函数、规则嵌套、颜色处理等,坏处:css的文件体积和复杂度不可控、调试难度增加、成本等

 

Doctype 严格模式与混杂模式的区别在哪里

严格模式是浏览器根据web规范去显示页面,是一种要求严格的DTD,不允许使用任何表现层的语法,如
;混杂模式是以一种向后兼容的方式去显示,说的透明点就是可以实现IE5.5以下版本浏览器的渲染模式。

 

渐进增强和优雅降级

渐进增强:针对低版本浏览器构建页面,保证最基本的功能,然后再对高版本浏览器改进,追加功能达到好的用户体验。从被所有浏览器支持的基本功能开始,逐渐添加新浏览器才支持的功能,当新浏览器支持时,自动呈现出来。

优雅降级:一开始就构建全面的功能,然后再对低版本浏览器兼容。页面在新式浏览器能够正常显示,如果用户使用老式浏览器,则检查能否正常工作。

逐渐增强是从基本功能开始,不断扩充新的需要;优雅降价是从复杂的现状开始。逐渐减少用户体验的需要

 

COOKIES  sessionStorage  localStorage

Cookies是存储在本地的一种会话控制信息,大小通常不超过4KB,电源关了依然存在在,设置的cookies过期时间之前一直有效。。携带中http请求中,在服务器和客户端之间传递。

sessionStorage  本地存储会话数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储。大小大得多5M级别

localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。大小大得多5M

 

行级块级

行级元素:不能设置宽高,和其他元素呆在一行,a span strong em u

块级元素:能设置宽高,独占一行不和其他元素呆在一行 div p h1-h6 ul li

盒子模型 块级元素相当于一个盒子,有外边距margin 边框border 内填充padding 内容content组成。

 

前端优化

原则就是多使用缓存,多使用内存;少进行CPU计算,少进行网络请求;

加载资源优化:

1.     静态资源压缩合并  比如JS合并 JScompress ;CSS合并;

2.     静态资源缓存

3.     使用CDN让资源加载更快些  CDN服务器根据网络负载情况,把你的请求重定向到一个最有节点上。

4.     使用SSR进行后端渲染数据直接输出到HTML

渲染优化:

1.     CSS放到前面,JS放后面

2.     懒加载,图片懒加载,下拉加载更多

3.     减少DOM查询,设置DOM查询缓存

4.     减少DOM操作,多次DOM操作合并到一起

5.     事件节流

6.     今早执行操作 window.onload所有加载完成,静态文件啊 图片啊、和document.DOMcontentLoaded区别

代码层面:避免使用css表达式,避免使用高级选择器,通配选择器。

缓存利用:缓存Ajax,使用CDN,使用外部jscss文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等

请求数量:合并样式和脚本,使用css图片精灵,初始首屏之外的图片资源按需加载,静态资源延迟加载。

请求带宽:压缩文件,开启GZIP

代码层面的优化

  • 用 hash-table 来优化查找
  • 少用全局变量
  • 用 innerHTML 代替 DOM 操作,减少 DOM 操作次数,优化 javascript 性能
  • 用 setTimeout 来避免页面失去响应
  • 缓存DOM节点查找的结果
  • 避免使用CSS Expression
  • 避免全局查询
  • 避免使用with(with会创建自己的作用域,会增加作用域链长度)
  • 多个变量声明合并
  • 避免图片和iFrame等的空Src。空Src会重新加载当前页面,影响速度和效率
  • 尽量避免写在HTML标签中写Style属性

移动端性能优化

  • 尽量使用css3动画,开启硬件加速。
  • 适当使用 touch 事件代替 click 事件。
  • 避免使用 css3 渐变阴影效果。
  • 可以用 transform: translateZ(0) 来开启硬件加速。(见下面的详细解释)
  • 不滥用Float。Float在渲染时计算量比较大,尽量减少使用
  • 不滥用Web字体。Web字体需要下载,解析,重绘当前页面,尽量减少使用。
  • 合理使用requestAnimationFrame动画代替setTimeout
  • CSS中的属性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)会触发GPU渲染,请合理使用。过渡使用会引发手机过耗电增加
  • PC端的在移动端同样适用

 

安全

XSS 跨站请求攻击

在新浪博客写一篇文章,偷偷插入一段script

攻击代码中,获取cookie,发送到自己的服务器。

别人查看我的文章,获取查看者的cookie发送到攻击者的服务器。

预防:

前端替换关键字替换<为&lt,>为&gt;后端替换

XSRF 跨站请求伪造

你已登录一个购物网站,正在浏览商品;

该网站付费接口是xxx.com/pay?id=100但是没有任何验证

然后你收到一封邮件,隐藏着<img src= xxx.com/pay?id=100>

你查看邮件的时候,就已经付款成功了

预防:

增加验证流程,指纹、验证码等

 

Ajax请求过程

 

1.     创建xmlHTTPRequest对象

2.     创建一个HTTP请求,指定请求方式为GET,URL和第三个参数true表示异步请求

3.     设置相应http请求状态变化的函数

4.     发送HTTP请求

5.     获取异步数据

6.     JS.DOM刷新局部页面

GET/POST 区别

1.     GET获取数据,POST提交数据

2.     GET参数加载URL后面,URL长度有限制;POST参数加在请求报文的Header里面

3.     GET安全性低;POST安全性高

CSS水平垂直居中

1.     margin:0 auto

2.     父元素display:table-cell

vertical-align:middle

text-align:center

子元素display:inline-block

3.     CSS3的FLEX布局

父元素display:flex

justy-content:center

align-items:center

React题目

State:当用户点击组件,导致state变化,this.setState方法修改状态值,修改以后,自动调用this.render()方法,产生新的虚拟DOM,与上一个虚拟DOM进行Diff算法比较,得到一个Patch,Patch打到真实DOM上。

组件通信:react是单向数据流。父组件到子组件:props对象

子组件到父组件:父组件通过props传递一个回调函数到子组件中,这个回调函数可以更新父组件,子组件可以通过触发回调函数更新父组件。

兄弟组件之间:组件层次少的时候,父组件回调函数来改变兄弟组件props

组件层次多的时候,上下文方式,无需层层传递。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值