CSSASSCSSASSCSSASS

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

“Javascript”目录存档

小试canvas鼠标绘图

2010年09月2号,星期四

只是小小的Demo。

html canvas应用前景将无可限量——刚看到baidu UEO有一个鼠标点分析热力图的项目。

因为粗略的做好后,没怎么测试就直接发上来了。所以有了些问题,现已修改。
感谢BoKeam的提醒,呵呵。

我之前用window.onload来绑定函数修改canvas的高度,这通过运行框运行open新页面,在chrome下获取document.documentElemnet.offsetHeight时会等于0,导致绘图板高度也没了。
另外发现,Opera下绘线同其他浏览器有点差别:单独的一个path(即同上一次的path没有瓜葛),如果没有moveTo设置起点,一般浏览器会以第一个lineTo为起点,这在Opera下是不正确的。

模拟引力环境下的运动轨迹

2010年08月28号,星期六

话说这篇文章的起源还得从1643年1月4日谈起。这一天,一位引领人类认知世界的巨人诞生了,他就是艾萨克·牛顿(Isaac Newton)。
扯远了,就近一点:2010年1月4日,为了纪念牛顿,google设计了一个Google Doodles
看这里:今日google纪念logo,典型的物理运动实现
进口审核剪切版:

随后,我便模拟了一个重力环境下的抛物线运动:

模拟采用的公式

    Function: 对于运动瞬间
  1. V=V0+aT;
  2. S=S0+VT;
  3. T:运动的时间间隔,是固定值。

这个公式有别于那种运动模拟中常用的补间动画公式(tween算法)。
补间动画是需要事先确定总路程,和总时间的,
而我们模拟的运动轨迹没有事先计算,因为我们运动中间或许还有一些变数,比如撞击,主动改变方向(键盘控制)等等,所以我觉得这个物理公式更能模拟出真实的各种运动。

直至本月前两天,某同事向我展示了这个:
重力版google(浏览首选chrome,safari,次选opera,firefox,若是ie9以下请无视)
膜拜啊。js且不论,css3已经大量使用了。我还只局限用用阴影,圆角呢。

不才,也做一个关于落体,撞击,摩擦的简单模拟。以表膜拜。

对于这个运动的模拟,我觉得以后倒是可以扩展出一些挺有趣的交互游戏的模拟。比如,射击啊,驾驶啊等等,当然纯属娱乐啦。

google suggestion效果的键盘鼠标事件

2010年08月23号,星期一

google的suggestion功能是一个非常棒的用户体验创新,相信你之前也已经使用过了。不过由于某些原因,国内现在却不能使用这个功能了。
不过,你还可以在baidu上使用相同的功能。对于好点子好创意,模仿学习并不是件坏事。

以下demo,我抛弃suggestion的核心ajax,只是做一下鼠标键盘事件的演示。

volume滑动块——html5中input type=’range’的模拟

2010年08月13号,星期五

为了面向web application,html5在elements上做了很多增强。包括新增了很多元素,如progress,datagrid,video等等,也如包括对input等一些元素做了扩展。
input元素的type做了扩展,type=”range”便是其一。

直接看效果(chrome/safari/opera支持)

作为一个调节量值的滑动块,在未来的应用当中将会很使用的很频繁。

在html5时代还为真正来临时,我们还必须照顾到那些老浏览器。
所以用js模拟一个。(也很简单,使用图片的话,模拟起来就像了。)

附加一个新效果:两个滑块确定一个区间范围。

offsetX/Y for Firefox

2010年07月29号,星期四

现在的相册大多有这个功能,鼠标点在照片的左边,可以跳到上一张,点到右边则跳到下一张。
这就需要一个坐标点的计算:(鼠标相对图片的位置) vs (图片的尺寸/2)。
后一个简单,使用obj.offsetWidth/2。
前一个或许也简单,有个事件属性叫 event.offsetX。
但是很悲剧,firefox并不支持offsetX!

我们要做的就是将offset计算出来,它的值应该等于【鼠标相对窗口的位置(即event.clientX)】减去【图片距离窗口的位置】。
莫非后一项就是obj.offsetLeft吗? 但是又悲剧,其实obj.offsetLeft是元素相对于其parent的距离。

经过以上分析,我们顺理成章想到了以下这个麻烦的办法:从触发元素开始到root节点为止,把所有元素的offsetLeft加起来得到【图片到窗口的距离】。
对,排除投机的办法,唯有这样了。参见:Differences in the event object properties/methods(请搜索pageX)(这里你可以注意一下:当元素是定位元素时候,即relative/absolute元素。那私有属性layerX就等于非firefox浏览器下的offsetX

demo:

两种常见的页面元素fixed/滑动效果。

2010年05月21号,星期五

第一个效果,国外网站用的挺多的。是种不错的用户体验设计。
元素在窗口移到某高度后开始有fixed效果。

众所周知,ie6不支持fixed属性。所以对其是特殊设置,拖动时会有抖动。
注意一下这里:var pos = document.documentElement.scrollTop + document.body.scrollTop;
这是兼容webkit的写法。webkit内核的浏览器下,document.documentElement.scrollTop值始终为0,document.body.scrollTop才有其意。而其他浏览器恰恰想反。

这里的方法只针对了单个元素。如果要应用到多个元素中(实际应用中不太常见吧),还要费些周折。
需要在绑定的方法tip上使用对象作为参数进行传递,对象则对应各个要fixed的元素。

第二种效果,国内用的比较多。特别是以前,一般都是做铺天盖地的浮动广告的。当然,这错不在方法,呵呵。

同样,这里只绑定了一个元素。而这种效果常常是要多个元素一起“飘”的,除了上面一样可以传对象外。
还有个方案:就是无限调用,而不是将方法绑定在window.onscroll 上。
即如下:

这个方案很常用,简单好用。只是效率上可能会被人说道。