em 与 px 之间的换算关系
px | em |
---|---|
12 | 0.75 |
13 | 0.8 |
14 | 0.875 |
15 | 0.9375 |
16 | 1 |
18 | 1.125 |
20 | 1.25 |
22 | 1.375 |
24 | 1.5 |
25 | 1.5625 |
px | em |
---|---|
12 | 0.75 |
13 | 0.8 |
14 | 0.875 |
15 | 0.9375 |
16 | 1 |
18 | 1.125 |
20 | 1.25 |
22 | 1.375 |
24 | 1.5 |
25 | 1.5625 |
通过 onreadystatechange 监听,node.readyState 为 loaded 或者 complete 时,加载完成。
相对于使用 navigator.geolocation 探测功能特性或对象属性,使用 “geolocation” in navigator 更高效,前者可能会在某些浏览器下导致内存泄漏,如果这个属性值是假,那么前者探测方式将会得到一个“否”的结果,并不能真正探测出这个键名是否存在。
document.URL == location.href,但是 document.URL 是只读的
不是数组,和 arguments 对象类似,要使用数组的方法,可以用1
2
3Array.prototype.forEach.call(myNodeList, function() {
// do something with nodeItem
});
1 | [1, 2].concat([3, 4]); |
1 | divNode.classList.add('className'); |
1 | Object.prototype.toString.call(myVar) |
发送请求时,当 dataType 为 json 时,jQuery 会在检查返回的字符串是否符合 json 格式(即使不用返回时也需要返回{}),并调用JSON.parse 方法再执行回调函数,否者回调函数不会执行并抛出 error 错误,执行 error 回调函数。
顾名思义为模版,它具有天然的标签内容隐藏的特点,即使你设置 display 为 block 也无济于事。
它可出现在任意位置,类似与script和style标签。
childNodes 无效性,可使用 template.innerHTML 获取完整的 html 片段,若非得获取“伪子元素”,使用 template.content,返回一个文档片段,可以理解为另一个 document。
支持 chrome ios8 android4.4 以上版本浏览器。
类似 template,还有 link rel=”import”,js 里的 registerElement、createShadowRoot,详见:http://www.ifeenan.com/~posts/JavaScript/2014-06-07-%E8%AF%B4%E8%AF%B4%20Web%20Components.md
详见 https://developer.mozilla.org/zh-CN/docs/Controlling_DNS_prefetching
1 | <input type="email" pattern="[^ @]*@[^ @]*" value=""> |
用户输入一个有效的 email 或 URL 地址,pattern 属性可以令你直接使用 regular expressions 而无需检查 JS 或服务器端代码。
对应的 html5 表单:1
<input type="file" accept="image/*" capture="camera" id="capture">
API参考 HTML Media Capture:http://www.w3.org/TR/2011/WD-html-media-capture-20110414/
对象可快速获取 form 表单值,类似与 jQuery 的 serialize 方法,还可以利用其实现二进制文件的异步上传。详见:https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Objects。使用 jQuery Ajax 时,需将 contentType 设置为 false,processData 也设置为 false 。
使用FileReader对象, web应用程序可以异步的读取存储在用户计算机上的文件(或者原始数据缓冲)内容,可用在图片预览等场景。
可改变地址栏但是不刷新页面,配合 Ajax 可良好的用于单页面应用。注意,pushState 并不会触发 popstate ,页面加载也不会触发 popstate,当history.go或者浏览器前进后退按钮被摁下时触发 popstate 。
ie下的对象,只存在于事件发生时。如果事件处理有setTimeout,延时里是索引不到 window.event 的。
WebSocket。WebSocket 规范是 HTML 5 中的一个重要组成部分,已经被很多主流浏览器所支持。不过 WebSocket 技术也比较复杂,包括服务器端和浏览器端的实现都不同于一般的 Web 应用。
简易轮询。基于 HTTP 协议来达到实时推送的效果。
COMET 技术。改进了简易轮询的缺点,使用的是长轮询。长轮询的方式在每次请求时,服务器端会保持该连接在一段时间内处于打开状态,而不是在响应完成之后就立即关闭。COMET 技术并不是 HTML 5 标准的一部分,从兼容标准的角度出发,也不推荐使用。
服务器数据推送。不WebSocket 规范更加复杂一些,适用于需要进行复杂双向数据通讯的场景。对于简单的服务器数据推送的场景,使用服务器推送事件就足够了。
使用 Promise 改善异步流程
array.slice()
$.extend({}, object)
获取异步响应头
css 数学运算
display: flex 新
display: box 旧
css3: 弹性盒模型
css3: translate
1 | .element{ |
模拟 table
1 | .elementParentParent { |
事先知道元素高度:
1 | .element{ |
1 | .element { |
适用于知晓宽高数值的情形。
使用 border 设置各边的 width 及颜色(配合上 transparent )可创建直角三角形。
常见的左中右三元素第一个左对齐,第二个居中对齐,最后一个靠右对齐,css3 使用伸缩布局( display: flex )配合 justify-content: space-between 便可实现,再也不需要设置 float 和 text-align 那么麻烦的做法。
设置背景(rgba),.element::after 设置为底层作为背景,背景使用 blur 滤镜
看是否产生了新的元素(抽象),例子:
使用 image-set1
background-image: image-set(url(/image@1x.png) 1x, url(/image@2x.png) 2x)
1 | <link rel="prefetch" href="/avatar.png" /> |
在页面加载的时候预先加载指定的页面或元素。也能够使用 prerendering 特性令你的网站速度更快,浏览器能够在后台获取并渲染整个页面。
闪烁归根结底是帧率不足,可通过开启硬件加速解决,使用1
2transform: transform3d(0, 0, 0);
transform-style: preserve-3d;
如若还是没解决,这肯定是其他地方出了问题,极大可能是你没设置 tap-highlight-color: rgba(255, 255, 255, 0)
通过 css 设置元素的 text-size-adjust: none 即可禁止字体变大变小。
设置了 font-size 具体值( px 单位)的字体不受旋转影响。
使用 outline 而不是 border
css 媒体查询 aspect-ratio 定义的屏幕可视区的高宽比,设置是必须是 1/1 的形式,不允许出现小数,必须有斜杠。可以用这个检查手机的横竖状态。
前者的的阴影是矩形,而后者是真真正正的包裹整个元素周围,尽管是不规则多边形。
简写时推荐写法 all .2s ease 1s,注意,两个时间,出现在前面的动画过渡时间,第二个时间为开始动画前等待的时间,当只有一个时间时,它只能是动画过渡时间。
background: #fff url(/path.png) left center/200px 100px no-repeat scroll content-box padding-box,注意,background-size可以只设置宽,图片自动等比例缩放。
例如 background-position: right 10px bottom 5px 表示参照点为右下角,向左偏移 10 像素,向上偏移 5 像素。
常看见mobile browser在输入时会在你的单词底划上个红色虚线,很不顺眼有木有,通过设置 input/textarea 的 spellcheck=”false” 即可搞定
在书写输入框的时候,如果要增加光标高度,那么最可行的做法是增加文字的大小
始终设置输入框高度,始终设置行高为 1,不使用 padding-top、padding-bottom
iOS 8.1 支持 type 类型有 date、time、month,不支持 week、datetime、datetime-local
使用iconfont:http://emojisymbols.com/
1 | p { |
效果如图:
设置 document 根元素的 font-size,其他元素的宽高使用 rem 单位进行布局。
以 320px 屏幕宽度为标准宽度举例:1
2
3
4
5
6
7
8
9
10
11
12
13
14(function(doc, win) {
'use strict';
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function() {
var clientWidth = docEl.clientWidth;
if (!clientWidth) {return;}
docEl.style.fontSize = 16 * (clientWidth / 320) + 'px';
};
if (!doc.addEventListener) {return;}
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
「/」(斜杠)标签1
border-raduis: 35px 25px 30px 20px / 25px 35px 20px 20px;
「/」前定义 x 轴半径,「/」后定义 y 轴半径。
A fast, simple & powerful blog framework, powered by Node.js.
1 | $ npm install hexo-cli -g |
Setup your blog
1 | $ hexo init blog |
Start the server
1 | $ hexo server |
Create a new post
1 | $ hexo new "Hello Hexo" |
Generate static files
1 | $ hexo generate |
MIT