• 听指令的小方块(二)总结


    任务目的

    • 练习JavaScript在DOM、字符串处理相关知识
    • 练习对于复杂UI,如何进行数据机构建模

    任务描述

    • 对于正方形的移动增加相应动画,包括移动和旋转
    • 每个指令的执行时间是1s(可以自己调整)
    • 增加新的指令如下:
      • TRA LEF:向屏幕的左侧移动一格,方向不变
      • TRA TOP:向屏幕的上面移动一格,方向不变
      • TRA RIG:向屏幕的右侧移动一格,方向不变
      • TRA BOT:向屏幕的下面移动一格,方向不变
      • MOV LEF:方向转向屏幕左侧,并向屏幕的左侧移动一格
      • MOV TOP:方向转向屏幕上面,向屏幕的上面移动一格
      • MOV RIG:方向转向屏幕右侧,向屏幕的右侧移动一格
      • MOV BOT:方向转向屏幕下面,向屏幕的下面移动一格

    任务注意事项

    • 实现功能的同时,请仔细学习JavaScript相关的知识
    • 请注意代码风格的整齐、优雅
    • 代码中含有必要的注释
    • 建议不使用任何第三方库、框架

    在线学习参考资料

    听指令的小方块(二)总结

    1、CSS3 Animations

    CSS3动画可以在不使用JavaScript和Flash的情况下,为绝大多数HTML元素增加动画。

    (1)什么是CSS3动画

    动画指让一个元素的样式从一种变为另一种。

    可以改变任意多CSS属性,也可以改变任意多次。

    要使用CSS3动画,需要先指定一些关键帧(keyframes),关键帧说明在一个特定时间元素的样式。

    (2)@keyframes规则

    当在@keyframes中设置CSS样式时,动画将在指定时间由一种样式变为另一种样式。

    (3)CSS3动画属性

    @keyframes:指定动画代码

    animation:一个集合属性,用于设置所有的animation属性值。

    animation-delay:指定动画开始之前延迟的时间。

    animation-direction:指定动画是否以相反方向展示,或循环连续播放。

    animation-duration:指定动画的一个循环需要多少秒或毫秒。如果未指定此属性,动画不会执行,因为默认值为0.

    animation-fill-mode:指定当动画结束或存在延迟时,元素的样式。

    animation-iteration-count:指定动画执行次数。infinite表示无限次。

    animation-name:指定@keyframes动画的名称。

    animation-play-state:指定动画是暂停还是播放。

    animation-timing-function:指定动画的速度曲线。

    可有以下值:

    ease:默认值,动画慢速开始,加速,减速结束。

    linear:动画从始至终速度相同。

    ease-in:动画慢速开始。

    ease-out:动画慢速结束。

    ease-in-out:动画开始和结束是慢速。

    cubic-bezier(n,n,n,n):自定义cubic-bezier函数的属性。

    2、Style animation Property

    动画属性是六个属性的属性集合:animationName,animationDuration,animationTimingFunction,animationDelay,animationIterationCount,animationDirection.

              一定要设置animationDuration属性,否则持续时间为0,动画不会执行。

      语法:

    返回animation属性

    object.style.animation

    设置animation属性

    object.style.animation = "name duration timingFunction delay iterationCount direction fillMode playState"

    3、CSS3 Transitions

    CSS3 transitions允许在一个指定时间内,将属性值从一个平滑的过渡到另一个。

    (1)如何使用CSS3 transitions

    为了使用transitions效果,需要制定两个值:

    想添加或影响的CSS属性。

    效果持续时间。

    注意:如果没有指定duration,过渡将没有效果,因为duration默认值为0。

    (2)CSS3 transition属性

    transition:集合属性,用一个属性设置四个transition属性的值。

    transition-delay:指定transition效果的延迟时间,以秒为单位。

    transition-duration:指定transition效果完成需要多少秒或毫秒。

    transition-property:指定transition效果涉及到的css属性值。

    transition-timing-function:指定transition效果的速度曲线。该属性可有以下值:

    ease:默认值,先慢后快再慢。

    linear:从开始到结束速度相同。

    ease-in:缓慢开始。

    ease-out:缓慢结束。

    ease-in-out:缓慢开始和缓慢结束。

    cubic-bezier(n,n,n,n):自定义cubic-bezier函数。

    (3)Transition + Transformation

    transformation可以作为CSS的一个样式,和width、height等一样。例如:

    div:hover{

      300px;

      height:300px;

      transform:rotate(180deg);

    }

    transform可以如同width、height等一样使用transition,例如:

    div{

      100px;

      height:100px;

      transition:width 2s,height 2s,transform 2s;

    }

    4、Style transition Property

    transition属性是以下四个属性的集合属性:transitionProperty,transitionDuration,transitionTimingFunction,transitionDelay。

    注意:一定要设置transitionDuration属性,否则持续时间为0,transition无效。

    语法:

    返回transition属性:

    object.style.transition

    设置transition属性:

    object.style.transition = "property duration timing-function delay|initial|inherit"

    transitionProperty:指定transition效果涉及的CSS属性。

    transitionDuration:指定transition效果完成需要的毫秒数或秒数。

    transitionTimingFunction:指定transition效果的速度曲线。

    transitionDelay:定义transition效果何时开始。

    initial:将属性设为默认值。

    inherit:继承父元素属性。

    5、animationend Event

    当CSS animation完成时执行animationend事件。当一个CSS animation运行时,可使用以下事件:

    animationstart:css animation开始时触发。

    animationiteration:当css animation重复时触发。

    animationend:当css动画完成时触发。

    同时对于transition事件有:

    transitionend:当一个css transition结束时触发该事件。

    语法:

    object.addEventListener("webkitAnimationEnd", myScript);  // Code for Chrome, Safari and Opera
    object
    .addEventListener("animationend", myScript);    // Standard syntax

    6、在网页上创建动画的方法

    在网页上创建动画主要有两种方法:使用CSS和使用JavaScript

    CSS可使用transform和animation

    JavaScript可使用window.setTimeout()、window.setInterval()和Web Animation API

    例如:

    var target = document.querySelector('.box');

    var player = target.animate([

      {transform: 'translate(0)'},

      {transform: 'translate(100px, 100px)'}

    ], 500);

    player.addEventListener('finish', function() {

      target.style.transform = 'translate(100px, 100px)';

    });

    7、已提交作业

    代码地址:https://github.com/Nunawading2016/2017-IFE-Baidu/blob/master/task3-5

    Demo地址:http://htmlpreview.github.io/?https://github.com/Nunawading2016/2017-IFE-Baidu/blob/master/task3-5/index.html

  • 相关阅读:
    easymock
    MySQL同时执行多条SQL语句解决办法
    MOP
    织梦dedecmsV5.7联动类型无法显示的处理方法
    如何查看sublime安装了哪些插件
    漏洞安全防范
    本地如何使用phpstudy环境搭建多站点
    Sublime 安装、插件CoolFormat
    CSharp设计模式读书笔记(2):工厂方法模式(学习难度:★★☆☆☆,使用频率:★★★★★)
    解决Unable to locate theme engine in module_path: "pixmap"
  • 原文地址:https://www.cnblogs.com/melbourne1102/p/6558642.html
Copyright © 2020-2023  润新知