-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
随手记 | 前端吟游诗 #11
Comments
eslint-standard规范 |
JavaScript 中的继承:ES3、ES5 和 ES6 - 天方夜谈 |
javascript 连等赋值问题 |
JavaScript 运行机制详解:再谈Event Loop |
Pinterest的PWA实践 |
|
关于let变量是否提升的讨论 |
JS 判断CSS3 动画结束 |
CSS 布局方案 |
margin的百分比值是相对于包含块的宽度来定。 |
|
判断是否为数组。 |
label的for属性值要与后面对应的input标签id属性值相同
|
重构、回流 浏览器的重构指的是改变每个元素外观时所触发的浏览器行为,比如颜色,背景等样式发生了改变而进行的重新构造新外观的过程。重构不会引发页面的重新布局,不一定伴随着回流,回流指的是浏览器为了重新渲染页面的需要而进行的重新计算元素的几何大小和位置的,他的开销是非常大的,回流可以理解为渲染树需要重新进行计算,一般最好触发元素的重构,避免元素的回流。 比如通过通过添加类来添加css样式,而不是直接在DOM上设置,当需要操作某一块元素时候,最好使其脱离文档流,这样就不会引起回流了,比如设置position:absolute或者fixed,或者display:none,等操作结束后在显示。 |
启动本地服务器:http-server
默认8080端口,使用-p 4000可以切换端口。 |
剖析主流网站实现效果原理 |
今天遇到个小问题,css中的计算属性calc(100%-200px);语句是无效的,我原本以为是单位不同导致的。结果是因为-减号两边要加空格,写成calc(100% - 200px); |
JavaScript中,所有数字都是64位的浮点数,在某些运算中会将浮点数强制转换成32位的整数。 |
parseInt()方法在转换数字为整数时会出现错误情况:
这是因为位数过多时会自动转成科学计数法相当于:
好像科学计数法在超过20位后parseInt把它当成字符串,识别到不是数字的e就结束了。 |
JS原生的两种处理base64方法:
|
JS 事件循环的一些细节 |
在安卓和IOS的原生应用中,字体大小往往不会随着设备屏幕大小的改变而改变。因此,现在移动端HTML页面中使用的rem单位并不是完美方案。在设计中应该尽量避免。 |
URLSearchParams |
web storage API 在对sessionStorage或localStorage操作时会触发storage事件。当同时打开同一域名下的不同网页,其中一个网页修改storage时,其他网页会触发storage事件,而该页面不会。从某种程度上讲,可以实现多窗口通信。
|
根据大漠的博客,手机淘宝在移动端适配中使用的方案从flexible.js到vw再到viewport-units-buggyfill,可以看出适配需要处理的问题在于:
|
思考为什么在移动端retina屏幕下,1px的边框会看上去是2px? 首先需要知道设备独立像素与屏幕物理像素的概念。 从用户的视角来说,只能看到物理像素,并不能看到设备独立像素。在电脑或非retina屏幕下物理像素与独立像素是1:1的关系。但是在retina屏幕下,往往是2:1甚至是3:1的情况。这个比例我们用dpr(device pixel ratio)来表示。公式如下: 设置1px边框时,由于dpr=2,因此高度也就是粗细会显示成2px。这里的2px使用的是物理像素单位。 要解决这个问题,有两种方法:
|
呀~难得看到老乡同行,加个友链互相学习喽~~ |
今天看到个说法,JS的sort()方法在元素为22个时使用冒泡排序,在22个以上时使用快速排序。但是没有搜到相关文章,以后如果有面试题问到我就反问一下面试官吧。 |
熟悉jQuery的前端开发经常会把函数写在$(document).ready()内部,以确保网页上的各个元素都可以用jQuery的选择器取到了。翻看jQuery的源码可以看到,$(document).raedy()其实触发时机是DOMContentLoaded和load事件中较早的那一个。不过由于DOMContentLoaded触发时间应该永远都在load之前,所以相当于jQuery的ready就等于是DOMContentLoaded。 DOMContentLoaded在HTML的DOM全部加载解析完成就会触发,此时你已经可以用css selector去查询到页面上的DOM元素了。而load事件需要等待页面上的样式表、图片、frame等元素全都加载完成才会触发。如果你希望通过js来获取页面上的元素样式并根据获取到的值做相应的改动,那这类js最好写在load事件的回调中。 |
实现一个四分之一圆
实现一个半圆
|
实际上只增加了1,因为setState不是立即执行的,react会把多个setState合并然后统一执行。
同时,setState不会触发componentReceiveProps周期。 |
十进制转换成其他进制,可以使用辗转相除法,利用栈保存每次的余数直到商为0。 |
严格模式主要有以下限制。
重点记:
|
隐藏select标签的下拉小箭头,可以设置下面的属性:
不同浏览器设置不同的前缀。 |
图片如果使用img标签显示,当路径不正确时会使用浏览器默认图像,用户体验不好。 |
jQuery使用class或标签名查找节点可能返回一个数组,每一项为DOM对象,而不是jQuery对象。因此需要使用arr.eq(n)来获取arr中下标为n的数组项。不建议使用$(arr[n])来获取。 |
删除windows系统中文件名过长的文件 |
当对元素仅设置一边或两个相对边的border样式时,border默认为长方形。而一旦同时设置两条相邻边的border样式,这两条border会表现成直角三角形。再如果,设置三个相邻边的border样式后,中间的夹边会表现成梯形或等腰三角形,这与宽高是否为0有关。 {
border-top:10px solid transparent;
border-left:10px solid yellow;
} 或者是等腰三角形: {
height:0;
border-top:10px solid transparent;
border-left:10px solid yellow;
border-bottom:10px solid transparent;
} |
在发布到 npm 之前,你可以将你的模块 link 到全局从而测试你的可分享设置模块。像这样:
随后,在你的项目中使用你的可分享配置模块,像这样:
|
使用扩展运算符:
|
在React 15.5版本后,使用proptypes进行类型检查,需要从prop-types模块中导入。
|
在 JavaScript 中避免使用 eval() 被认为是一个很好的实践。这么做是考虑到安全性和性能的影响,这也是为什么很多检查工具(包括 ESLint )推荐禁用 eval()。然而,也有一些其它方式,通过传递一个字符串,并将它解析为 JavaScript 代码,也有类似的问题。 首当其冲的就是 setTimeout()、setInterval() 或者 execScript() (仅限IE浏览器),它们都可以接受一个 JavaScript 字符串代码作为第一个参数。 在链接地址中使用 javascript: 被有些人认为是 eval 的一种形式。在 javascript: 链接中的代码必须由浏览器解析和赋值,其处理方式与 eval 一样。 |
遇到一个问题:
问题不在于输出多少次。只是不清楚b函数中this的指向。 顺带也复习一下this的四种指向吧。
之所以不说箭头函数,是因为箭头函数严格来说没有this。 |
为了在 React 组件中编写注释,我们必须将其作为 JavaScript 中的多行注释放在括号中。 |
// 开始的a标签数量为1
const getAByQuerySelector = document.querySelectorAll('a');
const getAByJquery = $('a');
const getAByJS = document.getElementsByTagName('a');
// 添加一个a标签
const node = document.createElement('a');
document.documentElement.append(node);
// 检查是否发生变化
// 1,无变化
console.log(getAByQuerySelector);
// 1,无变化
console.log(getAByJquery);
// 2,自动加一
console.log(getAByJS); |
HTML中,script标签如果设置了defer属性,相当于将这个标签放在了body标签之后,等到渲染完毕后才执行。 |
core-js 是babel-polyfill 的底层依赖,通过各种奇技淫巧,用 ES3 实现了大部分的 ES2017 原生标准库,同时还要严格遵循规范。 |
IE8 不支持console方法 |
今天在看堆糖的商店页面,发现一种实现正方形div的方法:设置宽度和padding-bottom为相同的百分比值,并且显式设置height为0。原理就是padding的百分比是相对于父元素来计算的。 此外,我还发现一个以前没注意过的特性:当元素高度为0、padding不为0并且overflow为hidden时,其子元素仍会显示高度为padding值的一部分。也就是说,子元素渲染其实是从border-box的左上角开始,到其右下角。并不是我以前认为的content-box。 |
IE8浏览器中,不能动态修改input的type属性。 |
想要将26个字母与相应的顺位数字对应,可以使用charCodeAt方法。
|
将远程仓库的最新版本拉取到本地分支。 选项:
|
windows下tree命令 http://sunshiyong.com/2018/05/13/tree-win/#tree-cli%E7%9A%84%E4%BD%BF%E7%94%A8 |
问题场景:使用了Websocket的项目,切换tab页后频繁断开连接。 chrome会限制后台页面JS的计时器触发间隔,导致心跳计时发送间隔过长,服务端(?)判断失活,断开连接。 更新: |
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 |
https://whiteyin.github.io/notes/
The text was updated successfully, but these errors were encountered: