人机交互复习

人机交互复习

四种解决边框塌陷的方法:

  • 第一种方式:父级元素里最后一个为块元素,使用该块元素的属性,对前面的兄弟元素清除两端浮动,加一个<h1></h1> 对该块元素h1使用清除浮动

  • 第二种方式:直观,直接可以给父级加高度

  • 第三种:父级元素overflow

//对父级元素
#father{
overflow: hidden;
}
  • 第四种:伪类after

#father:after{
    display: block;
    content: "";    /*假设父级里面有内容,然后用clear清除,跟第一种方法类似*/
    clear: both;
}

弹性布局(Flex布局):

  • 容器属性:

    • flex-direction 交换主轴和交叉轴的位置

    • flex-wrap 是否换行

    • flex-flow 按赋值缩放

    • justify-content 主轴对齐方式

    • align-items 交叉轴对齐方式

    • align-content 多根轴对齐方式

有些属性值是有固定的语义:

reverse:表示起点从左到右、从上到下的反转,即改变轴的起点;

column:表示交换主轴和交叉轴的位置,子元素正常按照主轴排列;

initial:设置该属性为它的默认值;

inherit:从父元素继承该属性;

unset:从其父级继承该属性,如果没有继承父级样式,则将该属性重新设置为初始值。

  • 项目属性:

flex-shrink 属性:flex-shrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小

如果所有项目的 flex-shrink 属性都为1,当空间不足时,都将等比例缩小

如果一个项目的 flex-shrink 属性为0,其他项目都为1,则空间不足时,前者不缩小 负值对该属性无效。

.item { 
flex-shrink: <number>; /* default 1 */ 
}

order:order属性定义项目的排列顺序数值越小,排列越靠前,默认为0

item { 
order: <integer>; //参数为integer也即为整数
}

flex-grow 属性:flex-grow 属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大

如果所有项目的 flex-grow 属性都为1,则它们将等分剩余空间(如果有的话) 如果一个项目的 flex-grow 属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍

.item { 
flex-grow: <number>; /* default 0 */ 
}

flex-basis 属性:flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)浏览器根据这个属性,计算主轴是否有多余空间,它的默认值为auto,即项目的本来大小

.item {
flex-basis: <length>; | auto; /* default auto */ 
}

flex 属性:flex 属性是 flex-grow, flex-shrink 和 flex-basis 的简写,默认值为0 1 auto后两个属性可选,该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)

.item {
flex: none | [ <flex-grow> <flex-shrink>? || <flex-basis> ] 
}

align-self 属性:align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性,默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

.item { 
align-self: auto | flex-start | flex-end | center | baseline | stretch; 
}

清除浮动:

clear

div {
   clear: left
}
​
div {
   clear: right
}
​
div {
   clear: both
}

动画

动画分类

过度动画(transition)、帧动画(Animation)

帧动画的创建:

创建关键帧keyframes,创建之后才能使用Animation调用

过渡动画:直接调用transition

元素的变形(transform)

四种变形函数:

位移:translate()

缩放:scale()

旋转:rotate()

倾斜:skew() 水平和垂直倾斜,水平倾斜高度不会变

JS

变量与常量

变量的定义:var、let

var与let的区别:

let和var的区别体现在作用域上。var的作用域被规定为一个函数作用域,而let则被规定为块作用域,块作用域要比函数作用域小一些,但是如果两者既没在函数中,也没在块作用域中定义,那么两者都属于全局作用域。

全局作用域

var 和 let 声明的变量在全局作用域中被定义时,两者非常相似

let bar = 'hehe';
var baz = 'lala'; 

但是,被let声明的变量不会作为全局对象window的属性,而被var声明的变量却可以

console.log(window.bar);  //undefined
console.log(window.baz); // 'able'
函数作用域

var 和 let 在函数作用域中声明一个变量,两个变量的意义是相同的。

function  aFun(){
    let bar = 'hehe'; // 函数作用域中的变量
    var baz = 'lala'; // 函数作用域中的变量
}
块作用域

在块作用域中两者的区别较为明显, let只在for()循环中可用,而 var是对于包围for循环的整个函数可用

function aFun1(){
    //i对于for循环外的范围是不可见的(i is not defined)
    for(let i = 1; i<5; i++){
        //  i只有在这里是可见的
    }
    // i 对于for循环外的范围是不可见的(i is not defined)
}
function aFun2(){
    // i 对于for循环外的范围是可见的
    for(var i = 1;i<5; i++){
        // i 在for 在整个函数体内都是可见的
    }
    // i 对于for循环外的范围是可见的
}
let 和var 重新声明

var允许在同一作用域中声明同名的变量,而let不可以

let me  = 'foo';
let me  = 'bar'; //SyntaxError: Identifier 'me' has already been declared
​
var me = 'foo';
var me = 'bar'; //这里me被替代了,是可以重复声明的

es6中还有一个声明变量的命令const,const和let都是在声明的块作用域中有效,但是let声明的变量可变,值和类型都可以改变,没有限制。const声明额变量不能改变,所以,const一旦声明一个变量,就必须马上初始化,不能留到以后赋值

const hehe; //报错,Missing initializer in const declaration
​
const a = 3;
a = 5; //报错,Uncaught TypeError: Assignment to constant variable.

let用了之后会进行空间释放,用的时候存在,不用的时候释放

数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。

引用数据类型:对象(Object)、数组(Array)、函数(Function)。

注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

如何获得变量的数据类型:

typeof()

typeof()的输出:

{ } 、[ ] 输出 object。

console.log( ) 输出 function。

注意一点:NaN 是 Number 中的一种,非Number 。

传入的类型输出的类型所蕴含意思
NumberNumber数据类型
BooleanBoolean布尔型
UndefinedUndefined没有初始化、定义的值
NullObject不存在的对象
NaNNumberNumber中特殊数值
ObjectFunction
StringString字符串

注:NaN与任何值(包括它本身)都不相等

数据类型转换:

一、转为字符串:使用 toString或者String。

1、toString()方法:注意,不可以转null和underfined

//转为字符串-->toString方法
var bool=true;
console.log(bool.toString());
//注意,toString不能转null和underfined.

2、String()方法:都能转

console.log(String(null));

3、隐式转换:num + "",当 + 两边一个操作符是字符串类型,一个操作符是其它类型的时候,会先把其它类型转换成字符串再进行字符串拼接,返回字符串

var a=true;
var str= a+"";
console.log('str');

二、转为数值类型

1、Number():Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN

console.log(Number(true));

2、parseInt():

var a="12.3px";
console.log(parseInt(a);
//结果:12.3.  如果第一个字符是数字会解析知道遇到非数字结束.
var a="abc2.3";
console.log(parseInt(a);
//结果:返回NaN,如果第一个字符不是数字或者符号就返回NaN.

3、parseFloat(): parseFloat()把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个. 遇到第二个.或者非数字结束如果解析的内容里只有整数,解析成整数。

4、隐式转换:

var str="123";
var num=str-0;
console.log(num);
//结果为数值型;

三、转换为Boolean():0 ''(空字符串) null undefined NaN 会转换成false 其它都会转换成true

方法:

1、Boolean():

console.log(Boolean(2));

2、

var message;
if(message){};

3、隐式转换:!!

var str="123";
var bool=!!str;
console.log(str);

==与===的区别:

简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢,

这么理解: 当进行双等号比较时候: 先检查两个操作数数据类型,如果相同, 则进行===比较, 如果不同, 则愿意为你进行一次类型转换, 转换成相同类型后再进行比较, 而===比较时, 如果类型不同,直接就是false.

操作数1 == 操作数2, 操作数1 === 操作数2

比较过程:

  双等号==:

  (1)如果两个值类型相同,再进行三个等号(===)的比较

  (2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:

    1)如果一个是null,一个是undefined,那么相等

    2)如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较

  三等号===:

  (1)如果类型不同,就一定不相等

  (2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断)

  (3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。

  (4)如果两个值都是true,或是false,那么相等

  (5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等

  (6)如果两个值都是null,或是undefined,那么相等

数组、函数

数组的创建两种方式:

var a=[];
​
var a = new Array();

函数的创建两种方式:

function 函数名(){
   //函数体
}
​
//函数表达式创建
var fn=function(){
    //函数体
}

new出来的就是对象

两种模型:

BOM:浏览器对象模型,最大的对象是window

  • BOM中的几个方法:

    • 弹出一个警告框 alert()

    • 弹出一个确认框 confirm()

    • 弹出一个提示框 prompt()

    • 打开一个新窗口 open()

    • 滚动到指定位置 scrollTo()

    • 用setTimeout() 和 clearTimeout()设置和停止定时器

    • 用setInterval() 和 clearInterval()设置和停止定时器

BOM包含了history对象、location对象、document对象

  • document对象的属性:

    • document.title //设置文档的标题(HTML的title标签)

    • document.bgColor //设置背景页面的颜色

    • document.fgColor //设置前景色(文本颜色)

    • documen.URL //设置URL属性在同一个窗口打开其他页面

    • document.linkColor //未点击过的链接颜色

    • document.cookie //设置和读出cookie

    • document.fileSize //设置文件大写,(注:只读属性)

    • document.charset //设置字符集

    • document.alinkColor //激活链接颜色(注:焦点在链接上)

    • document.vlinkColor //已点击过的链接颜色

    • document.fileCreatedData //文件创建日期(注:只读属性)

    • document.ModifiedDate //文件修改日期(注:只读属性)

  • 常用的对象的方法

    • document.write() //动态向页面添加内容

    • document.createElement(Tag) //创建一个html标签对象

    • document.getElementById(ID) //获得指定Id的对象

    • document.getElementByClassName(className) //获得指定class值的对象(数组)

    • document.getElementByTagName(TagName) //获得指定的tag对象

    • document.body.appendChild(Tag) //向body中添加创建的新的标签对象

    • document.getElementByName(Name) //获得指定的Name值的对象

DOM可以做增删改查的操作,如:创建标签、删除标签等

JS的组成:

ES(ECMAScript标准)、DOM、BOM

  • ECMAScript标准

    • 即JS的基本语法,JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关。

  • DOM

    • 即文档对象模型,Document Object Model,用于操作页面元素,DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作。

  • BOM

    • 即浏览器对象模型,Browser Object Model,用于操作浏览器,比如:弹出框、控制浏览器跳转、获取分等。

时间对象:

Date

对象的创建

//利用对象字面量创建对象
//属性之间用逗号隔开
const obj = {
name:"张三",
age:20
}
​
//利用 new Object创建对象
const obj = new Object()
obj.uname="张三"

事件

  • 鼠标事件:

    • click:单击事件。

    • dblclick:双击事件。

    • mousedown:按下鼠标键时触发。

    • mouseup:释放按下的鼠标键时触发。

    • mousemove:鼠标移动事件。

    • mouseover:移入事件。

    • mouseout:移出事件。

    • mouseenter:移入事件。

    • mouseleave:移出事件。

    • contextmenu:右键事件。

    • onmousewheel:滚轮事件。

  • 键盘事件:

    • okeydown:键盘被按下,如果一直按着键盘的按键,则okeydown事件会一直被触发。

    • onkeyup::松开键盘的按键

注:当需要获取判断键盘的哪一个按键被按下的时候,可以通过event的keyCode属性获取按键的编码。

  • 表单事件:

    • onsubmit(绑定提交事件)

    • onfocus(聚焦) 与 onblur(失焦)

    • onchange( 内容改变(在文本框输入数据) + 失焦 才会触发 )

    • oninput(输入事件)

事件的监听:

addEventListener()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值