css3 弹性效果上下翻转demo

最近扒了一个有弹性效果上下翻转demo

上图:

上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    @-webkit-keyframes show
    {
        0%   {
                transform:rotateX(180deg);
                opacity:0;
             }
        50%   {
                transform:rotateX(-25deg);
                opacity:1;
             }
        60%   {
                transform:rotateX(18deg);
                opacity:1;
             }
        70%   {
                transform:rotateX(-13deg);
                opacity:1;
             }
        80%   {
                transform:rotateX(8deg);
                opacity:1;
             }
        90%   {
                transform:rotateX(-6deg);
                opacity:1;
             }
        100% {
                transform:rotateX(0deg);
                opacity:1;
             }
    }
    @-webkit-keyframes hide
    {
        0%   {
                transform:rotateX(0deg);
                opacity:1;
             }

        100% {
                transform:rotateX(-180deg);
                opacity:0;
             }
    }
    *{ margin:0; padding:0;}
    li{ list-style: none;}
    .box{ position:relative;  width:300px; height:200px; margin:100px auto; }
    .box-ul,.box li{width:300px; height:200px;}
    .box-ul{transform-style:preserve-3d;perspective:800px;}
    .box li{ position:absolute;  background-size:cover; background-position:-50% -50%;transform:rotateX(180deg);transform-origin:bottom ; opacity:0;}
    .box li.show{-webkit-transform:rotateX(0deg);-webkit-animation: show .6s; opacity:1;}
    .box li.hide{-webkit-transform:rotateX(180deg); -webkit-animation: hide .6s;opacity:0;}
    .box a{ position:absolute; top:50%;transform: translateY(-50%) ; width:50px; height:50px; line-height: 50px; font-size: 14px; text-decoration: none; color:#fff; text-align:center; border-radius:50%; background-color:red;}
    .box a:nth-of-type(1){left:-80px;}
    .box a:nth-of-type(2){right:-80px;}

    </style>
    <script>
    window.onload = function(){

        var aA = document.getElementsByTagName(‘a‘),
            aLi = document.getElementsByTagName(‘li‘);
        var len = aLi.length-1,
            n = 0;

        aA[0].onclick = function(){
            aLi[n].className = "hide";
            n--;
            n = n < 0 ? len : n;
            aLi[n].className = "show";
        }
        aA[1].onclick = function(){
            aLi[n].className = "hide";
            n++;
            n = n > len ? 0 : n;
            aLi[n].className = "show";
        }

    }
    </script>
</head>
<body>
    <div class="box">
        <ul class="box-ul">
            <li class="show" style=" background-image:url(1.jpg)"></li>
            <li style=" background-image:url(2.jpg)"></li>
            <li style=" background-image:url(3.jpg)"></li>
            <li style=" background-image:url(4.jpg)"></li>
            <li style=" background-image:url(5.jpg)"></li>
        </ul>
        <a href="javascript:;">上一张</a>
        <a href="javascript:;">下一张</a>
    </div>
</body>
</html>

扒代码心得:

初次看到这个效果感觉主要是JS做的

因为翻转上来有弹性运动,直接想的是JS弹性运动 不知道CSS3也可是设置  当时仅仅知道 transition 过去 也知道 animation 仅仅理解成 从 A点到B点

用 ul 用css3 转成 3D (transform-style:preserve-3d)同时加上景深 perspective:800px; (张鑫旭大神对景深的解释:http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/  )我个人简单粗暴的理解就是:给了一个三维的视角 ,

rotateX,rotateY,rotateZ 就能 X轴、Y轴、Z轴 设置3D了,换句话说不加其实还是2D平面。

li 初始X轴旋转 transform:rotateX(180deg) 在设置旋转的基点 根据li的底边旋转 (transform-origin:bottom);然后 分别 有两个 class 分别 show(翻转上来)、hide(翻转下去);同时也写两个 animation 对应 keyframes show,keyframes hide
.show:虽然有keyframes show 运动 但是最后还要设置它的运动的最终点 transform:rotateX(0deg);.hide:同理
keyframes show 是从 180deg 到 0deg 然后 弹性运动 其实就是 在 50% 的时候 运动 -25deg 10%的频率 来回的设置 deg 达到 弹性的运动,最开始一直这只不好,仔细看别人的代码发现是有规律逐次减少deg,
keyframes hide 仅仅是从 transform:rotateX(0deg); 到 transform:rotateX(-180deg); 同时还有透明度;

剩下的就是 JS 切换给class

 

时间: 2024-10-13 09:53:56

css3 弹性效果上下翻转demo的相关文章

css3实现色子自动翻转效果

原文:css3实现色子自动翻转效果 css3使我们能够跳出2d空间,实现3维空间的动画效果,这里给出一个自动翻转的3d色子动画效果制作过程. 第一步,首先进行HTML的布局,对于3D效果,布局有一定的规律,代码如下: <body> <div id="outer"> <div id="group"> <div class="page" id="page1">.</div>

CSS3之图片3D翻转效果(网页效果--每日一更)

今天,带来的是纯CSS3的效果--图片3D翻转. 请看效果:http://localhost:63342/webfront/PC/rotate.html 这个效果主要还是运用了CSS3的transform变形属性,与上个效果不同的是,这次并不是动画,所以没有采用animation属性,而是采用transition过渡属性.这个属性会将元素在两种效果之间进行切换,并产生一个过渡效果.详情请看代码. HTML结构: 1 <div id="content"> 2 <div

在CSS3中图片3D翻转效果是这样做到的

今天,带来的是纯CSS3的效果--图片3D翻转. 请看效果:http://webfront.verynet.cc/pc/rotate.html 这个效果主要还是运用了CSS3的transform变形属性,与上个效果不同的是,这次并不是动画,所以没有采用animation属性,而是采用transition过渡属性.这个属性会将元素在两种效果之间进行切换,并产生一个过渡效果.详情请看代码. HTML结构: 1 <div id="content"> 2 <div class

css3 动画效果

css3 动画效果  做css3的动画效果,w3c的文档的文档已有事例.动画事例,也是看了半天才搞出来. 下面我就是结合个人理解进行介绍.最后个人做的一个动画demo css3的动画事例主要需要理解animation:可以算是动画的声明部分.你可以把动画属性的内容全部写到后边,动画的属性主要有:animation-name animation-duration还有一些动画延时,动画播放次数.这些要根据动画效果进行添加. 格式有:animation:animation-name animation

css3弹性盒子模型之box-flex(修正版一)

http://www.rainleaves.com/html/1095.html css3弹性盒子模型之box-flex(修正版一) 发表于 2011/12/06 9 条回复 18,699 views 今天看到蓝色理想上面有一篇文章讲<css3弹性盒模型布局模块介绍>里面讲到用box-flex,突然觉得有点心慌,上次看到响应式网页设计里面也同样讲到flex box自适应布局,而上次竟然没有引起自己的注意,想深入研究一下,竟然给忘记了,于是就在这种不断的忘记中彻底变成outer.今天借此机会,好

实现跨浏览器CSS3 transitions效果的jQuery插件

tram.js是一款实现跨浏览器CSS3 transitions效果的jQuery插件.tram.js旨在提高CSS3 transition的性能和灵活性,并通过jQuery来定义它们.tram.js提供强大的API来实现auto-stopping.sequencing和跨浏览器等功能. 当该jquery插件首次加载时,它将使用特性检测来判断浏览器是否支持CSS transitions.如果浏览器支持,Tram将管理样式并有浏览器来执行CSS3动画.如果浏览器不支持,Tram将使用自己的补间动画

鼠标悬停css3动画效果

下载Demo 效果预览 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标悬停css3动画效果</title> <link href="css/lanrenzhijia.css" rel="stylesheet" type="text/

CSS3弹性伸缩布局(二)——flex布局

上一篇博客<CSS3弹性伸缩布局(一)——box布局>介绍了旧版本的box布局,而这篇博客将主要介绍最新版本的flex布局的基础知识. 新版本简介 新版本的Flexbox模型是2012年9月提出的工作草案,这个草案是由W3C 推出的最新语法.这个版本立志于指定标准,让新式的浏览器全面兼容,在未来浏览器的更新换代中实现统一. 这里我们还是继续上一篇博客中的例子,使用最新版本的flex布局来实现相同的效果. html代码: <div> <p>发生过的空间还是看价格哈健康啊水

css3基础教程:CSS3弹性盒模型

今天给大家分享一篇关于CSS3基础教程 文章,主要是讲CSS3弹性盒模型.弹性布局的主要思想是让容器有能力来改变项目的宽度和高度,以填满可用空间(主要是为了容纳所有类型的显示设备和屏幕尺寸)的能力. 注意:Flexbox布局是最合适的一个应用程序的组件,以及小规模的布局,而网格布局是用于较大规模的布局. 盒模型的兼容性不佳,在使用时,需要加上浏览器的私有前缀. 父元素display:box或者display:inline-box; display: -webkit-box;display: -m