鱼C论坛

 找回密码
 立即注册
查看: 3006|回复: 11

[庖丁解牛] 0 0 6 4 - 喜迎“3.8”妇女节的一张超级贺卡

[复制链接]
发表于 2017-3-6 15:59:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2021-8-11 09:39 编辑

60616263我们一直围绕,Loading元素介绍动画的玩法。

这次,刚好快到国际妇女节了,教你拿H5做一个高B格贺卡

其实呢?!

也并没有高B格很多啦。。。

只是基于transformtransition制作3D翻页效果

Snip20170306_676.png


很简单,准备三张图片,放在html相同目录下,像素要一样大哈~
Archive.zip (325.56 KB, 下载次数: 59, 售价: 3 鱼币)

建议自己找,用上面给你的附件也没关系~

body结构,就用31ul,li上代码。
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>喜迎3.8妇女节</title>
  6.     <style type="text/css">
  7.         *{
  8.             padding: 0;
  9.             margin: 0;
  10.         }
  11.         .greeting{
  12.             width:300px;
  13.             margin: 0 auto;
  14.             position: relative;
  15.         }
  16.         .cover{
  17.             background: url("1.jpg");
  18.         }
  19.         .page1{
  20.             background: url("2.jpg");
  21.         }
  22.         .page2{
  23.             background: url("3.jpg");
  24.         }
  25.     </style>
  26. </head>
  27. <body>
  28.     <ul class="greeting">
  29.         <li class="cover">第一页</li>
  30.         <li class="page1">第二页</li>
  31.         <li class="page2">第三页</li>
  32.     </ul>
  33. </body>
  34. </html>
复制代码

效果图:
Snip20170306_677.png


这是弄啥嘞,也太丑了吧


憋急,有我雷锋传人在,怎么允许这样的事情发生呢!


ef6c110c11301ab2d51a091dce583300.png


现在就要修改下三个元素和一些基本设置
  1. li{
  2.             position: absolute;
  3.             font-size: 0;
  4.             width: 300px;
  5.             height: 533px;
  6.             box-shadow: inset 0px 0px 2px rgba(0,0,0,.1);
  7.         }
  8.         .cover{
  9.             background: url("1.jpg");
  10.             z-index: 0;
  11.         }
  12.         .page1{
  13.             background: url("2.jpg");
  14.             left: -300px;
  15.             z-index: -1;
  16.         }
  17.         .page2{
  18.             background: url("3.jpg");
  19.             z-index: -2;
  20.              left: 300px;/*稍后要取消*/
  21.         }
复制代码

效果图:
Snip20170306_681.png


对于贺卡的三个li元素,都设置为绝对定位,大小都一样(300*533)。

同时,设置box-shadow,增加每一页的阴影效果,提升下视觉体验。

z-index,设置元素的堆叠顺序。

拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面。

由于我设置了,left,所以暂时看不到,现在删除page2的left设置:

Snip20170306_682.png


看到了吗,z-index设置为-2图片3就被,z-index为0的图片1挡住了。

现在就要到最重要的时刻!


我们为前两页设置为默认的旋转角度旋转点,达到准确的翻页效果。

对于封面来讲,默认就不需要旋转,当旋转时,旋转点在左侧中点

对于第二页,是被翻过来的感觉,就是将其Y轴旋转180度,而旋转点在右侧中点。

第三页,默认被压在底下,自然就会被显示出来。
  1. .cover{
  2.             transform-origin: left center;
  3.         }
  4.         .page1{
  5.             transform: rotateY(180deg);
  6.             transform-origin: right center;
  7.         }
复制代码

效果图:
Snip20170306_683.png


翻页问题,很简单,给你一个心法

奇数页旋转轴都在左侧,偶数页旋转轴都在右侧


做好上面的准备工作后,就可以添加transition动画了!

鼠标滑过页面时,封面Y轴旋转至-180度,同时第一页Y轴旋转翻动至0度。

然后由于封面,z-index大于第一页的,翻过来就会定在上面,很不符合牛顿定律。。。

看代码:
  1.     li{
  2.            /*其他*/

  3.             -webkit-backface-visibility: hidden;
  4.             transition:transform 1s linear;

  5.         }

  6. .cover{
  7.         /*其他*/
  8.             transform-origin: left center;
  9.         }
  10.         .page1{
  11. /*其他*/
  12.             transform: rotateY(180deg);
  13.             transform-origin: right center;  

  14.         .greeting:hover .cover{
  15.             transform: rotateY(-180deg);
  16.         }
  17.         .greeting:hover .page1{
  18.             transform: rotateY(0deg);
  19.         }
复制代码

效果图:
1.gif


解释下,由于本人使用的mac系统,safari不支持backface-visibility
Snip20170306_684.png


所以在前面加上“-webkit”代表safari。

backface-visibility,定义当元素不面向屏幕时是否可见。

属性值为hidden,就是不面向屏幕时,隐藏。

翻页效果是有了,但是3D效果差一些!

怎么办呢?

加东西,让效果更具有透视感
  1.        li{
  2.        /*其他*/
  3.             perspective: 1555px;
  4.             transform-style: preserve-3d;
  5.             transform: rotateX(10deg);

  6.             
  7.         }
复制代码

效果图:
1.gif


好吧,帮你到这儿了,去过节吧~


这位鱼油,如果喜欢本帖子,请订阅 专辑-->传送门)(不喜欢更要订阅


官方 Web 课程:

评分

参与人数 2荣誉 +9 鱼币 +9 贡献 +6 收起 理由
睦ちゃん她爹 + 4 + 4 + 3 鱼C有你更精彩^_^
alltolove + 5 + 5 + 3 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-6 18:32:14 | 显示全部楼层
哈哈,我的头像终于显示正常了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-6 21:23:16 | 显示全部楼层
alltolove 发表于 2017-3-6 18:32
哈哈,我的头像终于显示正常了

每次看到香蕉,都是一紧~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 13:59:21 | 显示全部楼层
CSS玩的好6.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-7 14:08:23 | 显示全部楼层


更6的是撸铁~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-7 14:10:46 | 显示全部楼层

感受到了你的洪荒之力。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-20 16:10:51 | 显示全部楼层
真是有趣
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-6 11:26:33 | 显示全部楼层
交作业!
064.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 15:32:48 | 显示全部楼层
不二那个1。jpg和2。jpg怎么翻页的 我不懂..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-8 15:34:57 | 显示全部楼层
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type = "text/css">
        *{
        padding:0;
        margin: 0;
        }
        li{
            -webkit-backface-visibility: hidden;
            transition:transform 1s linear;
            position: absolute;
            font-size: 0;
            width: 300px;
            height: 533px;
            box-shadow: inset 0px 0px 2px rgba(0,0,0,.1);
        }
        .cover{
            transform-origin: left center;
        }
        .page1{
            transform: rotateY(180deg);
            transform-origin: right center;
        }
        .cover{
            left: 300px;
            background: url("1.jpg");
            z-index: 0;

        }
        .page1{

            background: url("2.jpg");
            left:0px;
            z-index:-1;
            transform: rotateY(180deg);
            transform-origin: right center;
        }
        .page2{
            background: url("3.jpg");
            z-index:-2;
            left:300px;
        }
        .greeting:hover .cover{
            transform: rotateY(-180deg);
        }
        .greeting:hover .page1{
            transform: rotateY(0deg);
        }

</style>

</head>
<body>
<ul class="greeting">
    <li class="cover">第一页</li>
    <li class ="page1">2</li>
    <li class = "page2">3</li>
    </ul>
</body>
</html>
这是代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-7-8 15:18:41 | 显示全部楼层
交作业:

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style type = "text/css">
                *{
                        padding:0;
                        margin: 0;
                }
                .greeting{
                        width:300px;
                        margin:0 auto;
                        position:relative;
                }
        /*当鼠标在区域内时cover向左翻动*/
        .greeting:hover .cover{
            transform:rotateY(-180deg);
        }
        /*当鼠标在区域内时page1沿着之前的右侧向左翻动至到时0度*/
        .greeting:hover .page1{
            transform:rotateY(0deg);
        }
        li{
            position:absolute;
            font-size:0;
            width:300px;
            height:533px;
            box-shadow:inset 0 0 2px #000;
            /*backface-visibility,定义当元素不面向屏幕时是否可见。*/
            backface-visibility: hidden;
            /*设置动画效果*/
            transition:transform 1s linear;
        }
                .cover{
                        background: url("1.jpg");
            z-index:0;
            /*奇数页旋转轴都在左侧,偶数页旋转轴都在右侧;*/
            /*这里设置旋转点*/
            transform-origin: left center;
                }
                .page1{

                        background: url("2.jpg");
                        left:-300px;
            z-index:-1;
            /*这里设置旋转角度*/
            transform: rotateY(180deg);
            /*这里设置旋转点沿右侧向右翻转*/
            transform-origin: right center;
                }
                .page2{
                        background: url("3.jpg");
            z-index:-2;
            #left:300px;
                }


        </style>

</head>
<body>
<ul class="greeting">
        <li class="cover">第一页</li>
        <li class ="page1">第二页</li>
        <li class = "page2">第三页</li>
</ul>
</body>
</html>
64.gif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-19 16:58:39 | 显示全部楼层
本帖最后由 小脑斧 于 2020-3-19 17:55 编辑

花.png
右侧翻转
花.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 02:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表