iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >css3怎么实现翻转效果
  • 266
分享到

css3怎么实现翻转效果

2023-06-14 12:06:55 266人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关css3怎么实现翻转效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。CSS3实现翻转效果的方法:1、将外层元素设置perspective;2、将第二包裹层翻转180度,同时设

这篇文章将为大家详细讲解有关css3怎么实现翻转效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

CSS3实现翻转效果的方法:1、将外层元素设置perspective;2、将第二包裹层翻转180度,同时设置过渡速度;3、设置“backface-visibility”;4、设置“z-index”属性;5、让“back”最开始就翻转180度。

CSS3实现翻转(Flip)效果

今天,我们用比较简洁的CSS3来实现翻转效果。

动画效果

css3怎么实现翻转效果

css3怎么实现翻转效果

效果分析

当鼠标滑过包含块时,元素整体翻转180度,以实现“正”“反”面的切换。

html分析

分析:.container.flip为了实现动画效果做准备。.front,.back各包裹一张图片。
实现该效果的HTML如下:

<p class="container">    <p class="flip">        <p class="front">            <img src="images/pic00.jpg" alt="">        </p>        <p class="back">            <img src="images/pic01.jpg" alt="">        </p>    </p></p>

CSS分析

1. 元素布局

为了实现以上效果,先进行元素布局。给.front,.back相对.flip进行绝对定位,让他们在相同位置重叠。
布局部分代码如下:

    .container,.front,.back{width:380px;height:270px;}    .flip{position:relative;}    .front,.back{position:absolute;top: 0px;left: 0px;}

设置之后我们发现.back的图片在.front的上面,因此给.front设置.fornt{z-index:2;}

注意:不要为了防止元素溢出设置overflow属性,这将导致3D效果无法实现。

w3 spec中描述:

The following CSS property values require the user agent to create a flattened representation of the descendant elements before they can be applied, and therefore force the used value of transfORM-style to flat:

  • overflow: any value other than visible.

  • opacity: any value less than 1.

  • filter: any value other than none.

  • clip: any value other than auto.

2. 动画效果的实现

(1) 为了实现动画效果首先给祖先元素.container,.flip设置以下属性,以触发3d效果和设置动画:

.container{perspective:1000;transform-style:preserve-3d;}.flip{transition:0.6s;transform-style:preserve-3d;}

(2)接着,为了让图画翻转时不露出背面,给.front,.back设置backface-visibility属性:
.front,.back{backface-visibility:hidden;}

(3)为了让鼠标滑过包含块时,包含块翻转180度,以实现“正”“反”面的切换。给背面的元素设置transform:rotateY(-180deg),这时我们将无法看到.back

(4)最后,当用户的鼠标滑过.container包含块时,.flip翻转180度,这样,.front翻转180度,由于背面是hidden,无法看见;而.back翻转180度后,回到0度,以正面示人,这样我们就能看到背面了。

代码如下:

    .container{perspective:1000;transform-style:preserve-3d;}    .container,.front,.back{width:380px;height:270px;}    .flip{position:relative;transition:0.6s;transform-style:preserve-3d;}    .front,.back{position:absolute;top: 0px;left: 0px;backface-visibility:hidden;}    .front{z-index:2;}    .back{transform:rotateY(-180deg);}    .container:hover .flip{transform:rotateY(180deg);}

垂直翻转效果实现

垂直效果与水平翻转异曲同工。但是如果你只是把rotateY换成rotateX,那么你会发现图片是以顶部的那条线翻转的。
请注意:在上面的CSS代码中,我并未给.flip设置宽高,所以当给.flip应用transform:rotateY(180deg)时,按照默认的transform-origin值,是以元素的中心点为基本点翻转的。这里.flip的高度是0,所以当然是以顶部的那条线为基础翻转。所以解决的办法有二:

  1. .flip设置和.front,.back相同的宽高。

  2. .flip设置transform-origin:100% 135px属性。
    OK,这样你就会发现垂直翻转是你想要的效果了!

总结

1. 思路

(1)最外层元素设置perspective以实现3D效果。
(2)当鼠标滑过最外层元素时,第二包裹层翻转180度,同时设置过渡速度。
(3)两个翻转块绝对定位,以致实现相同位置的叠加。同时设置backface-visibility避免在实现动画效果时露出背面。
(4)给.front设置z-index属性使它在写代码和展示时都在前面。
(5)让.back最开始就翻转180度,以背面示人。

2. 遇到的问题:

(1)为了让两个尺寸不一的图片在包裹块中大小一致,使用了overflow属性,无法实现3d效果。解决方法:给img设置width:100%;height:100%;
(2)没有意识到.flip的高度为0,所以在垂直翻转时标准点错误导致效果不一样。
(3)多写才能发现多的错误,才知道怎么找错误,怎么解决错误。

关于“css3怎么实现翻转效果”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: css3怎么实现翻转效果

本文链接: https://www.lsjlt.com/news/270803.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL怎么更新字段长度
    要更新MySQL表中的字段长度,可以使用ALTER TABLE语句。以下是更新字段长度的示例: ALTER TABLE table_...
    99+
    2024-05-14
    mysql
  • sql如何修改表字段长度
    要修改表字段的长度,可以使用ALTER TABLE语句,然后使用MODIFY COLUMN来修改字段的长度。以下是一个示例: ALT...
    99+
    2024-05-14
    sql
  • mysql数据量太大如何解决
    有几种方法可以解决MySQL数据量过大的问题: 数据库分区:将数据库表按照某种规则进行分区,分成多个小表,可以提高查询速度和管理...
    99+
    2024-05-14
    mysql
  • MySQL单表数据量过大如何解决
    在MySQL中,当单表的数据量过大时,可以采取以下几种方法来解决问题: 使用索引:在表的字段上创建适当的索引,可以提高查询效率,...
    99+
    2024-05-14
    mysql
  • mysql导出数据量过大如何解决
    当导出的数据量过大时,可以尝试以下方法来解决问题: 使用数据库工具:使用数据库管理工具如Navicat或MySQL Workbe...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的作用是什么
    在MySQL中,log_bin是二进制日志文件的名称,用于记录所有对数据库进行更改的操作,如插入、更新、删除等。这些二进制日志文件可...
    99+
    2024-05-14
    mysql
  • mysql中log_bin的特点有哪些
    log_bin是MySQL的二进制日志文件,用于记录所有对数据库的修改操作,包括插入、更新、删除等。 log_bin文件是M...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装的方法是什么
    要在Linux系统上安装MySQL RPM包,可以按照以下步骤操作: 下载MySQL的RPM包:你可以从MySQL官方网站下载适...
    99+
    2024-05-14
    mysql
  • mysql rpm包安装后怎么使用
    安装MySQL RPM包后,您可以通过以下步骤来使用MySQL: 启动MySQL服务:使用以下命令来启动MySQL服务: sud...
    99+
    2024-05-14
    mysql
  • lxml中怎么处理XML命名空间默认值
    在lxml中处理XML命名空间的默认值可以通过使用xpath()方法和register_namespace()方法来实现。...
    99+
    2024-05-14
    lxml
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作