css3动画之两面翻转的盒子

近期学习c3,了解到两面翻转的盒子的两种制作方式:

利用伪元素before、after,只创建一个div

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*先清掉默认的样式*/
        body {
            margin: 0;
            padding: 0;
            background-color: bisque;
        }
        /*给创建的div设置宽高和加上3D效果,且加上定位,方便后期的动画操作*/
        .box {
            width: 300px;
            height: 300px;
            margin: 100px auto;
            position: relative;
            transform-style: preserve-3d;
            transition: all 5s;
        }
        /*给伪元素before和after设置宽高,以及定位,
        *此处用上下左右都为0的方法,使得before和after两个盒子紧贴父元素,达到这两个盒子与父盒子同款同高
        *也可以采用width=100% height=100%的方法
        */
        .box::before,.box::after {
            content: '';
            display: block;
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0;
            top: 0;
        }
        .box::before {
            background: url("images/bg.png") right bottom;/*这里是设置背景图*/
            transform: translateZ(0px);/*利用伪元素的话,这里就必须要加上,但是根据浏览器的不同,这里给的值也就不同*/
        }
        .box::after {
            background: url("images/bg.png") left bottom;
            transform: translateZ(0px);/*利用伪元素的话,这里就必须要加上,但是根据浏览器的不同,这里给的值也就不同*/
        }
        .box:hover {
            transform: rotateY(180deg);
        }
    </style>
</head>
<body>
<div class="box"></div>
</body>
</html>

进一步优化——不采用伪元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: salmon;
        }
        div {
            width: 224px;
            height: 224px;
            position: relative;
        }
        img  {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            transition: all 1s;
        }
        img:last-child {
            backface-visibility: hidden;
        }
        div:hover img {
            transform: rotateY(180deg);
        }
    </style>
</head>
<body>
<div>

    <img src="images/hou.svg" alt="">
    <img src="images/qian.svg" alt="">
</div>
</body>
</html>

一个盒子里面装两个同宽高的盒子,利用backface-visibility设置元素背面是否可见的属性,达到两面翻转的效果

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • CSS3简介 CSS3的现状 浏览器支持程度差,需要添加 私有前缀 ; 移动端支持优于PC端; 不断改进中; 应用...
    magic_pill阅读 908评论 0 1
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 1,763评论 0 7
  • 一、CSS入门 1、css选择器 选择器的作用是“用于确定(选定)要进行样式设定的标签(元素)”。 有若干种形式的...
    宠辱不惊丶岁月静好阅读 1,733评论 0 6
  • 1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度、行高及外...
    极乐君阅读 2,605评论 0 20
  • 李南依然过着朝九晚五的生活,时不时的跟进苹果8的动态,期盼着给思思一个惊喜,为他们似乎有些平淡的感情掀起一些波澜。...
    依泉阅读 736评论 0 97

友情链接更多精彩内容