em单位的历史

前端开发  |  8年前

em是近年来讨论得比较多的一个长度单位。其实早在Jeffrey Zeldman写的《网站重构》(中文版于2004年出版)一书中就提到过这个单位,只是当时流行用px(像素)单位,所以很少人留意到em。与px这种绝对长度单位不同,em是相对长度单位,1em代表的是一个字的大小。为何要用字体的大小作单位呢?

多年前,在XHTML+CSS还没有被大多数人知道的时候,网页制作很强调一致性,也就是说让网页在所有用户的机器上的显示基本一样。这里最大的影响因素是字体大小。由于浏览器本身提供了调整字体大小的功能,因此,通过font标签的size属性设置的字体大小会随着浏览器设置而改变。幸运的是,CSS中有一个固定的单位——px。于是,人们开始使用CSS定义字体大小,通常会给body定义一个默认字体大小,在中国,这个值通常是12px。后来,有人注意到视力差的人看12px的字很吃力。那调整到14px?16px?不行,对于视力正常的人来说,12px还是最美的。那怎么办呢,难道要做好几套页面?这明显不划算,于是,浏览器的字体大小设置又一次登上历史舞台,但是在XHTML+CSS的页面中,已经不提倡用font标签定义字体大小,所以一些开发者开始应用有异曲同工效果的em单位。然而,em的一些缺点却限制了它的应用:

1399次阅读,1条评论

从交换两个变量的值想到的

其他开发  |  8年前

以C语言为例,一般来说,交换两个变量的值需要用到一个中间变量:

int a, b;
a = 10;
b = 11;
int c; // 中间变量
c = a;
a = b;
b = c;

但也可以省掉这个中间变量,只是运算的次数增多了:

int a, b;
a = 10;
b = 11;
b = a + b; // 得出两数字的和
a = a - b; // a减去两数字的和就得出原来的b的负值
a = -a;
b = b - a; // 两数字的和减去原来b的值,就得出原来a的值

这是一个典型的时空问题:如果想省掉一个变量(节省内存),就需要多几次运算(运算时间更长)。在目前内存价格低廉的情况下,当然会选择用空间交换时间。

444次阅读,0条评论