IE常见的hack总结

  1. 1
    2
    3
    <!--[if !IE]><!-->
    除IE外都可识别
    <!--<![endif]-->
  2. 1
    2
    3
    <!--[if IE]>
    所有的IE可识别
    <![endif]-->
  3. 1
    2
    3
    <!--[if IE 5.0]>
    只有IE5.0可以识别
    <![endif]-->

移动端rem布局

之前用rem布局方式做了一些小的页面。稍微解释一下rem字体,有两件事要理解
  1.默认浏览器IE9+以及高级浏览器默认字号16px
  2.rem元素值根据html设置大小,而em根据父元素。
怎么用:
两种方法 简单直接的方法
为什么是62.5%,因为默认字号16*0.625 =10px容易转换成rem
html{font-size:62.5%;}
这样以后所有计算都可以用rem
比如 100乘以100的div就直接变成了
width:10rem;height:10rem
第二种方法,js方法,推荐。

1
2
3
4
document.addEventListener('DOMContentLoaded', function(e) {
document.getElementsByTagName('html')[0].style.fontSize =document.clientWidth / 10 + 'px';
meta.setAttribute('content', 'initial-scale=' + 1/dpr + ', maximum-scale=' + 1/dpr + ', minimum-scale=' + 1/dpr + ', user-scalable=no');
}, false);

问题来了:
写css咋切图 还是用px去写,然后用less或者sass转。
用法:

1
2
3
4
@function px2rem($px){
$rem : 37.5px;
@return ($px/$rem) + rem;
}

  为什么375? 因为苹果6是375,设计工作中是先出一个基准完美展示版本设计 再去调整比例。注意一件事:如果你用rem就全用rem,margin和padding这些用rem也是一点问题没有的。推荐使用rem布局,这也是国内很多公司愿意采用的方式。

JS参数与垃圾回收

一道面试题想到的:哪些地方会出现css阻塞,哪些地方会出现js阻塞?

  js的阻塞特性:所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等。直到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。为了提高用户体验,新一代浏览器都支持并行下载JS,但是JS下载仍然会阻塞其它资源的下载(例如.图片,css文件等)。

  由于浏览器为了防止出现JS修改DOM树,需要重新构建DOM树的情况,所以就会阻塞其他的下载和呈现。

  嵌入JS会阻塞所有内容的呈现,而外部JS只会阻塞其后内容的显示,2种方式都会阻塞其后资源的下载。也就是说外部样式不会阻塞外部脚本的加载,但会阻塞外部脚本的执行。

  CSS怎么会阻塞加载了?CSS本来是可以并行下载的,在什么情况下会出现阻塞加载了(在测试观察中,IE6下CSS都是阻塞加载)

  当CSS后面跟着嵌入的JS的时候,该CSS就会出现阻塞后面资源下载的情况。而当把嵌入JS放到CSS前面,就不会出现阻塞的情况了。

  根本原因:因为浏览器会维持html中css和js的顺序,样式表必须在嵌入的JS执行前先加载、解析完。而嵌入的JS会阻塞后面的资源加载,所以就会出现上面CSS阻塞下载的情况。

希尔顿离职员工说的走心的话,个人觉得每一个职场人都该看看

1.是否有“同理心”

  什么叫“同理心”?

  说复杂点儿,同理心就是站在当事人的角度和位置上,客观地理解当事人的内心感受,且把这种理解传达给当事人的一种沟通交流方式。说简单点儿,同理心就是“己所不欲,勿施于人”。将心比心,也就是设身处地去感受、去体谅他人。说白了,同理心就是“情商”。

  具体点说:同理心就是,领导交办一项工作,你要读懂他的目的、看清他的用意。

  我经常遇到这样的情况:给团队成员安排工作时,一再询问“我说明白了吗”“有没有问题”,再三确认后,提交上来的东西仍然答非所问。所以我在接受任务时,总会向领导确认:你想要的是什么?你的目的是什么?了解这个以后,就可以站在他的角度,有效的帮他解决问题。

  同理心就是,在与他人合作时,了解对方的需求和心理,潜移默化的说服对方,双方为了同一个目标而努力。想用强势压服别人,通常不好使。

2.听话,出活

JS参数与垃圾回收

一句话就是 参数你可以理解为相当于在函数内定义了一个局部变量,然后把实参赋值给它。
注意这里连对象都是赋值过去的,并不是引用过去的。直接上代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
function test(num) { num += 10; return num;}
var num = 10;
var res = test(num);console.log(num); //10 外部变量并未受到影响
console.log(res); //20
下面对象不好理解:
function setName(obj) {
obj.name = "James";
}

var person = new Object();
person.name = "Jeremy";
setName(person);
console.log(person.name);//James 影响到了外部引用变量

乍一看,这不就是按引用传递吗?怎么会是按值传递呢?之所以是按值传递是因为当调用setName(person)的时候,实际上是把person所指向的对象的引用进行了复制,然后传递给了setName函数,这样在函数setName内部对此引用进行操作时候是会影响到此引用所指向的对象,即外部person所指向的对象。