热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

css3翻牌(rotate)以及翻转导致边缘锯齿解决方法

主要知识点:rotate旋转以及outline透明的像素消除(明显降低)火狐旋转是产生的锯齿首先看结构:1<liclassflip-contai

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

 

首先看结构:

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

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

直接用 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 浏览器支持的不是很好

 

 

 

下面附上代码:

  1 doctype html>
  2 <html>
  3 <head>
  4 <meta charset="utf-8">
  5 <title>css3 翻牌  以及css3边缘锯齿问题title>
  6 head>
  7 
  8 <body>
  9 <style>
 10 *{ margin:0; padding:0;}
 11 ul,li{ list-style:none; margin:0; padding:0;}
 12 
 13 
 14 .brandsShow{ width:1200px; height:620px; margin:0 auto;  }
 15 .brandsShow ul{ margin-left:-20px; width:1225px; height:auto;  }
 16 .brandsShow ul li{ float:left; display:inline; width:283px; height:424px;  }
 17 
 18 .flip-container {perspective: 1000;
 19     -webkit-perspective: 1000px;    /*父类容器中  perspective  子类允许透视*/
 20     -moz-perspective: 1000px;
 21     -ms-perspective: 1000px;
 22     -o-perspective: 1000px;
 23      perspective: 1000px;
 24      margin:0px auto; 
 25      float:left; margin-left:20px; margin-bottom:20px; border:1px solid #333;
 26      }
 27  
 28 
 29 .flip-container, .front, .back {width: 283px;height: 424px;}
 30 
 31 .front, .back {
 32     backface-visibility: hidden; 
 33     overflow:hidden;
 34     -webkit-transition: .8s ease-out;
 35     transition: .8s ease-out;
 36   -webkit-transform-style: preserve-3d;  /* 子类保留3d动画结果*/
 37    -moz-transform-style: preserve-3d; 
 38    -ms-transform-style: preserve-3d;
 39    -o-transform-style: preserve-3d;
 40    transform-style: preserve-3d;
 41    position: absolute;top: 0;left: 0; /*动画元素最好绝对位置*/
 42    }
 43 
 44 .front img, .back  img{ width:283px; height:424px; }
 45 
 46 .front {z-index: 2; /*起始设置层  hover时候改变*/
 47 -webkit-transform: rotateY(0deg);
 48 -moz-transform: rotateY(0deg);
 49 -ms-transform:  rotateY(0deg);
 50 -o-transform:  rotateY(0deg);
 51 transform: rotateY(0deg);
 52 }
 53 
 54 .back { z-index:1;/*起始设置层  hover时候改变*/
 55 -webkit-transform: rotateY(-180deg);
 56 -moz-transform: rotateY(-180deg);
 57 -ms-transform:  rotateY(-180deg);
 58 -o-transform:  rotateY(-180deg);
 59 transform: rotateY(-180deg);
 60 }
 61 
 62 
 63 
 64 .flipper {
 65       -webkit-transition: transform .8s ease-in-out;
 66       -moz-transition: transform .8s ease-in-out;
 67       -ms-transition: transform .5s ease-in-out;
 68       -o-transition: transform .5s ease-in-out; 
 69       transition: transform .5s ease-in-out;
 70 
 71       -webkit-transform-style: preserve-3d;  /*使其子类变换后得以保留 3d转换后的位置*/
 72       -moz-transform-style: preserve-3d;
 73       -ms-transform-style: preserve-3d;
 74       -o-transform-style: preserve-3d;
 75       transform-style: preserve-3d; 
 76       display:block;position: relative;
 77      }
 78       
 79    
 80 .flip-container:hover .back {
 81      -webkit-transform: rotateY(0deg);
 82      -moz-transform:  rotateY(0deg);
 83      -ms-transform:  rotateY(0deg);
 84      -o-transform:  rotateY(0deg);
 85      transform: rotateY(0deg);
 86       z-index:2; 
 87       }
 88       
 89 .flip-container:hover .front { 
 90       -webkit-transform: rotateY(180deg);
 91       -moz-transform: rotateY(180deg);
 92       -ms-transform:  rotateY(180deg);
 93       -o-transform:  rotateY(180deg); 
 94       transform: rotateY(180deg);
 95       z-index:10;
 96       }
 97 
 98 
 99 style>
100 
101 
102  <ul style=" margin-top:30px;">
103     <li class="flip-container  " ontouchstart="this.classList.toggle('hover');">
104       <a href="brandLi.html" class="flipper">
105       <div class="front "  style="outline:1px solid transparent; overflow:hidden"><img src="../images/TaylorSwift.jpg">前面div>
106       <div class="back " ><img src="../images/ameriancaptain.jpg">后面div>
107       a>
108    li>
109     
110    <li class="flip-container  " ontouchstart="this.classList.toggle('hover');">
111      <a href="brandLi.html" class="flipper">
112     <div class="front " style="outline:1px solid transparent;background:blue; overflow:hidden; color:#fff;">前面  针对火狐 outline:1px solid transparent用于消除锯齿div>
113     <div class="back " style="outline:1px solid transparent;background:#333; color:#fff">后面div>
114     a>
115    li>
116   ul>
117 
118 body>
119 html>

 顺便提一句:

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

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

下面说明   matrix的属性

 

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

 


推荐阅读
  • SSL 错误:目标主机名与备用证书主题名称不匹配
    在使用 `git clone` 命令时,常见的 SSL 错误表现为:无法访问指定的 HTTPS 地址(如 `https://ip_or_domain/xxxx.git`),原因是目标主机名与备用证书主题名称不匹配。这通常是因为服务器的 SSL 证书配置不正确或客户端的证书验证设置有问题。建议检查服务器的 SSL 证书配置,确保其包含正确的主机名,并确认客户端的证书信任库已更新。此外,可以通过临时禁用 SSL 验证来排查问题,但请注意这会降低安全性。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
  • 本文深入探讨了HTTP头部中的Expires与Cache-Control字段及其缓存机制。Cache-Control字段主要用于控制HTTP缓存行为,其在HTTP/1.1中得到了广泛应用,而HTTP/1.0中主要使用Pragma:no-cache来实现类似功能。Expires字段则定义了资源的过期时间,帮助浏览器决定是否从缓存中读取资源。文章详细解析了这两个字段的具体用法、相互关系以及在不同场景下的应用效果,为开发者提供了全面的缓存管理指南。 ... [详细]
  • 在处理大图片时,PHP 常常会遇到内存溢出的问题。为了避免这种情况,建议避免使用 `setImageBitmap`、`setImageResource` 或 `BitmapFactory.decodeResource` 等方法直接加载大图。这些函数在处理大图片时会消耗大量内存,导致应用崩溃。推荐采用分块处理、图像压缩和缓存机制等策略,以优化内存使用并提高处理效率。此外,可以考虑使用第三方库如 ImageMagick 或 GD 库来处理大图片,这些库提供了更高效的内存管理和图像处理功能。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析
    基址获取与驱动开发:内核中提取ntoskrnl模块的基地址方法解析 ... [详细]
  • 在托管C++中开发应用程序时,遇到了如何声明和操作字符串数组的问题。本文详细探讨了字符串数组在托管C++中的应用与实现方法,包括声明、初始化、遍历和常见操作技巧,为开发者提供了实用的参考和指导。 ... [详细]
  • 本文将深入探讨生成对抗网络(GAN)在计算机视觉领域的应用。作为该领域的经典模型,GAN通过生成器和判别器的对抗训练,能够高效地生成高质量的图像。本文不仅回顾了GAN的基本原理,还将介绍一些最新的进展和技术优化方法,帮助读者全面掌握这一重要工具。 ... [详细]
  • 利用 Python 中的 Altair 库实现数据抖动的水平剥离分析 ... [详细]
author-avatar
儒雅的天麟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有