Shen Chaoran


用技术改变世界

Csrf跨站请求伪造

CSRF,跨域请求伪造 原因 访问安全网站 A,本地保存 cookie 访问恶意网站 B,B页面中跨域向 A 发送请求,会自动附带 cookie 防御 基本上防御方式都是通过添加伪随机数。 CSRF 攻击之所以能够成功,是因为黑客可以完全伪造用户的请求,该请求中所有的用户验证...

图片加载过程中的占位防止塌陷

几种解决办法: 图片容器的 padding-bottom 设置为 100% 伪元素中设置背景为默认加载的图片 setInterval 获取图片的宽高 在 img 的 onload 事件触发之前,也就是图片完全加载出来之前,其实浏览器已经获取了图片的头信息,包含有宽高,所以可以 setInt...

Js 对象去重

primitive 类型的去重 使用 Set 使用 for 循环 使用 Map 使用 Object 建一个 hash 表 Object 类型的去重 使用 lodash 或者 underscore,uniq, uniqBy, uniqWith 原生:array =...

Debounce 和 throttle

两者很容易弄混 debounce 可以理解为用手指按着一个弹簧,只有手松开才会弹起。 是在事件的生产层次上降低触发频率,而且事件消费也会被延迟。 throttle 可以理解为一个水龙头或机枪的流速或射速的控制,将原来的速度控制在指定的事件内只触发一次。 是在事件的监听/消费层次上降低触...

Sass学习

特性 变量: $width: 10px 计算功能: (14px)/2 选择器嵌套: 选择器样式的继承: @extend .className 代码块重用: @mixin left($value: 10px){left: $value;}, @include left;,...

Css之颜色渐变

径向渐变 radial-gradient() 线性渐变 linear-gradient() 使用角度时,0 deg 表示的是从下指向上,角度按顺时针增加 重复渐变 repeating-radial-gradient() repeating-linear-gradient() 参考 ...

Angular 的样式封装

ViewEncapsulation None:样式不做封装,相当于每个组件写的样式都是全局样式 Native:使用原生的 Shadow DOM 来进行样式封装。这时全局样式不能应用于组件内 Emulated:ng 默认的样式封装方式,全局样式可以作用于组件内。 几个选择器 ...

Angular 响应式表单

表单项的绑定可以通过以下几种方式,具体用哪个指令需要看使用 formBuilder 创建的时候定义的类型。 formGroup formControl formArray formGroupName formControlName formArrayName 同时...

Web component入门

概述 web component 的目的是 定制出自定义的 html 元素,扩展原生的标签元素,构建自己的 widgets 解决样式、脚本的作用域问题 提供组件的生命周期管理 组成: Template Shadow DOM Custom Elements H...

剑指offer算法

二维数组的查找:每行向右递增,每列向下递增 从左下角开始,如果大于当前值向右移,如果小于当前值向上移 替换空格 从尾到头打印链表 根据二叉树的前序序列和中序序列重建二叉树 获取前序序列的第一个为树顶 查找树顶在中序中的位置,可以将中序序列分为...