主要知识点:rotate旋转以及  outline透明的像素消除(明显降低)火狐旋转是产生的 锯齿 

首先看结构:

    <li class="flip-container  " ontouchstart="this.classList.toggle('hover');">
<a href="brandLi.html" class="flipper">
<div class="front">前面</div>
<div class="back" >后面</div>
</a>
</li>

结构上没啥特别的,注意 里面的 front 和back 用绝对位置;以防出现问题

直接用 HTML5 API里:classList;

在HTML5 API里,页面DOM里的每个节点上都有一个classList对象,可以使用里面的方法新增、删除、修改节点上的CSS类。使用classList,也可以用它来判断某个节点是否被赋予了某个CSS类;

{
length: {number}, /* # of class on this element */
add: function() { [native code] },
contains: function() { [native code] },
item: function() { [native code] }, /* by index */
remove: function() { [native code] },
toggle: function() { [native code] }
}

还有一个小问题,就是旋转时候,哪怕不旋转 单独设置 -moz-transform:  rotateY(30deg); 火狐浏览器下面  元素边缘锯齿问题比较明显注意firebug 调试 outline属性

上诉图片 蓝色的 设置了起始旋转30度,火狐下明显有锯齿。别的浏览器没有很仔细的观察,这是加个属性  outline:1px solid transparent;

<div class="front " style="outline:1px solid transparent;background:blue; color:#fff;  -moz-transform:  rotateY(30deg);overflow:hidden;">前面  针对火狐 outline:1px solid transparent用于消除锯齿</div>

另外 ,总感觉好像哪里不协调;如果仔细观察,会发现网上的某些3D翻转效果和我上边的例子的效果有些不同。如果你使用右边为轴进行翻转,你会发现卡片会翻出容器之外。这不仅仅是翻转了卡片,还使卡片的的边从右边移动到了左边; 要针对处理 transform-origin: right center; 以及水平位移的距离 transform: translateX( -100% ) rotateY( -Xdeg ); 下面代码中没有优化; 360 浏览器支持的不是很好

下面附上代码:

 <!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>css3 翻牌 以及css3边缘锯齿问题</title>
</head> <body>
<style>
*{ margin:0; padding:0;}
ul,li{ list-style:none; margin:0; padding:0;} .brandsShow{ width:1200px; height:620px; margin:0 auto; }
.brandsShow ul{ margin-left:-20px; width:1225px; height:auto; }
.brandsShow ul li{ float:left; display:inline; width:283px; height:424px; } .flip-container {perspective: 1000;
-webkit-perspective: 1000px; /*父类容器中 perspective 子类允许透视*/
-moz-perspective: 1000px;
-ms-perspective: 1000px;
-o-perspective: 1000px;
perspective: 1000px;
margin:0px auto;
float:left; margin-left:20px; margin-bottom:20px; border:1px solid #333;
} .flip-container, .front, .back {width: 283px;height: 424px;} .front, .back {
backface-visibility: hidden;
overflow:hidden;
-webkit-transition: .8s ease-out;
transition: .8s ease-out;
-webkit-transform-style: preserve-3d; /* 子类保留3d动画结果*/
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
position: absolute;top: 0;left: 0; /*动画元素最好绝对位置*/
} .front img, .back img{ width:283px; height:424px; } .front {z-index: 2; /*起始设置层 hover时候改变*/
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg);
transform: rotateY(0deg);
} .back { z-index:1;/*起始设置层 hover时候改变*/
-webkit-transform: rotateY(-180deg);
-moz-transform: rotateY(-180deg);
-ms-transform: rotateY(-180deg);
-o-transform: rotateY(-180deg);
transform: rotateY(-180deg);
} .flipper {
-webkit-transition: transform .8s ease-in-out;
-moz-transition: transform .8s ease-in-out;
-ms-transition: transform .5s ease-in-out;
-o-transition: transform .5s ease-in-out;
transition: transform .5s ease-in-out; -webkit-transform-style: preserve-3d; /*使其子类变换后得以保留 3d转换后的位置*/
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
display:block;position: relative;
} .flip-container:hover .back {
-webkit-transform: rotateY(0deg);
-moz-transform: rotateY(0deg);
-ms-transform: rotateY(0deg);
-o-transform: rotateY(0deg);
transform: rotateY(0deg);
z-index:2;
} .flip-container:hover .front {
-webkit-transform: rotateY(180deg);
-moz-transform: rotateY(180deg);
-ms-transform: rotateY(180deg);
-o-transform: rotateY(180deg);
transform: rotateY(180deg);
z-index:10;
} </style> <ul style=" margin-top:30px;">
<li class="flip-container " ontouchstart="this.classList.toggle('hover');">
<a href="brandLi.html" class="flipper">
<div class="front " style="outline:1px solid transparent; overflow:hidden"><img src="../images/TaylorSwift.jpg">前面</div>
<div class="back " ><img src="../images/ameriancaptain.jpg">后面</div>
</a>
</li> <li class="flip-container " ontouchstart="this.classList.toggle('hover');">
<a href="brandLi.html" class="flipper">
<div class="front " style="outline:1px solid transparent;background:blue; overflow:hidden; color:#fff;">前面 针对火狐 outline:1px solid transparent用于消除锯齿</div>
<div class="back " style="outline:1px solid transparent;background:#333; color:#fff">后面</div>
</a>
</li>
</ul> </body>
</html>

 顺便提一句:

,ie 6 , ie7 js也是支持rotate() 的;不过运动中心默认不是 transform-origin:center center;需要js修正;

2,transform属性:skew,rotate,translate 等其实归更到底都是通过matrix矩阵变换实现的;

下面说明   matrix的属性

本文地址:http://www.cnblogs.com/surfaces/

css3 翻牌(rotate) 以及翻转 导致边缘锯齿解决 方法的更多相关文章

  1. XCode编译文件过多导致内存吃紧解决方法

    XCode编译文件过多导致内存吃紧解决方法 /Users/~~/Library/Developer/Xcode/DerivedData 1) 然后 找到编译文件 删除 就好了哦 快去试试看吧

  2. Jquery方法load之后导致js失效解决方法

    Jquery方法load之后导致js失效解决方法 >>>>>>>>>>>>>>>>>>> ...

  3. yum安装命令:遇到的问题报错如下: File "/usr/bin/yum", line 30 except KeyboardInterrupt, e: 通过看报错可以了解到是使用了python2的语法,所以了解到当前yum使用的Python2,因为我单独安装了python3,且python3设置为默认版本了,所以导致语法问题 解决方法: 使用python2.6 yum install

    1.安装zip yum install -y unzip zip 2.安装lrszs yum -y install lrzsz 3.安装scp 遇到下面的问题: 结果提示: No package sc ...

  4. 阿里云提出的漏洞(Phpcms V9某处逻辑问题导致getshell漏洞解决方法)的问题

    最近从阿里云云盾检测流出来的,相比使用阿里云服务器的朋友已经收到漏洞提醒:Phpcms V9某处逻辑问题导致getshell漏洞解决方法,这个漏洞怎么办呢?CMSYOU在这里找到针对性解决办法分享给大 ...

  5. C# Winform频繁刷新导致界面闪烁解决方法

    C#Winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供的默认双缓冲将 ...

  6. winform频繁刷新导致界面闪烁解决方法

    转自龙心文 原文 winform频繁刷新导致界面闪烁解决方法 一.通过对窗体和控件使用双缓冲来减少图形闪烁(当绘制图片时出现闪烁时,使用双缓冲) 对于大多数应用程序,.NET Framework 提供 ...

  7. C# WinForm页面切换导致闪烁的解决方法

    问题描述 界面上放置大量的控件(尤其是自定义控件)会导致在窗体加载时,速度变得缓慢:当切换页面时,也会时常产生闪烁的问题,非常影响用户体验. 解决方法 将此代码写在要解决闪烁问题的父窗体中: prot ...

  8. C# WinForm页面切换导致闪烁的解决方法(转)

    问题描述 界面上放置大量的控件(尤其是自定义控件)会导致在窗体加载时,速度变得缓慢:当切换页面时,也会时常产生闪烁的问题,非常影响用户体验. 解决方法 将此代码写在要解决闪烁问题的父窗体中: prot ...

  9. 解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)

    文章转载自:http://www.cnblogs.com/amoniyibeizi/p/4486617.html 前几天学MVC过程中,遇到更改Model类以后,运行程序就会出现数据已更改的问题导致调 ...

随机推荐

  1. JS学习笔记-OO疑问之对象创建

    问一.引入工厂,解决反复代码 前面已经提到,JS中创建对象的方法,不难发现,主要的创建方法中,创建一个对象还算简单,假设创建多个类似的对象的话就会产生大量反复的代码. 解决:工厂模式方法(加入一个专门 ...

  2. Swift难点-继承中的构造规则实例具体解释

    关于继承中的构造规则是一个难点. 假设有问题,请留言问我. 我的Swift新手教程专栏 http://blog.csdn.net/column/details/swfitexperience.html ...

  3. firefox os 2.1版本号UI接口方面有了质的飞跃

    由Mozilla新的移动设备操作系统开发Firefox os 经过多次迭代,我们看到的版本号Mozilla进步和艰辛,在充满当然,任何Android设备的情况下,坚持一个新的操作系统的移动设备,后1. ...

  4. .NET/C# RabbitMQ

    本系列文章均来自官网原文,属于个人翻译,如有雷同,权当个人归档,忽喷. RabitMQ 是一个消息中间件,其实就是从消息生产者那里接受消息,然后发送给消息消费者.在这个传输过程中,可以定义一些缓存,持 ...

  5. 很实用的FTP操作类

    using System; using System.Net; using System.Net.Sockets; using System.Text; using System.IO; using ...

  6. Java容器的概要

    [Java流输入/输出原理] 在Jaav程序.对于输入数据/输出操作"流"(stream)时尚:J2SDK它提供了多种 各种各样的"流"类,用于获得不同类型的数 ...

  7. 8 shell命令之find

    find命令,像cd一样经常使用.只是可能大多数时间仅仅要那么一两个參数就足够使用了.或者说,勉强够用了.可是当我们主动的去翻看一下find的手冊,会发现原来更实用的功能都没实用到. 本文结合自己的使 ...

  8. NYOJ710 外星人的供给站 【贪心】

    外星人的供给站 时间限制:1000 ms  |  内存限制:65535 KB 难度: 描写叙述 外星人指的是地球以外的智慧生命.外星人长的是不是与地球上的人一样并不重要,但起码应该符合我们眼下对生命基 ...

  9. 懒人模式Singleton模式Meyers版本号

    直接看代码: /* Singleton模式保证:在一个程序,,一个类有且只有一个实例.并提供一个访问 它的全局访问点 在编程其中.很多情况下,需要确保有一类的一个实例 比如: windopws系统中仅 ...

  10. Java 8 时间日期库的20个使用示例

    java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...