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

任务目的

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

任务描述

  • 如图,实现一个类似棋盘的格子空间,每个格子用两个数字可以定位,一个红正方形的DOM在这个空间内,正方形中的蓝色边表示这是他的正面,有一个input输入框
  • 在输入框中允许输入如下指令,按下按钮后,使得正方形做相应动作
    • GO:向蓝色边所面向的方向前进一格(一格等同于正方形的边长)
    • TUN LEF:向左转(逆时针旋转90度)
    • TUN RIG:向右转(顺时针旋转90度)
    • TUN BAC:向右转(旋转180度)
  • 移动不能超出格子空间

任务注意事项

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

在线学习参考资料

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

1、CSS3 transform Property

transform属性向一个元素添加2d或3d变换,允许向元素添加旋转、缩放、移动、偏斜等。

语法:

transform: none|transform-functions|initial|inherit;

none:默认值,没有变换。

matrix(n,n,n,n,n,n):使用矩阵的六个值定义一个2D变换。

matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n):使用4*4矩阵中的16个值定义一个3D变换。

translate(x,y):定义一个2D移动。

translate3d(x,y,z):定义一个3D移动。

translateX(x):定义一个X轴方向的移动。

translateY(y):定义一个Y轴方向的移动。

translateZ(z):定义一个Z轴方向的3D移动。

scale(x,y):定义一个2D缩放。

scale3d(x,y,z):定义一个3D缩放。

scaleX(x):定义一个X轴方向的缩放。

scaleY(y):定义一个Y轴方向的缩放。

scaleZ(z):定义一个Z轴方向的缩放。

rotate(angle):定义一个参数angle大小的旋转。

rotate3d(x,y,z,angle):定义一个3d旋转。

rotateX(angle):定义一个X轴方向的3D旋转。

rotateY(angle):定义一个Y轴方向的3D旋转。

rotateZ(angle): 定义一个Z轴方向的3D旋转。

skew(x-anlge,y-angle):定义一个沿X轴和Y轴方向的变换。

skewX(angle):定义一个沿X轴方向的变换。

skewY(angle):定义一个沿Y轴方向的变换。

perspective(n):为3D变换元素增加透视。

initial:将属性设为默认值。

inherit:从父元素继承属性值。

2、Style transform Property

语法:

object.style.transform = "none|transform-functions|initial|inherit"

参数与CSS3 transform Property相同。

3、Element offsetTop Property

  • offsetTop属性返回以像素为单位的元素相对于父元素的顶部位置。

返回值包括:

(1·)元素的top和外边距。

(2)父元素的内边距,滚动条和边框。

注意:此处的父元素指最近的position不是static的祖先元素。

可使用offsetLeft属性返回元素的left位置。

语法:

object.offsetTop

返回值为:top offset position

4、Style top Property

top属性设置或返回已定位元素的top位置。

top位置包括内边距,滚动条,边框和外边距。

注意:已定位元素指position属性设为:relative,absolute或fixed的元素。

可使用bottom属性设置或返回已定位元素的bottom位置。

语法:

返回top property:

object.style.top

设置top property:

oject.style.top = "auto|length|%|initial|inherit"

auto:默认属性值,由浏览器设置top position。

length:使用长度单位定义top position。允许使用负值。

%:设置top position为父元素高度的百分之多少。

initial:设置为默认属性值。

inherit:从父元素集成属性值。

5、JavaScript Window getComputedStyle() Method

getComputedStyle()方法获取特定节点的所有实际使用(计算的)CSS属性和属性值。

计算样式指元素展示时实际使用的很多来源的样式。

样式来源包括:内部样式表、外部样式表、继承样式和浏览器默认样式。

语法:

window.getComputedStyle(element, pseudoElement)

element:必填,获取计算样式的元素。

PseudoElement:选填,获取一个伪元素。

原生javaScript只能获取元素style的内联样式(行内样式),若想获取元素的完整样式信息,比如使用window对象的getComputedStyle方法。

6、javaScript如何实现像素向加减

直接用“3px”-“2px”会产生NaN。

可使用parseInt()(将字符串转为int)进行转换

var px = (parseInt('3px')-parseInt('2px'))+'px';

3px,2px也可以为变量名。

7、Element.getBoundingClientRect()

Element.getBoundingClientRect()方法返回元素大小和它相对于视口的位置。

语法:

rectObject = object.getBoundingClientRect();

返回值为一个DOMRect对象,包括以像素为计量单位的只读的left,top,right,bottom,x,y,width,height属性。除width和height外,其他属性均相对于视口的左上角。

8、已提交作业

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

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

原文地址:https://www.cnblogs.com/melbourne1102/p/6552640.html