我希望有一种相对简单的方法可以将网页旋转一点点,大约30度左右,同时仍然保持其功能齐全和可用。
我完全控制了页面,并且可以根据需要对其进行修改以使其更容易。不过,我宁愿不在SVG中重写整个内容,但也许javascript和canvas会起作用吗?
有没有办法使用CSS,Javascript或其他一些允许我完成此操作的跨浏览器方法?
答案 0 :(得分:37)
这是另一种基于矩阵过滤器的解决方案,适用于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>
有关计算cooridinates矩阵的更多信息,请参阅:
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
答案 1 :(得分:30)
嘿Adam,这将为更新版本的Firefox和Safari处理它:
body {
-webkit-transform: rotate(-30deg);
-moz-transform: rotate(-30deg);
}
对于Internet Explorer,您可以查看Transformie之类的内容,或阅读IE matrix filter的文档。
答案 2 :(得分:2)
要旋转整个网页,您可以使用jQuery Transit并执行以下操作:
$("body").transition({rotate: "30deg"}, 6000);
或者,如果您希望它立即静止,您可以这样做:
$("body").css({rotate: "30deg"});
答案 3 :(得分:1)
您可以在此处找到svg解决方案:
这在纯css中是相同的(此时仅适用于基于webkit的浏览器):
答案 4 :(得分:1)
您可以使用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>
答案 5 :(得分:1)
<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>