WEB前端

web前端包括广泛,有设计、开发,这里也关注互联网行业。

哈哈,让你的页面旋转一下

十一月 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 “哈哈,让你的页面旋转一下”

  1. ThinkPad 说:

    很有意思的,学习学习

  2. 裕波 说:

    beta版应该还处于不稳定状态吧

  3. 王文明 说:

    我试了2次,Firefox3.6beta4下会蓝屏!
    Firefox3.5.5就没有问题。

  4. 阿当 说:

    其实亮点在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 world

    var 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

    导航

    关于博客

    博客属于我的个人博客,由于我爱好互联网,从事web前端开发相关工作,建立此博客的目的:积累经验,与行业内的朋友分享,相互讨论。

    Powered by WordPress 备案号:京ICP备09046089号