CSSASSCSSASS

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

  姐姐的婚礼 作者:ONEBOYS    发表时间: 2010年11月19号,星期五     阅读:1,482 次  

2010.11.12日,姐姐踏入了婚姻的殿堂。
这些照片放在这里,一为祝福,二为自勉。





   

  CSS3的崛起——体验webkit的3D-Effect 作者:ONEBOYS    发表时间: 2010年11月16号,星期二     阅读:3,322 次  

在性能保证的前提下,向更高更炫的效果发起冲击是未来Web的一大需求,而CSS必将借此大展抱负,崛起于未来的web技术之林,独树一帜,无可撼动。
在这条道路上,Apple公司无疑是一位先驱:他们要将web交互推入3D时代。
目前,不仅W3C通过了3d-transforms的工作草案,在webkit上3d-transforms也已经实现了。

本文意在体验,浅析3d-transforms,读者如对3d-transforms有技术方面的兴趣,可以阅读以下文档:
W3C的 css3-3d-transforms (工作草案)
Apple的 CSS Visual Effects Guide —— transforms (指南)
Apple的 Visual Effects Transform Functions (属性方法介绍)
westciv.com的 3Dtransforms (可视化演示)
webkit.org的 3D Transforms (有Demo讲解)

警告:以下所有Demo效果须使用safari5,开源的chrominm浏览器进行体验,而即使是在chrome12下的效果也会大打折扣。
下面这个demo来自marcofolio.net:3d animation using pure CSS3
以下是代码删减版

进一步删减

上面的Demo中,我们一直没有应用-webkit-transform-style: preserve-3d;这个属性。
事实上,上面的Demo仅仅是”伪3D”,只是我们面对的是屏幕这样一个2D平面,上面的Demo还无法区分出真3D和伪3D。

我们再看看下面这个真3D的Demo——来自webkit.org

hover状态下transform-style值是flat;未hover状态下是preserve-3d —— 两者的效果差异一目了然。
在上面的Demo中,不仅应用了transform属性,还使用了webkit css中另一个很牛的属性——animation
(而我们最前面的Demo也使用了webkit css中第三个很牛的属性——transition)

参照上面的Demo,我们对原demo也做个修改,

   

  纯css打造投影效果——CSS3属性transform的应用 作者:ONEBOYS    发表时间: 2010年11月3号,星期三     阅读:2,448 次  

刚在twitter上看见这个效果。
Getting Clever with CSS3 Shadows
插播广告——“拥有css3,拥有无限可能。”

这个效果里,除了应用阴影属性box-shadow之外,还需要一个重要属性的支持——transform
其实transform算是一个混合属性,它同canvas和svg的transform一样,带有几个独立的方法:平移(translate),缩放(Scaling),旋转(Rotating),另外,还有一个斜切(Skewing)。其实,斜切和旋转是有关系的:当skewX=-skewY时,它就是一个纯粹的Rotate。

下面就是效果演示。略有改动,原demo没有考虑opera,在此补上。
所以,应该除了ie9以下的浏览器,其他所以用户都能看见效果。

————几分钟之后——————
我们发现safari竟然不支持。
但千万不要怀疑safari的transform能力。——它可是支持3D变换的。
Visual Effects Transform Functions
从中可以看出,safari的transform完全应该可以达到效果的。
(另外,safari的Transition和Animation这两个CSS属性/方法也是异常的强大)

现在把目光转向box-shadow属性。
前面我们的写法是:box-shadow: 100px 0 10px 20px rgba(0,0,0,.2);
这里有5个属性,分别表示 X偏移offset-x,Y偏移offset-y, 模糊半径blur-radius ,延伸半径spread-radius,和 color
这是据MDC的说法,-moz-box-shadow
除了这5个属性值之外,还有一个属性值inset——表示内阴影。另外,这个属性值组还可以设置多组,中间用逗号隔开。
inset值在safari下不支持,这点我们之前就有所了解。除此之外,还有没有其他差异呢?
请看:-webkit-box-shadow
原来safari下还不支持“延伸半径”值。

那么为了兼容safari,我们可以修改一下:

   

  Transform变形方法的可视化演示 作者:ONEBOYS    发表时间: 2010年10月22号,星期五     阅读:3,106 次  

canvas 的变形方法transform是三个基本变形方法的结合,他们是
translate——移动;rotate ——旋转,在transform中分解为x,y两个方向的斜切;和scale——缩放。
他的参数是变形矩阵的六个数值:m11, m12, m21, m22, dx, dy
变形矩阵:

m11 m21 dx
m12 m22 dy
0 0 1

对于transform方法的使用,其实很难把握,所以写了下面这个演示

类似文章:bezierCurveTo方法的可视化操作:贝塞尔曲线的可视化操作实现——Photoshop钢笔工具的初级模拟
关于canvas的其他方法,可以参考这篇文章:MDC的canvas经典教程辑和个人学习笔记

   

  笛卡尔情书的秘密——心形函数的绘制 作者:ONEBOYS    发表时间: 2010年10月18号,星期一     阅读:13,481 次  

r=a(1-sinθ)
据说这是笛卡尔死前寄出的最后一封情书的内容,
这里面隐藏着一个刻骨铭心的秘密。。。
一生只为等待能手绘这个函数给我的人

借助canvas的arc方法,将此函数绘制如下:

如果使用bezierCurveTo方法,绘制各种曲线图形也不在话下,但那并不是通过心形函数本身绘制的。
关于心形线的一些资料
另,可以看下这篇文章:3D版心形函数的绘制

话说,极坐标公式是非常利于绘制图形的。
比如玫瑰线公式:r(θ) = a sin kθ
阿基米德螺线公式:r(θ) = a+bθ
都可以绘制如下:

另外,出于审美需求,我们的心型图形往往是这样的:
17(x^2+y^2)-16*abs(x)*y=225
但是这里所用到的坐标系是直角坐标系,我们需转换成极坐标方程,如下:
r=sqrt(225/(17-16sinθ*sqrt((cosθ)^2)))
最后,是我们的canvas大显身手的时候了: