两面翻转

实现的效果是当鼠标移动到一张图片是,就翻转过来显示另一个图片,柔如正反面一样。

核心属性:backface-visibility: hidden;
解读:当一个元素不是正面面对屏幕时就隐藏起来

解答疑难:可能最开始有人就这样想了,给一个div套上一个img标签,设置div的背景为另一个图片,然后翻转div就可以看到另一面了,但答案却是不可能,因为图片会盖住背景,所以无法实现

最终解决:
1、我们定义一个div,然后后里面包含两张图片,一个正面一个反面

<div>
    <img src="img/icon2.png" alt="正面">
    <img src="img/icon1.png" alt="反面">
</div>

2、利用绝对定位将两个图片定位在div上

section {
            width: 200px;
            height: 200px;
            position: relative;
}
img {
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            top: 0;
}

image.png

3、设置当鼠标移到div时,图片沿着Y轴进行翻转180度

div:hover img{
        transform: rotateY(180deg);
}

因为鼠标移到上面时,下面那张图片依旧是在下面,上面那张图片也依旧在上面,只是都翻转了180度而已,此时就要用到我们的backface-visibility: hidden了,因为这两张图片都旋转了180度,所以我们可以给上面那张图片设置这个属性(注意:记住只给上面那张图片设置哦),让它不是正面面对屏幕时就隐藏起来

img:first-child {/*这张是在上面的图片*/
    z-index: 2;/*因为图片中用了绝对定位,所以最后定位的图片会盖住最先定位的,设置这个属性是为了让它显示到最上面*/
    backface-visibility: hidden;
}

参考代码(懒得去优化代码,自取哈)

<title>两面翻转</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        div {
            width: 200px;
            height: 200px;
            position: relative;
            margin: 80px auto;
        }

        img:first-child {
            z-index: 2;
            backface-visibility: hidden;
        }

        img {
            width: 200px;
            height: 200px;
            position: absolute;
            left: 0;
            top: 0;
            transition: all 2s;
            
        }
        
        div:hover img{
            transform: rotateY(180deg);
        }

        
    </style>
</head>
<body>
    <div>
        <img src="img/1.jpg" alt="">
        <img src="img/2.jpg" alt="">
    </div>
</body>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一种方式: 首先,我们在html中有这样一个布局: 不要小看外面那个div,它可是本次内容不可少的呢,没了它,后...
    心羽暖姐姐阅读 13,178评论 1 2
  • 最近在练习CSS3动画。做了两个小 demo,一个是六面体的旋转,一个是翻纸牌的小 demo。特此再次总结一下自己...
    爱吃土豆丝杉杉阅读 5,527评论 1 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,981评论 1 45
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,680评论 1 92
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 5,846评论 0 4