哈哈,让你的页面旋转一下
十一月 25th, 2009 by 裕波
今天网上闲逛,看到克军写了一句话,恶搞一下。凭着这句话的吸引力,我点进去了。
哇,居然页面倒过来了,页头和页脚翻了一个根头,其实我以前还在想,背景图片是不是可以这样呢,今天至少在页面上看到了。
真好奇,立即启动火狐看了一下,哈哈,找到原因了,马上在试了一下IE,搞定,也OK,哈哈,如果不知道的同学们,我想你们也想知道这是怎么回事吧。
其实就是这个东东在做怪。。。
-moz-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
三行代码,分别用来支持moz,webkit和IE的内核的浏览器。
我们看看克军是怎么做的呢,他使用了JS,让代码立即执行的方式。。给页面增加一个<sytle>和相应的样式,并且为body增加相应的class.下面我将他的js代码贴出来。嘿嘿!
<script> ;(function(){ var d = document, n = d.createElement('style'), r='.flip { -moz-transform: rotate(180deg); -webkit-transform: rotate(180deg); filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); }'; n.type = 'text/css'; if(n.styleSheet){ n.styleSheet.cssText = r; }else{ n.appendChild(d.createTextNode(r)) } d.getElementsByTagName('head')[0].appendChild(n); d.body.className += ' flip'; })(); </script>
为了使用document方便,他把document传给了变量d,建立了一个style标签为变量n,把样式的内容传给
了变量r,克军的命名都很简洁。
在为这个n其实就是style标签了type这个属性。
下面是进行判断页面中style有不有属性,如果没有,直接将r,也就是样式的内容放入n中。
如果有,就得使用建立文本并且追加的方式。
我不知道我的解释对不对哈,反正大概意思就是这样的,欢迎指正。
一切准备就绪以后,就将n添加到head中去,在将class增加到body上,这样页面一加载。。。。你的页面就会被旋转180度,当然你可以旋转90度,10度,数字是可以调整的哟。
4 Responses to “哈哈,让你的页面旋转一下”
-
我试了2次,Firefox3.6beta4下会蓝屏!
Firefox3.5.5就没有问题。 -
其实亮点在n.styleSheet.cssText = r;我之前也想过用动态创建标签,然后往里填内容的方式修改页面内元素的样式,代替node.style = xxx这种低效率的做法。styleNode.innerHTML = “xxx{xxxx} xxx{xxx}”这种写法在firefox下可行,但IE下styleNode.innerHTML是只读的,所以我放弃了。想不到还可以用n.styleSheet.cssText = r;来在IE下对标签写内容。
用这种方式写样式,还可以写:hover伪类怕种node.style = xxx无法完成的功能!例如:
hello worldvar nod = document.createElement(”style”), str = “body{background:#000;color:#fff} a{color:#fff;text-decoration:none;} a:hover{color:red;text-decoration:underline}”;
nod.type=”text/css”;
if(nod.styleSheet){
nod.styleSheet.cssText = str;
} else {
nod.innerHTML = str;
}
document.getElementsByTagName(”head”)[0].appendChild(nod);如果你想通过node.style = xxx来写的话,是没办法对伪类写样式的。
Leave a Reply
功能列表
关于我
周裕波,web前端开发从业者,互联网爱好者。
gtalk:itchina110@gmail.com
@lovevfp
很有意思的,学习学习