• No.3


    课程概述

    作业提交截止时间:09-01

    任务目的

    • 深度理解掌握 transition-timing-function 以及它的意义
    • 学会配合使用 CSS transform 和CSS transition 制作流畅动画
    • 使用 CSS 伪元素触发过渡效果
    • 合理的使用 CSS 布局

    任务描述

    • 在我们提供给你的 HTML 文件基础上,适当的添加 CSS transition 和 CSS transform 属性 ,实现视频 demo 中的效果;
    • 鼠标 hover 上去的时候,出现小猫笑起来的动画;
      动画 demo
      下载.html 文件
    • transition 和transform 各项子属性的值可以自定 ;
    • 对 CSS 布局比较感兴趣的同学,在学有余力的情况下,可以尝试自己用 CSS 画出小猫。

    任务注意事项

    • 注意浏览器中的兼容性
    • 请注意代码风格的整齐、优雅
    • HTML 及 CSS 代码结构清晰、规范
    • 代码中含有必要的注释

    在线学习参考资料


    我的代码
    <!DOCTYPE html>
    <!-- saved from url=(0055)http://jadyoap.bj.bcebos.com/ife%2FcssCatAnimation.html -->
    <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            
            <title>纯 CSS 实现猫笑起来的动画</title>
            <style type="text/css">
                body {
                    background-color: #d69a44;
                }
                /* face */
                .face {
                    position: absolute;
                    left: 50%;
                    margin-left: -175px;
                    top:40px;
                    width: 350px;
                    height: 250px;
                    border-radius: 50% 50% 30% 30%;
                    border: 2px solid #3f200b;
                    z-index: 10;
                    background: #fbf8f1;
                    overflow: hidden;
                }
                /* ear */
                .ear-wrap {
                    position: absolute;
                    width: 300px;
                    left: 50%;
                    margin-left: -150px;
                    /*   top: 100px; */
                }
                .ear-wrap{
                    position: absolute;
                    left: 50%;
                    width: 300px;
                    margin-left: -150px;
                    margin-top: 20px;
                }
                .ear {
                    position: absolute;
                    width: 80px;
                    height: 100px;
                    border: 2px solid #000;
                    background: #fbf8f1;
                    border-radius: 100% 10% 50% 0% ;
                    transition: all 1s cubic-bezier(0.28, 0.50, 0.60, 0.83);
                }
                .ear-wrap .right {
                    left: auto;
                    right: 0;
                    border-radius: 10% 100% 0% 50%;
                    background: #f1ac2b;
                }
                /* 头发 */
                .hair {
                    position: absolute;
                    width: 120px;
                    height: 120px;
                    left: 50%;
                    margin-left: 50px;
                    margin-top: -40px;
                    background: #f3b32e;
                    border-radius: 50% 50% 50% 50%;
                }
                /* 眼睛 */
                .eye-wrap {
                    position: absolute;
                    width: 280px;
                    height: 70px;
                    top: 90px;
                    left: 50%;
                    margin-left: -140px;
                    overflow: hidden;
                }
                .eye {
                    height: 100px;
                    width: 100px;
                    position: absolute;
                }
                .eye-circle {
                    width: 100px;
                    height: 80px;
                    border: 2px solid #482507;
                    overflow: hidden;
                    position: absolute;
                    background: #fff;
                    border-radius: 50% 50% 40% 40%;
                    box-sizing: border-box;
                }
                .eye-core {
                    height: 55px;
                    width: 46px;
                    border-radius: 50% 50% 50% 50%;
                    /* margin: 0 auto; */
                    background: #000;
                    position: absolute;
                    left: 50%;
                    margin-left: -23px;
                    transition: all 1.2s cubic-bezier(0.51, 0.25, 0.41, 0.69);
                }
                .eye-bottom {
                    height: 50px;
                    width: 100px;
                    border-radius: 40% 40% 50% 50%;
                    position: absolute;
                    margin-top: 48px;
                    border-top: 2px solid #46240b;
                    background: #f6f7f2;
                    transition: all 1.2s;
                }
                .eye-wrap .right {
                    left: auto;
                    right: 0px;
                }
                .face-red {
                    position: absolute;
                    height: 20px;
                    width: 70px;
                    background: red;
                    top: 45px;
                    /*top: 64px;*/
                    left: 18px;
                    border-radius: 50% 50% 50% 50%;
                    background: #e85a5e;
                    opacity: 0.0;
                    transition: all 1.2s cubic-bezier(0.94, 0.26, 0.11, 0.58);
                }
                /* 鼻子 */
                .nose {
                    width: 20px;
                    height: 10px;
                    border-bottom: 8px solid #000;
                    border-radius: 0% 0% 50% 50%;
                    top: 154px;
                    left: 50%;
                    margin-left: -10px;
                    position: absolute;
                }
                /* 嘴巴 */
                .mouth-wrap {
                    position: absolute;
                    top: 168px;
                    width: 80px;
                    left: 50%;
                    margin-left: -40px;
                    height: 20px;
                    overflow: hidden;
                }
                .mouth {
                    width: 40px;
                    height: 40px;
                    border-bottom: 4px solid #000;
                    border-right: 4px solid #000;
                    border-radius: 0% 40% 50% 20%;
                    margin-top: -26px;
                    position: absolute;
                    left: 0;
                    transition: all 1.2s;
                }
                .mouth-wrap .right {
                    border-bottom: 4px solid #000;
                    border-right: none;
                    border-left: 4px solid #000;
                    border-radius: 40% 0% 20% 50%;
                    position: absolute;
                    left: auto;
                    right: 0;
                }
                /*鼠标hover样式 写在这里*/
                .face:hover~.ear-wrap .left{
                    transform: rotate(-23deg);
                    transform-origin:50% 100%;
                }
                .face:hover~.ear-wrap .right{
                    transform: rotate(23deg);
                    transform-origin:50% 100%;
                }
                .face:hover .eye-core{
                    transform: scaleX(0.75);
                }
                .face:hover .eye-bottom{
                    transform: translateY(-15px);
                }
                .face:hover .face-red{
                    opacity: 1;
                }
                .face:hover .mouth{
                    border-radius: 0% 40% 50% 50%;
                }
               
            </style>
        </head><style type="text/css" id="4924523920"></style>
        <body>
            <div class="container">
                <!---->
                <div class="face">
                    <!-- 头发 -->
                    <div class="hair">
                        <div></div>
                    </div>
                    <!-- 眼睛 -->
                    <div class="eye-wrap">
                        <div class="eye left">
                            <div class="eye-circle">
                                <div class="eye-core"></div>
                            </div>
                            <div class="eye-bottom"></div>
                            <div class="face-red"></div>
                        </div>
                        <div class="eye right">
                            <div class="eye-circle">
                                <div class="eye-core"></div>
                            </div>
                            <div class="eye-bottom"></div>
                            <div class="face-red"></div>
                        </div>
                    </div>
                    <!-- 鼻子 -->
                    <div class="nose">
                    </div>
                    <!-- 嘴巴 -->
                    <div class="mouth-wrap">
                        <!-- <div class="mouth-top"></div> -->
                        <div class="mouth left"></div>
                        <div class="mouth right"></div>
                    </div>
                </div>
                <!-- 耳朵 -->
                <div class="ear-wrap">
                    <div class="ear left"> </div>
                    <div class="ear right"> </div>
                </div>
            </div>
        
    </body></html>

    总结一下:

    ①hover选择兄弟元素 

                /*鼠标hover样式 写在这里*/
                .face:hover{
                    cursor: pointer;
                }
                .face:hover~.ear-wrap .left{
                    transform :rotate(-30deg);
                }
                .face:hover~.ear-wrap .right{
                    transform :rotate(30deg);
                }
                .face:hover .face-red{
                    opacity: 0.8;
                }

    ②利用transform,transition等完成猫笑的效果

  • 相关阅读:
    【转载】最常见的数据类型映射列表
    【自然框架 NatureFramework】 项目结构、命名空间和命名规范
    【自然框架之SSO】实现SSO的一个初步想法
    两张图说明三层的奥义!
    Android中文API(146) —— Display
    [视频监控][海康威视]二次开发 网友文章转载贴
    Android中文API(141) —— GridLayout
    Android支持横行滚动的ListView控件
    Android应用开发提高系列(5)——Android动态加载(下)——加载已安装APK中的类和资源
    [WinForm]DataGridView通过代码新增行问题
  • 原文地址:https://www.cnblogs.com/cndotabestdota/p/9092849.html
Copyright © 2020-2023  润新知