代码之家  ›  专栏  ›  技术社区  ›  Adam Davis

通过代码旋转网页?

  •  51
  • Adam Davis  · 技术社区  · 15 年前

    我希望有一个相对简单的方法可以将一个网页旋转一点,30度左右,同时保持它的功能和可用性。

    我完全控制了这个页面,如果需要的话,我可以修改它使之更容易。不过,我不想用SVG重新编写整个过程,但也许JavaScript和画布可以工作?

    有没有一种方法可以使用CSS、javascript或其他跨浏览器方法来实现这一点?

    6 回复  |  直到 10 年前
        1
  •  37
  •   Joel    15 年前

    这是另一个基于矩阵滤波器的解决方案,它在IE中工作。

    http://www.boogdesign.com/examples/transforms/matrix-calculator.html

    -30度的CSS为:

    .rotate
    {
      -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.86602540, M12=0.50000000, M21=-0.50000000, M22=0.86602540,sizingMethod='auto expand')";
      filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.86602540, M12=0.50000000, M21=-0.50000000, M22=0.86602540,sizingMethod='auto expand');
      -moz-transform:  matrix(0.86602540, -0.50000000, 0.50000000, 0.86602540, 0, 0);
      -webkit-transform:  matrix(0.86602540, -0.50000000, 0.50000000, 0.86602540, 0, 0);
      -o-transform:  matrix(0.86602540, -0.50000000, 0.50000000, 0.86602540, 0, 0);
    }
    

    测试页示例:

    <html>
      <head>
        <style type="text/css" media="screen">
        body {
          -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.86602540, M12=0.50000000, M21=-0.50000000, M22=0.86602540,sizingMethod='auto expand')";
          filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.86602540, M12=0.50000000, M21=-0.50000000, M22=0.86602540,sizingMethod='auto expand');
          -moz-transform:  matrix(0.86602540, -0.50000000, 0.50000000, 0.86602540, 0, 0);
          -webkit-transform:  matrix(0.86602540, -0.50000000, 0.50000000, 0.86602540, 0, 0);
          -o-transform:  matrix(0.86602540, -0.50000000, 0.50000000, 0.86602540, 0, 0);
        }
        </style>
      </head>
      <body>
        <p>Testing</p>
        <p><a href="http://www.boogdesign.com/examples/transforms/matrix-calculator.html">Matrix calculator here</a></p>
      </body>
    </html>
    

    有关计算矩阵坐标的详细信息,请参见:

    http://msdn.microsoft.com/en-us/library/ms533014(VS.85).aspx http://www.boogdesign.com/b2evo/index.php/2009/09/04/element-rotation-ie-matrix-filter?blog=2

        2
  •  30
  •   Doug Neiner    15 年前

    嘿,亚当,这将适用于新版的火狐和Safari:

    body {
        -webkit-transform: rotate(-30deg);
        -moz-transform: rotate(-30deg);
    }
    

    对于Internet Explorer,您可以查看 Transformie 或阅读 matrix filter 对于IE.

        3
  •  2
  •   Gaff    11 年前

    要旋转整个网页,可以使用jquery transit并执行以下操作:

    $("body").transition({rotate: "30deg"}, 6000);
    

    或者,如果您希望它立即是静态的,您可以这样做:

    $("body").css({rotate: "30deg"});
    

    JS Fiddle Demo

        4
  •  1
  •   fretje    14 年前

    您可以在这里找到SVG解决方案:

    http://simulacrum.dorm.duke.edu/allyourgoogle.svg

    这在纯CSS中是相同的(不过目前只在基于WebKit的浏览器中工作):

    http://a.qoid.us/google.html

        5
  •  1
  •   hannson    14 年前

    您可以使用SVG和 <foreignObject>

    <svg xmlns = "http://www.w3.org/2000/svg"> 
      <g transform="translate(300, 0) rotate(20)"> 
        <foreignObject x="10" y="10" width="800" height="800"> 
          <body xmlns="http://www.w3.org/1999/xhtml"> 
            <iframe src="http://stackoverflow.com" style="width:700px;height:700px"></iframe> 
          </body> 
        </foreignObject> 
      </g> 
    </svg>
    
        6
  •  1
  •   Mahdi Abdi    10 年前
    <script language="JavaScript1.2">
    
    var howOften = 5; //number often in seconds to rotate
    var current = 0; //start the counter at 0
    var ns6 = document.getElementById&&!document.all; //detect netscape 6
    
    // place your images, text, etc in the array elements here
    var items = new Array();
        items[0]="<a href='link.htm' ><img alt='image0 (9K)' src=' /Images/image0.jpg' height='300' width='300' border='0' /></a>"; //a linked image
        items[1]="<a href='link.htm'><img alt='image1 (9K)' src='/Images/image1.jpg' height='300' width='300' border='0' /></a>"; //a linked image
        items[2]="<a href='link.htm'><img alt='image2 (9K)' src='/Images/image2.jpg' height='300' width='300' border='0' /></a>"; //a linked image
       items[3]="<a href='link.htm'><img alt='image3 (9K)' src='/Images/image3.jpg' height='300' width='300' border='0' /></a>"; //a linked image
        items[4]="<a href='link.htm'><img alt='image4 (9K)' src='/Images/image4.jpg' height='300' width='300' border='0' /></a>"; //a linked image
        items[5]="<a href='link.htm'><img alt='image5 (18K)' src='/Images/image5.jpg' height='300' width='300' border='0' /></a>"; //a linked image
    function rotater() {
        document.getElementById("placeholder").innerHTML = items[current];
        current = (current==items.length-1) ? 0 : current + 1;
        setTimeout("rotater()",howOften*1000);
    }
    
    function rotater() {
        if(document.layers) {
            document.placeholderlayer.document.write(items[current]);
            document.placeholderlayer.document.close();
        }
        if(ns6)document.getElementById("placeholderdiv").innerHTML=items[current]
            if(document.all)
                placeholderdiv.innerHTML=items[current];
    
        current = (current==items.length-1) ? 0 : current + 1; //increment or reset
        setTimeout("rotater()",howOften*1000);
    }
    window.onload=rotater;
    //-->
    </script>
    

    乍一看,此代码可能看起来很吓人。但是,您所要做的就是更新图像文件的路径,并填写链接的URL。当然,您还应该更新高度和宽度属性以适合您的站点。

    如果您只想旋转四个图像,那么只需删除其中一个项目行。如果要添加一个,则复制并粘贴项目[5]并将其更新到项目[6]等。

    现在,您已经为向站点添加这个图像旋转器奠定了基础。但是还有一个步骤你需要做你的图像出现在页面上。找出您希望图像出现在页面上的位置并复制到:

    <layer id="placeholderlayer"></layer><div id="placeholderdiv"></div>