【疯狂的菊花系列】全CSS3制作Loading动画

话说上三回,我们用css3的animation让png图片动起来了。

但是美中不足的是,还要画一张图片。如果要求做几个不同大小的菊花,或者要换个颜色,又或者要不同的地方用不同的颜色和大小的菊花,得找到原图(psd之类的)再导出一个不同的size,个人感觉蛋疼死了。

这次咱们用css3来画那几个点,让它能大能小能色,嘿嘿~~(邪恶了)。

先看看效果吧,用鼠标左键狠狠的砸这里。

菊花上有12个点,我们用12个span标签来做,宽高使用百分比,用来自适应外层容器的变化,圆角设置为100%,就可以保证显示成一个圆了。

接下来的事情就比较痛苦,需要一个个摆到正确的......

【疯狂的菊花系列】Canvas绘制Loading动画

上回说到用png图片来做帧动画,总的来说也没什么大问题,但是画个菊花,按固定角度旋转N次做图实在是蛋疼。

既然怎么样都要画个菊花,那不如就用canvas来画算了。对于不支持canvas的浏览器,可以用svg,原理都差不多。

这个canvas动画的原理跟帧动画也类似,先绘制第一帧的画面,然后擦掉,接着绘制第二帧,以此循环。时间间隔短的话看上去就变成动画了。

具体解释请看代码,有足够的注释,或者也可以点这里看看结果。canvas的api说明可以在这里找到。

window.onload = function(){

var canvas = document.getElem......

【疯狂的菊花系列】制作PNG帧动画Loading

话说上回说到使用css3的animation来制止png格式的菊花,但是目前之后新版的firefox和webkit核心浏览器才支持该动画,那其他浏览器也想用png动画怎么办呢?

这就要提到帧动画的概念了,会flash的都知道,adobe flash软件里有个时间轴和帧的概念,具体解释我就不说了,可以自己google。其原理是事先把一个动画的所有动作的话出来,然后在不同的时间点显示不同的动作,切换的快的话看上去就动起来了。

制作菊花,要先准备一张包含所有菊花状态的图,就像下面这张:

用一个固定大小的窗口显示这张图,定时移动图片的位置,就能让它动起来了。简单的代码......

完美实现溢出文本省略

文本溢出展示省略号的需求经常都会用到,而对于新式的浏览器,这完全不是问题,因为css3里面已经有实现text-overflow:ellipsis,但是最新w3c文档中却移除了这个属性,即使这样,也有不少浏览器实现了这个特性。其浏览器支持情况如下:

Browser

Version

IE

6+

Firefox

-

Opera

11.0+

Safari

3.0+

Chrome

1.0+

可以看到,只有firefox和opera11以下的版本不支持这个浏览器,以此也可以放心大胆的用了。但是遇到要求高的产品经理时(╮(╯_╰)╭),就不得不考虑firefo......

判断浏览器是否支持指定CSS属性

现在css3出来了, 添加了许多新特性,但由于并未全部浏览器都实现了这些特性,使用起来不太顺畅。因此,就想在使用的时候进行判断,如果有这个属性并且支持这种值,就css实现, 否者就用js实现。

比较明显的例子就是text-overflow这个属性,text-flow:clip是大部分浏览器都支持的,而text-flow:ellipsis则在firefox和10.6版本以下opera上工作不了,让人相当头疼。

废话少说,判断的代码如下:

var element = document.createElement('div');

if('textOverf......

【疯狂的菊花系列】使用CSS3制作PNG Loading图

Loading图,也就是俗称的菊花,大部分网站都会用到,而一般情况用的都是gif动画,但是gif能保存的颜色太少,导致有渐变的图导出来后有毛边,很不美观。

不过随着html5和css3的出炉,我们终于可以把loading做的更加美观啦。

之前用png制作loading动画并不是没有,但是需要使用js以及制作一张包含所有动作的png图片(就像跑马灯一样),咱不熟ps,画起来相当吃力。

而在html5/css3的带领下,我们又有了两个新的方法: canvas和css动画。

但是我是相当讨厌用js代替css本身就可以实现的功能,而且本人觉得在cavas上画图太累( 这......

子节点的margin溢出问题

我们知道,css margin是会合并的,有时会导致一些布局问题。

事实上margin还有存在一个溢出的问题: 当其父节点没设置宽高的时候,子节点的margin超出父节点而存在,会导致父节点的left/top产生了偏移,导致position:absolute的节点定位不准确。

我们先看下面这个例子:

more

<!DOCTYPE html>

<html>

<head>

<title>Margin Overflow Test</title>

<meta http-equiv="Content-typ......

富文本兼容性问题归纳(ubuntu)

周五在ubuntu上测了一下重构后的富文本,发现依然存在一个bug: 开启了中文输入法的话, 输入框就监听不到按钮事件了。

这个问题在webqq的聊天框一直存在着,也有很多用户投诉,具体表现为: 切换到中文输入法(ibus or other),输入一段内容后,第一次按下回车键可以发送消息, 之后的回车键都变成输入框的换行了。

花了一个中午排查了下,总算找到原因了:

在ubuntu上面,切换到中文输入法的时候,只有第一次按下的keydown/keyup事件会被抛出,之后都keydown和keyup事件都会被输入法接收且不会冒泡,因此输入框没办法对按钮作出响应。这个行为跟用......

高度超过4096像素的元素边框消失

一个游戏群里的同事提到一个Bug,在他的页面里,实际内容是超过了6000px的,而且给包含内容的容器加了个border: 1px dotted #fff,这时在chrome中就发现左右边框消失了!!!

如果你的是chrome,点击这里查看demo。这个问题相当诡异,如下:

改成2px,border出来了!

改成solid,又出来了!

高度低于4096,呃,又出来了...不过还是少了一些点,改成4095就很正常了...

暂时还没有找到解决办法,chrome处理超过2的40次方之后的数字溢出了,chromium的项目里已经看到有人提了bug,但是到目前为止(chr......

富文本兼容性问题归纳(win)

上周抽空把去年写的富文本重写了一下,封装成基本UI组件,就可以在聊天框之外的地方复用了。个人觉得富文本是个兼容问题最多的模块之一,尤其是文档也没几个,把mozilla的api文档和IE的dom api关于selection和range的看了一个遍,一个个试,总算找到勉强能用的方法。

其实之前的富文本代码太乱,而且还有不少bug,只是产品经理不给时间改,O__O"…

这个富文本没有用iframe来做输入框,原因有二:

iframe是所有dom节点中消耗性能最大的,开多几个ie6/7就会卡到不行了;

因为webqq是多窗口聊天的,当光标点击到输入框时,ifram......

Tags

css3   魅力CSS   nodejs   loading   CSS   疯狂的菊花   html5   animation   compiler   编译脚本   png   WordPress   智能   旅行   优化   模板   历史记录   跨域   manifest   frame   canvas   动画   js   离线应用   codelet   transform   抽取   java   兼容问题   发布脚本   富文本   那一年在他乡   htaccess   iframe   帧动画   加载速度   intelligent   跨浏览器   DNS解析   插件   checkbox   单边   step-start   vary   复选框   自动更新   转换   文本溢出   盒子阴影   menu   blob   西安   滑动背景   box-shadow   内存占用   键盘事件   python   auto   text overflow   background   所见所得   android   rotate   字节数   合并   文本框   slide   字符串连接符   协议   伪类   兄弟选择符   网格   节点位置比较   空白   斜线拼接   自定义命令   溢出   clock   素描   无法更新   分隔符   字符编码   body   下载文件   精灵图   step   nodej   ubuntu   apache   css3选择器   创建文件   多级菜单   编辑状态   ajax   阴影   垂直   chrome   管道   时钟   firefox   背景   文件上传   createobjecturl   游记   下载   放射渐变   版本号   宽高   照片   localStorage   渐变背景   图片   图片拼接   属性值检测   自动生成   计算   返回键   oauth   合图   reset   调用   cavnas   漏洞   按钮   margin   线性渐变   xsrf   被黑   tab   checked   修复   border   消失   step-end   sprite   common-upload   菜单   兄弟选择器   字符串   svn   九寨沟   缩进   css遮罩   svg   添加系统服务   gzip   插入代码   动态   加速   模拟