美文网首页
CSS3立体翻转效果

CSS3立体翻转效果

作者: 妙言Lisa | 来源:发表于2017-01-16 22:16 被阅读0次

HTML结构:

<div class="wrap">
<!-- 还是要多加一层,因为perspective只对子元素有效 -->
    <div class="flip">
        <div class="front">
            ![](img/1.jpg)
        </div>
        <div class="back">
            ![](img/2.jpg)
        </div>
    </div>
</div>

CSS思路:

  1. 父元素flip相对定位,子元素front,back绝对定位
  2. 背面隐藏backface-visibility: hidden;
  3. 使被转换的子元素保留其 3D 转换transform-style: preserve-3d;。Firefox 支持 transform-style 属性,Chrome、Safari 和 Opera 支持替代的 -webkit-transform-style 属性。
  4. 定义 3D 元素距视图的距离,以像素计,其子元素会获得透视效果perspective: 1000px;。目前浏览器都不支持 perspective 属性,Chrome 和 Safari 支持替代的 -webkit-perspective 属性。注意300px太少了,感觉旋转的时候离屏幕太近了。
  5. back沿着Y轴旋转到背面transform: rotateY(180deg);
  6. containerhover时,整个flip沿着Y轴旋转

CSS代码:

        .flip, .front, .back{
            width: 400px;
            height: 300px;
        }
        .wrap, .flip{
            transform-style: preserve-3d;
            -webkit-transform-style: preserve-3d;
            perspective: 1000px;
            /* 300px太小了 */
            -webkit-perspective: 1000px;
        }
        .flip{
            position: relative;
            transition: all 1s;
        }
        .front, .back{
            position: absolute;
            top: 0;
            left: 0;
            backface-visibility: hidden;
        }
        .back{
            transform: rotateY(180deg);
            -webkit-transform: rotateY(180deg);
            -ms-transform: rotateY(180deg);
            -moz-transform: rotateY(180deg);
            -o-transform: rotateY(180deg);
        }

        .wrap:hover .flip{
            transform: rotateY(180deg);
            -webkit-transform: rotateY(180deg);
            -ms-transform: rotateY(180deg);
            -moz-transform: rotateY(180deg);
            -o-transform: rotateY(180deg);
        }

扩展

  1. 增加立体效果:改变旋转的基点,且在旋转的同时平移。
        .flip{
            position: relative;
            transition: all 1s;
            transform-origin:0% 50%;
            -webkit-transform-origin:0% 50%;
            -ms-transform-origin:0% 50%;
            -moz-transform-origin:0% 50%;
            -o-transform-origin:0% 50%;
        }
        .wrap:hover .flip{
            transform: translate(400px,0px) rotateY(180deg);
            -webkit-transform:  translate(400px,0px) rotateY(180deg);
            -ms-transform:translate(400px,0px) rotateY(180deg);
            -moz-transform:translate(400px,0px) rotateY(180deg);
            -o-transform: translate(400px,0px) rotateY(180deg);
        }
  1. 点击旋转:给container增加正面/背面类名,通过判断是否含有相应类名来更改类名,实现翻面。
    function turn(){
        $(".wrap").hasClass("wrap-front")?$(".wrap").removeClass("wrap-front").addClass("wrap-back"):$(".wrap").removeClass("wrap-back").addClass("wrap-front");
    }

参考文章:

https://segmentfault.com/a/1190000003903190?_ea=423493

相关文章

  • CSS3立体翻转效果

    HTML结构: CSS思路: 父元素flip相对定位,子元素front,back绝对定位 背面隐藏backface...

  • 简单的图片hover翻转效果

    html css tip: 主要是利用css3的3d翻转效果

  • 前端学习代码实例-CSS3文本凹凸效果代码实例

    css3实现了文本的凹凸效果,所谓的凹凸效果,就是那种具有立体凿刻的感觉。 代码实例如下:

  • 立体翻转动画

    立体翻转动画用到了私有API 这样就可以实现简单的立体翻转动画了

  • css3动画--图标翻转效果

    这个效果不复杂,纯CSS就可以实现,可以给网站增加些动态效果。下面看看怎么实现的吧。 HTML CSS

  • 相册翻转

    实现的效果 效果原型 源码 最近在做一个相册应用,相册应用有个要求,可以翻转,这就需要用到css3的旋转渐变属性;...

  • CSS3 实现正方体

    之前用css3实现卡牌翻转,为了加深理解,尝试实现立方体效果 代码 首先我们需要一个舞台stage,方便我们设置p...

  • 文字特效

    18种基于anime.js的文字动画特效效果演示CSS3文字烟雾散开动画特效canvas+原生js实现立体式文字变...

  • web前端面试提问总结:

    学过CSS3吗?CSS3的新增特性有哪些? 主要是文本效果、边框、图片、字体、背景效果、阴影效果、色彩类: RGB...

  • 人物错位分割效果

    立体分割效果

网友评论

      本文标题:CSS3立体翻转效果

      本文链接:https://www.haomeiwen.com/subject/kdwubttx.html