三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之
三人行必有我师焉,择其善者而从之,其不善者而改之

  天命:响应式布局的单位——VW/VH 作者:Neoxone    发表时间: 2016年12月30号,星期五     阅读:1,669 次  

本文最早发布于知乎的一个回答:vw相比rem,在实际开发中究竟有多大区别?

几年前,人们谈论响应式布局的时候,必会提到一个单位:rem,其基于rem的布局思路影响一直持续到今天。那么rem是否是最好的呢?有没有更合理的布局结局方案呢?以下是原文:

我认为基于vw开发布局比基于rem不知道要高明到哪里去了。

  1. vw可以轻松搞定弹性布局,流体布局。而网上那些吹捧rem的文章,所用的响应式适配方案都是基于弹性布局的。流体布局?人家说了,流体布局不好,见 web app变革之rem
  2. vw逻辑非常清晰,”1vw = 1/100th viewport width”,用viewport width的百分比来设置element width。rem是什么?“The font size of the root element”,就是说你用它来布局,就相当于用font size 来设置 width size,中间你要转一道。

基于以上,我也发出了题主的疑问,为什么rem这种单位会被用来布局,而vw这种天生的布局单位缺鲜有人关注?

所以今天深扒了一下关于这两个单位在 W3C组织 的邮件组里的讨论,
rem这个单位,我能找到的最早讨论是在2002年4月,一封比较各种样式语言的邮件中:http://lists.w3.org/Archives/Public/www-style/2002Apr/0010.html

CSS3 would just need a unit relative to the Root element's EM -- say, 'rem'

之后有理由相信,rem最晚在2003年8月,已经被讨论组内人士所公认,并有可能已处在 w3c 工作组成员的笔记之中:http://lists.w3.org/Archives/Public/www-style/2003Aug/0044.html

According to my experience, when some authors look for exotic ways to define size of some element, it really comes to trying to define size of that element relative to viewport size. Nowadays, one has to use percentages and carefully compute size of every element from root to the element one wants to set size for. This is logical addition to 'rem' unit (root's em).

邮件的作者此时也提出了两个单位:

vpw: viewport width
vph: viewport height

仔细一看,这不就是现在的vw 和 vh 么。

其实,再早半年,也已经有人提出了与 vw 和 vh 接近的概念:http://lists.w3.org/Archives/Public/www-style/2003Feb/0110.html

The unit should be relative to the screen (or paper) width.
The unit should be referenced to the preferred screen resolution.

I suggest those units:
sw8 = (screen.width / 800 ) px;
sw12 = (screen.width / 1200 ) px;
sw16 = (screen.width / 1600 ) px;
sw24 = (screen.width / 2400 ) px;

2005年3月,从一封讨论CSS运算表达式的邮件里 http://lists.w3.org/Archives/Public/www-style/2005Mar/0057.html 可以确定 vw 已基本被定下,同时被定下的还有vh 和 vm (也就是后来的vmin):

the working group recently decided to investigate the implications of allowing simple, linear expressions as values.

Some common cases can be done without expressions, by means of a few new units:

gd = the grid unit from CSS3 Text
rem = the font size of the root element
vw = the viewport width (or 1/100th of it)
vh = the viewport height (or 1/100th of it)
vm = min(vw, vh)

当然

There is not even a draft yet, though.

不过话音刚落,到了当年7月26日,working draft 发布: CSS3 Values and Units

此次是第二次发布CSS3 Values and Units草案,距离首次发布已经过去整整4年,显而易见: ren, vw, vh, vm 是同时进的草案。

之后,2012年3月8日,vm 更改为 vmin。2012年8月28日,发布Candidate Recommendation(备选标准),增加 vmax。截止到现在,CSS3 Values and Units依然处于备选标准阶段,并不是一个正式标准,CSS Values and Units Module Level 3

但俨然它是一个事实标准,因为浏览器厂商从来不是等标准确定后才付之实施,否则就会落后于人。我猜也不乏浏览器厂家在事先实现了某个features,继而正式递交工作组要求成为标准的,当然大多数浏览器厂商本身就是标准制定组成员。所以,虽然同时进入标准,rem 和 vw 的命运还得看浏览器厂家们是否积极去实现。

我们来看看 rem 和 vw 在 Moliza 家的待遇:
2009-01-05:有用户提交bug要求支持rem:472195 – support css3 root em (‘rem’ or ‘re’) units
2009-07-11:有用户提交bug要求实现vw:503720 – Implement vw/vh/vmin/vmax (viewport sizes) from CSS 3 Values and Units
相差半年
2010-1-21: Firefox3.6发布,支持rem:Firefox 3.6 for developers
2013-2-19: Firefox 19发布,支持vw:Firefox 19 for developers
晚了三年

其它各家皆是如此,厚此而薄彼,就导致了如下的支持度差异:
rem:
vw:

回到原题,vw被支持的太晚是其并不流行的根本原因,而当时移动端web app/page的开发需求已经十分旺盛,弹性布局是一种不错的移动端界面兼容展现方式,对于rem机遇就此而来,便成为一个实现弹性布局效果的极佳方案。

其实看目前状况,对vw最不利的是Android Browser,据我调查Android Browser 4.4以下的还占全部Android Browser的 9% 左右, 这个量还是不容忽视的。

好在既然所有最新浏览器都已经支持,那么随着时间推移,相信未来vw必将会流行。

   

  Date对象初始化Month,Day参数的奇葩设定的解释 作者:Neoxone    发表时间: 2014年08月16号,星期六     阅读:5,653 次  

new一个Date对象时,当以年份Y,月份M,日期D为参数传入来设定的时候,我们会发现:月份M是从0开始的,而日期D却是从1开始的。
即:M:0是一月,1是二月,11是十二月,但D:1 是一号,2是二号,31是三十一号。
如下:

是不是觉得很别扭,很奇葩?

对于习惯了以“一月”称呼“January”,“二月”称呼“February”的人来说,让”0″和”一”对应,”1″和”二”对应肯定是超级别扭啊,
但好在我们这种人还属于“猿”类,对于一个程序猿来说,数组的第一位肯定是0,我们晚上数sheep都是从0开始数的,而整个世界也是由0起源的(当然终极是42!)。

如果说程序界都是以0为基数的,那为什么Day又是从1开始呢?
那么我告诉你1Day其实根本不是数组的第一项,Sheep的第一只,一个月的第一天!和月份一样,日期的初始也是0!
当1Day完成的时候,时间就已经过去了二十四小时,一千四百四十分钟,八万六千四百秒了。
所以0Day才是days的开始,那么我们来看看0Day到底是什么时候,让我们从1Day开始往前回溯,慢慢走,时光在此倒流,直到我们来到EVE,其实我们将每一天的开始设在了前夜。
如果按小数来细分的话,每月1号的正午应该算是0.5号,而10号的下午6点就是九又四分之三号!

如果我已经把大家弄糊涂了的话,那么我是故意的,23333。。。

0Day的设计,其实还有一个巨大的好处,我们调用new Date就可以轻松拿到当月的最后一号,而不用你自己去考虑大小月、闰年2月。
如下:

码字充数:
在知乎上看见有人提问javascript 里面为什么不提供date的格式化函数?其实在Firefox上是提供了一个toLocaleFormat方法的。

参考: Date.prototype.toLocaleFormat()

   

  Unicode 的 Emoji表情字符 (另附QQ的Emoticons表情图) 作者:Neoxone    发表时间: 2014年05月9号,星期五     阅读:5,254 次  

Emoji表情对手机控们来说并不陌生,这套表情由日本人栗田穣崇(Shigetaka Kurit)创造,但俨然成了一种全球通用的语言,也难怪Unicode 6.0 中引入emoji表情到标准字符集,当然我个人觉得少不了Apple的推动。
Unicode 6.0.0

我将他们显示到下面(如果你用的是Mac系统或ios系统的safari浏览器,才有最佳效果。chrome浏览器几乎全部不能显示,Firefox和ie还行)

另外也附套QQ的自带表情(里面也包含Emoji)

   

  3D丝网 作者:Neoxone    发表时间: 2014年05月6号,星期二     阅读:5,036 次  

要求浏览器支持WebGL或Canvas,
太久没更新Blog了,拿来充个数,顺便测测手机下能有怎样一个效果。

   

  鲸鱼夫妇(Baby Whale) 作者:Neoxone    发表时间: 2013年07月9号,星期二     阅读:7,699 次  

已经把这个小东西发布到了chrome应用商店。大家可以在chrome浏览器上添加这个扩展应用。安装地址,当然,虽然只是个小东西,可改进的地方还有很多,我会不定时做些修改,如果你有什么改进想法,望不吝赐教。

   
1 / 2912345»...尾页 »