GVKun编程网logo

使用css旋转图像(使用css旋转图像的方法)

17

在本文中,您将会了解到关于使用css旋转图像的新资讯,同时我们还将为您解释使用css旋转图像的方法的相关在本文中,我们将带你探索使用css旋转图像的奥秘,分析使用css旋转图像的方法的特点,并给出一些

在本文中,您将会了解到关于使用css旋转图像的新资讯,同时我们还将为您解释使用css旋转图像的方法的相关在本文中,我们将带你探索使用css旋转图像的奥秘,分析使用css旋转图像的方法的特点,并给出一些关于canvas旋转图片、css3 – CSS旋转后Firefox中的抗锯齿文本、CSS旋转&翻转,兼容方案、CSS旋转与翻转使用示例详解的实用技巧。

本文目录一览:

使用css旋转图像(使用css旋转图像的方法)

使用css旋转图像(使用css旋转图像的方法)

我想通过相隔90度的四个方向在网页上旋转图像.我更喜欢这种情况发生在客户端机器上.这可以用css完成吗?或者我需要使用 javascript吗?

感谢您的时间.

解决方法

您可以使用 these CSS transforms在Firefox中执行此操作 – 对于其他浏览器,我认为您需要使用Javascript.我建议你也许看看 Raphael library.

canvas旋转图片

canvas旋转图片

<a name=''canvas旋转图片''></a> canvas旋转图片


&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;canvas旋转图片&lt;/title&gt;
    &lt;style&gt;
        * {
            box-sizing: border-box;
        }
        
        .container {
            margin: 15px;
            border: 1px solid rgb(106, 250, 255);
            padding: 20px;
            background: #fff;
            text-align: center;
        }
        
        .img-block {
            max-width: 400px;
            background: #eee;
            padding: 15px;
            margin: 0 auto 15px auto;
        }
        
        .img {
            display: block;
            max-width: 100%;
        }
        
        .btn {
            padding: 5px 10px;
        }
    &lt;/style&gt;
&lt;/head&gt;

&lt;body&gt;
    &lt;div&gt;
        &lt;div&gt;
            &lt;img src="i.jpg"id="img"&gt;
        &lt;/div&gt;
        &lt;div&gt;
            &lt;button type="button"id="rotate_clockwise" onclick="rotateImage(''img'');"&gt;顺时针旋转90度&lt;/button&gt;
            &lt;button type="button"id="rotate_anticlockwise"&gt;逆时针旋转90度&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;script&gt;
        /*
            imageId: 需要旋转的图片的id;
            direction: 顺时针为1, 逆时针为 - 1;

            思路:
            1. 获取需要旋转图片image的src;
            2. 以此src构建新的图片对象img;
            3. 在img的onload事件中:
                1. 创建一个canvas元素, 它的宽和高分别对应img的高和宽( 因为旋转90度后, 图片的宽高正好是之前的高宽)
                    其中ctx我们可以想象它无限大,注意一点:ctx上绘制的图形只有位置出现在canvas窗口中时,才能显示出来
                2. 绘制图片之前, 一定要先将ctx顺时针旋转90度,( 否则图片没有旋转的效果,因为绘制图片时的ctx状态已被保存下来),但是,绘制出来的图形效果相当于先绘制,再旋转
                    (那到底绘制在哪里,ctx旋转90度则正好全部显示在canvas上?)
                    我们可以将canvas的(0,0)位置当作一个圆心,而ctx就是围绕这个圆心旋转的。
                        我们倒推一下,image顺时针旋转90度后的形状,iamge的左下角成了新图的左上角,且这个左上角位置就在canvas的(0,0)处,ctx旋转时,这个角应该是不动的
                            这样我们只要得出image左上角的坐标就是我们需要寻找的ctx绘图时的起点:
                                左上角坐标(相对canvas来说)应该是(0, -canvas.width);
                3.如果ctx不旋转,那么绘制出的新图正好在canvasde正上方,我们是看不见的;当ctx旋转90度之后,则新图正好处在canvas视窗中,完美呈现(这里我们需要想象一下:canvas大小位置固定,它是用来呈现绘制的图形的窗口;而ctx则是无限大,但是它的起点位置永远都是相对于canvas视窗的左上角,即ctx就是一个以canvas左上角为圆心,半径无限大的圆)
                4.其他几个角度,原理一样
                5.如果角度不是90度的倍数时,则绘图原点就需要使用sin,cos来表示了;
        */      

        function rotateImage(imageId, direction) {
            var image = document.getElementById(imageId);
            var src = image.src;

            var img = new Image();
            img.src = src;
            img.onload = function() {
                var w = this.naturalWidth;
                var h = this.naturalHeight;

                var canvas = document.createElement("canvas");
                canvas.height = w;
                canvas.width = h;
                var ctx = canvas.getContext("2d");
                ctx.rotate(Math.PI / 180 * 90);
                ctx.drawImage(this, 0, -canvas.width);
                var base = canvas.toDataURL("image/jpeg");
                image.src = base;
            }        }
    &lt;/script&gt;
&lt;/body&gt;

&lt;/html&gt;

css3 – CSS旋转后Firefox中的抗锯齿文本

css3 – CSS旋转后Firefox中的抗锯齿文本

所以我已经阅读了很多关于旋转文本的当前状态,并且无法在所有浏览器中完美地获得真正的抗锯齿效果.它看起来像是Chrome中图片中的第一个框,但是firefox中的第二个框格.我尝试过最流行的修复程序,包括-webkit-backface-visibility:hidden; -webkit-字体平滑:抗锯齿;也许还有一个我不记得了.

然而,这不是问同样的问题,而是一个我在任何地方都找不到的新问题.这两个相同框的截图都取自Firefox.底部的锯齿状框架通常看起来像是这样,但是,当我使用css编辑控制台将页面上的另一个(完全不同的)元素与旋转属性混淆时,它会使框完美/平滑…

但是,我必须继续向上或向下按下以更改整个框的另一个元素的旋转值以完美地呈现抗锯齿,然后它返回到它的锯齿状正常自我.我旋转了内容所在的div并将css修复程序放在同一个div上(尽管我确实尝试将css修复程序放在每个元素上)并且我似乎没有像你在框中看到的那样得到任何平滑或反讽以上…仅当我在浏览器中旋转页面上的另一个元素时. WTF?!?!?有没有办法在css中执行此操作,或者只是浏览器实时执行的操作并且无法在CSS中重现这种平滑性?

编辑:PIC评论部分

解决方法

无论出于何种原因,在某些情况下,浏览器在进行复杂变换时会“忘记”抗锯齿文本.

修复:

使用CSS强制浏览器在单独合成的“层”中呈现转换后的元素是一种解决方案:

transform: rotate(…) translate3d(0px,0px,1px);

说明:

许多渲染引擎实现为3d变换元素创建GPU层,并在绘制时将其合成到页面的其余部分.此备用渲染路径可强制使用不同的文本呈现策略,从而实现更好的抗锯齿效果.

警告:

然而,这有点像黑客:首先,我们要求的是一个我们并不想要的三维变换;第二,强制许多不必要的GPU层会降低性能,尤其是在RAM有限的移动平台上.

合成dev.opera.com hosts a good discussion,使用transform3d攻击,以及CSS3将改变属性.

CSS旋转&翻转,兼容方案

CSS旋转&翻转,兼容方案

CSS旋转&翻转,兼容方案 地址:http://www.zhangxinxu.com/wordpress/?p=1637 一、CSS下兼容性的元素水平/垂直翻转实现 随着现代浏览器对CSS3的支持愈发完善,对于实现各个浏览器兼容的元素的水平翻转或是垂直翻转效果也就成为了可能。相关的CSS代码如下: /水平翻转/ .flipx { -moz-transform:scaleX(-1); -webkit-transform:scaleX(-1); -o-transform:scaleX(-1); transform:scaleX(-1); /IE/ filter:FlipH; }

/垂直翻转/ .flipy { -moz-transform:scaleY(-1); -webkit-transform:scaleY(-1); -o-transform:scaleY(-1); transform:scaleY(-1); /IE/ filter:FlipV; } 其中,就目前而言,对于基于webkit核心的浏览器,如Chrome以及Safari,实现元素的垂直翻转或是水平翻转也可以使用如下样式: /水平翻转/ .flipx { transform: rotateY(180deg); }

/垂直翻转/ .flipy { transform: rotateX(180deg); } 注意: 水平翻转或垂直翻转不同于旋转180度。前者以轴为镜像,后者以点为镜像。 如果是对称元素,旋转180度和翻转的显示效果基本上就是一致的,但是,非对称元素就会看到明显差异。 对于后面提到的目前仅webkit核心浏览器支持的rotateY(180deg),这里有个大写的Y。我们都知道Y表示纵轴,所以我们可能会误以为这里实现的是垂直翻转,其实非也,这里的Y表示元素以纵轴为镜像翻转,也就是水平翻转了。 由于这种水平或是垂直翻转性质的东西基本上类似于镜像拷贝,于是,我们在web制作的时候,一旦遇到对称出现的元素的时候,我们只需要处理一个元素就可以了,然后另外一个直接翻转使用下

CSS代码,高级浏览器使用transform,ie用滤镜实现。 1 /水平翻转/ 2 .flipx { 3 -moz-transform:scaleX(-1); 4 -webkit-transform:scaleX(-1); 5 -o-transform:scaleX(-1); 6 transform:scaleX(-1); 7 filter:FlipH(); 8 } 9 /垂直翻转/ 10 .flipy { 11 -moz-transform:scaleY(-1); 12 -webkit-transform:scaleY(-1); 13 -o-transform:scaleY(-1); 14 transform:scaleY(-1); 15 filter:FlipV(); 16 } 17 /顺时针旋转90度/ 18 .rotate90 { 19 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 20 -moz-transform: rotate(90deg); 21 -o-transform: rotate(90deg); 22 -webkit-transform: rotate(90deg); 23 transform: rotate(90deg); 24 } 25 /顺时针旋转180度/ 26 .rotate180 { 27 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2); 28 -moz-transform: rotate(180deg); 29 -o-transform: rotate(180deg); 30 -webkit-transform: rotate(180deg); 31 transform: rotate(180deg); 32 } 33 /顺时针旋转270度/ 34 .rotate270 { 35 filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); 36 -moz-transform: rotate(270deg); 37 -o-transform: rotate(270deg); 38 -webkit-transform: rotate(270deg); 39 transform: rotate(270deg); 40 }

CSS旋转与翻转使用示例详解

CSS旋转与翻转使用示例详解

      css 2.0还是没有翻转的,3.0里面有rotate属性,这个可以把元素进行任意角度旋转,灰常强大,下面有个不错的示例,大家可以参考下

一个项目中要画一个图,有横坐标和纵坐标,纵坐标需要文字转过来竖排,baidu了一圈,找到一篇文章,有用,转载过来备查

css 2.0还是没有翻转的,3.0里面有rotate属性,这个可以把元素进行任意角度旋转,灰常强大。除了这个rotate,还有一个scale,一般用法格式是

-moz-transform:scale(1,1);

括弧里面(1,1)前者表示X轴,后者表示Y轴,当数字大于1时放大,大于0并小于1时缩小,很好理解,那么负数是怎样的效果?答案是 翻转 。

-moz-transform:scale(-1,1);

表示水平翻转;

-moz-transform:scale(1,-1);

表示垂直翻转。

不过这些都是moz或者webkit的,万恶的IE怎么办?
于是我们想到滤镜,滤镜里面有这么一堆东西:

顺时针旋转图片90度
picID.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
旋转180度
picID.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
逆时针旋转90度
picID.style.filter="progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";

有没有想问“rotation=4”什么效果? 面壁去...90、180、270都出来了,还要rotation=4实现360干嘛,感觉这个很费呢。不过这个是静态费,如果动态的话,这个就是必须的了。假如用js控制元素旋转,从0顺时针旋到270的时候,如果没有360的话,那么270会快速的逆时针回到0,这样就2了,所以要给个360过渡,让270自然到360,然后再循环,这样就流畅了……

这跟css3的rotate差不多,不过只能固定角度的旋转,来个顺时针15度就没折了,css确实很轻松的transform:rotate(15deg);

不过这样也只是实现了“旋转”,还有“翻转”没实现。IE的翻转就需要用到这个:

水平翻转:filter:FlipH;
垂直翻转:filter:FlipV;

这样就齐全了

具体代码:
1、水平翻转-moz-transform:scale(-1,1);
-webkit-transform:scale(-1,1);
-o-transform:scale(-1,1);
transform:scale(-1,1);
filter:FlipH;

2、垂直翻转
-moz-transform:scale(1,-1);
-webkit-transform:scale(1,-1);
-o-transform:scale(1,-1);
transform:scale(1,-1);
filter:FlipV;

3、顺时针旋转90度

-moz-transform:rotate(90deg);
-webkit-transform:rotate(90deg);
-o-transform:rotate(90deg);
transform:rotate(90deg);
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);

关于使用css旋转图像使用css旋转图像的方法的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于canvas旋转图片、css3 – CSS旋转后Firefox中的抗锯齿文本、CSS旋转&翻转,兼容方案、CSS旋转与翻转使用示例详解的相关知识,请在本站寻找。

本文标签: