课程概述

作业提交截止时间: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等完成猫笑的效果

No.3 - CSS transition 和 CSS transform 配合制作动画的更多相关文章

  1. css3-12 transition+css或transform实现过渡动画

    css3-12 transition+css或transform实现过渡动画 一.总结 一句话总结:首先要设置hover后的效果,然后在transition里面指定执行哪些样式和执行时间为多长. 1. ...

  2. Atitti css transition Animation differ区别

    Atitti  css   transition Animation differ区别 1.1. transition的优点在于简单易用,但是它有几个很大的局限.  1 1.2. Transition ...

  3. Atitti  css   transition Animation differ区别

    Atitti  css   transition Animation differ区别 1.1. transition的优点在于简单易用,但是它有几个很大的局限.  1 1.2. js 动态改变 st ...

  4. css transition 实现滑入滑出

    transition是css最简单的动画. 通常当一个div属性变化时,我们会立即看的变化,从旧样式到新样式是一瞬间的,嗖嗖嗖!!! 但是,如果我希望是慢慢的从一种状态,转变成另外一种状态,怎么办?  ...

  5. css中zoom和transform:scale的区别

    css中zoom和transform:scale的区别 关于zoom: 以前只是看到别人的代码中用过zoom,自己从未使用过,今天在探究ie7兼容inline-block时,发现里面提到了zoom.下 ...

  6. Css transition

    CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值. <!DOCTY ...

  7. CSS transition 的默认值

    语法 transition: property duration timing-function delay|initial|inherit; 示例: div {   width: 100px;    ...

  8. CSS transition & shorthand property order

    CSS transition & shorthand property order shorthand property https://developer.mozilla.org/en-US ...

  9. 奇妙的 CSS shapes(CSS图形) 【css 图形,绘图,CSS 几何图形)】

    http://www.cnblogs.com/coco1s/p/6992177.html <!DOCTYPE html> <html> <head> <met ...

随机推荐

  1. 六、yarn运行模式

    简介 spark的yarn运行模式根据Driver在集群中的位置分成两种: 1)yarn-client 客户端模式 2)yarn-cluster 集群模式 yarn模式和standalone模式不同, ...

  2. 961 -尺寸2N阵列中的N重复元素

    在一个A大小的数组中2N,有N+1独特的元素,这些元素中的一个重复N次. 返回重复N次的元素. 例1: 输入:[1,2,3,3] 输出:3 例2: 输入:[2,1,2,5,3,2] 输出:2 例3: ...

  3. Django之Form字段插件

    一.Django内置Form组件:        在使用Django内置的Form组件时,里面包含了许多[字段]和[插件],也就是验证用户输入的请求以及生成显示在前端的HTML.下面介绍一下用法: F ...

  4. 关于 Table 表格那些三两事儿

    引言 实现下列表格样式,嵌套与form表单中提交信息,为了让自己的表格可以“ 随心所欲 ” 变换自己的形式,需要两个重要的td 属性colspan 列合并 以及 rowspan 行合并 来实现,表格宽 ...

  5. 移动前端调试页面–weinre

    安装 npm install -g weinre 启动 weinre --boundHost -all- 浏览器查看 http://localhost:8080 插入相关文件 index.html d ...

  6. OpenCV获取与设置像素点的值的几个方法

    Title: OpenCV OpenCV像素值的获取与设置 Fn 1 : 使用 Mat 中对矩阵元素的地址定位的知识 (参考博文:OpenCV中对Mat里面depth,dims,channels,st ...

  7. arcgis10.2 serverstyle 制作工具位置 小计

    跟9.3时候的套路还是一样的,只是工具已经放到了arcgis desktop的安装目录的bin文件夹下面. engine和developerkit都不附带该工具. 但是engine会附带一组默认的转换 ...

  8. Grunt入门学习之(2) -- Gruntfile的编写

    Gruntfile由以下几部分构成: "wrapper" 函数 项目与任务,目标配置 加载grunt插件和任务 自定义任务 1.wrapper函数(包装函数) 每一个 Gruntf ...

  9. css预处理器(sass)

    学过CSS的人都知道,它不是一种编程语言.你可以用它开发网页样式,但是没法用它编程.也就是说,CSS基本上是设计师的工具,不是程序员的工具.在程序员眼里,CSS是一件很麻烦的东西.它没有变量,也没有条 ...

  10. byr面经两则

    人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经 首先感谢师兄在两年前发的贴([天道酬勤] 腾讯.百度.网易游戏.华为Offer及笔经面经 ),这篇文章对我帮助很大. 我写这篇文章一是为了感 ...