开启定时器
作用:
- 每隔一段时间调用这个函数
 - 间隔时间单位是毫秒
 
setInterval(函数名,间隔时间)
// 注意:
1. 函数名字不需要加括号
2. 定时器返回的是一个id数字
关闭定时器
let 变量名 = setInterval(函数名,间隔时间)
clearInterval(变量名)
// 注意:
1. 函数名字不需要加括号
2. 定时器返回的是一个id数字
setInterval(函数名,间隔时间)
// 注意:
1. 函数名字不需要加括号
2. 定时器返回的是一个id数字
let 变量名 = setInterval(函数名,间隔时间)
clearInterval(变量名)
// 注意:
1. 函数名字不需要加括号
2. 定时器返回的是一个id数字
if(条件1){             //先判断条件1,若满足条件1则执行语句1,其他都不执行
	语句1
} else if(条件2){		  //条件1不满足则向下判断,若满足条件2则执行语句2,其他都不执行
	语句2
} else if(条件3){			//依此类推
	语句3
} else {						 //若以上条件都不满足,则执行else中的语句n
	语句n
}										 //可以写N个条件
//条件 ?  满足条件执行的代码 : 不满足条件执行的代码
条件 ? 1 : 2
//结果为真返回1 为假返回2
switch (1) {               //找到和小括号里!!全等!!的case值,并执行代码
  case 1:
    alert(1)               
    break
  case 2:
    alert(2)
    break
  case 3:
    alert(3)
    break
  default:                 //若没找到,则执行default里的代码
    alert("没有数据")
}
number 数字型string 字符串型boolean 布尔型undefined 未定义型null 空类型null 和 undefined 区别:
undefined 表示没有赋值null 表示赋值了,但是内容为空null 开发中的使用场景:
官方解释:把 null 作为尚未创建的对象
大白话: 将来有个变量里面存放的是一个对象,但是对象还没创建好,可以先给个
null
object 对象function 函数array 数组//查看数据类型
typeof 值
//typeof运算符的返回类型为字符串,值包括如下几种:
1. 'undefined' --未定义的变量或值
2. 'boolean'   --布尔类型的变量或值
3. 'string'    --字符串类型的变量或值
4. 'number'    --数字类型的变量或值
5. 'object'    --对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理)
6. 'function'  --函数类型的变量或值
+号两边只要有一个是字符串,都会把另外一个转成字符串+以外的算术运算符 比如 - * / 等都会把数据转成数字类型+号作为正号解析可以转换成Numberlet a = 124144
String(a)
a.toString(进制)    //括号内填写进制数
Number('21')
parseInt('10.12234') //10 转换为数字型 只保留整数部分
parseFloat('10.3')//10.3 转换为数字型 保留小数部分
Number('10px') //得到的值为NaN Number里面只能加数字
parseFloat('10px')//10 保留数字部分 过滤其他(开头必须是数字)
NaN  //not A number
NaN也是number类型的数据,代表非数字
隐式转换
前置自增:++i  // 自己先计算 后进行运算
//例如
let i = 1
计算:++i + 3
// 2 + 3 = 5
后置自增:i++ // 先进行运算 后自己计算
//例如
let i = 1
计算:i++ + 3
// 1 + 3 = 4
let i = 1
计算:i++ + ++i +i
//1 + 2 + 3
1.i++ 此时i = 1
2.i++ + ++i  此时i = 2
3.i++ + ++i + i 此时i = 3
返回值 boolean 类型
比较运算符有隐式转换
最终把数据隐式转换转成number类型再比较
 console.log(3 > 5) // false
 console.log(5 >= 5) //  true
 // console.log(5 = 5)
 console.log(5 == 5)
 // == 只要值一样就是true  不管数据类型
 console.log(5 == '5')
 console.log(5 == 'pink')
 // === 以后判断要用三等  ===  开发常用   要求值和数据类型都一样
 console.log(5 === 5)
 console.log(5 === '5')
 // 特殊情况
 console.log('pink' > 'red')   //false 比较对应ASCII码 
 console.log('pink' > 'pin')  // true  从左往右一位一位开始比较 得出结果停止
 console.log(1 === NaN)      //NaN不等于任何值 包括它本身
 console.log(NaN === NaN)
																	//尽量不要比较小数
 console.log(0.1 + 0.2 === 0.3)  // 0.1 + 0.2 = 0.3000···004 小数精度问题
 console.log(0.1 + 0.2)
 console.log(3 > '2')
短路:只存在于 && 和 || 中,当满足一定条件会让右边代码不执行
| 符号 | 短路条件 | 
|---|---|
| && | 左边为false就短路 | 
| || | 左边为true就短路 | 
原因:通过左边能得到整个式子的结果,因此没必要再判断右边
运算结果:无论 && 还是 || ,运算结果都是最后被执行的表达式值,一般用在变量赋值
false   数字0   ''  undefined   null   
在less文件中可以写两种注释
1.可以直接用CSS注释(最后会编译展示在CSS文件中)
/* 注释内容 */
,最后会编译展示在css文件中
2.Less注释(只在less中使用,不会编译展示在css文件中)
// 注释的内容
变量:可以变化的量
语法:@变量名:变量值;
作用:编译的时候会把less中所有的变量名替换成变量值,这样可以统一修改某一个值(如主题色)
@mainColor:#e92322; //@变量名:变量值;
.box {
  width: 100px;
  height: 100px;
  background-color: @mainColor;
}
// less中的嵌套:less中选择器可以嵌套
// 1、后代选择器,选择器嵌套即可
// 2、子代选择器,前面使用>
// 3、并集选择器,前面直接写,
// 4、交集选择器,前面使用&(&表示上一级选择器)
// 5、伪元素,前面使用&(&表示上一级选择器)
.father {  
  width: 300px;  
  height: 300px;  
  background-color: red;  
  // 后代选择器:通过嵌套表示后代关系  
  .son {    
    width: 100px;    
    height: 100px;    
    background-color: blue;  
  }  
  // 子代选择器:通过嵌套 + > 表示 
  >.son {    
    background-color: red;  
  }  
  // 并集选择器:通过嵌套可以省略父级选择器  
  .one,  
  .two {    
    background-color: yellow;  
  }  
  // 交集选择器:&表示上一级选择器  
  &.red {    
    background-color: red;  
  }      
  // 结构伪类选择器:&表示上一级选择器  
  &:nth-child(1) {    
    background-color: red;  
  }  
  // 链接伪类选择器:&表示上一级选择器 
  &:hover {    
    background-color: green;  
  }  
  // 伪元素:&表示上一级选择器  
  &::after {    content: '';  
  }
}
.box {  
  width: 200px;  
  height: 200px;  
  background-color: pink;  
  // 伪类的写法  
  &:hover {    
    // less中可以直接计算加减乘除计算的,编译之后会把计算的结果直接显示在css文件中。之后学习的rem布局中需要使用到less运算的功能    
    width: 200px * 2;    
    width: (200px / 3);    
    width: 200px + 100;    
    width: 200px - 100;  
  }
}
注意点: 在 less 4.0 版本之后, 除法运算/ 如果在括号 () 外,不会执行除法,推荐使用 () 包裹即可
语法:.函数名() { 重复的样式 }
// 针对于页面中重复的代码
// 1、之前:抽取出公共类——》给需要的标签加类名 
.common {   
  width: 300px;   
  height: 300px; 
}
// 2、现在:less中的函数——》在选择器中调用
// 语法:.函数名() { 重复的代码 }
// 定义函数
.common() {  
  width: 300px;  
  height: 300px;
}
.red {  
  // 使用函数 
   .common();  
   background-color: red;
}
(例:将base.less引入index.less,可以直接编译成一个css文件,减少html标签)
 @import '需要引入的less文件的路径'; 
 //注意点:一般引入的文件写在最前面,保证自己的样式写在后,优先
 例:
 @import 'base.less';
设置了 display:flex; 的盒子会变成一个弹性盒子。弹性盒子会多出了主轴和侧轴的概念。
注意点: 弹性盒子内部的子元素会默认沿着主轴方向排布!
在flex布局中一般会把父元素称之为:flex容器,子元素称之为:flex项目
flex布局是css3中新出的布局方式,存在一定的兼容性问题
| 传统布局 | 弹性布局 | 
|---|---|
| 兼容性好 | css3新布局,PC端中存在兼容性问题(如:IE) | 
| 布局繁琐 | 布局方便 | 
| 常用于PC端布局 | 常用于移动端布局 | 
布局方法的原则:
flex-direction弹性盒子中主轴方向默认是水平向右的。
但是其实可以通过
flex-diretion属性修改主轴的方向
| 取值 | 效果(主轴方向) | 
|---|---|
| row | 水平向右(默认) | 
| row-reverse | 水平向左 | 
| column | 垂直向下 | 
| column-reverse | 垂直向上 | 
justify-content| 效果 | 取值 | 
|---|---|
| 向主轴开始方向对齐 | flex-start | 
| 向主轴结束方向对齐 | flex-end | 
| 居中对齐 | center | 
| 让空白环绕盒子显示 | space-around | 
| 空白只在两者之间显示 | space-between | 
| 空白均分 | space-evenly | 
align-items| 效果 | 属性名 | 
|---|---|
| 向侧轴开始方向对齐 | flex-start | 
| 向侧轴结束方向对齐 | flex-end | 
| 居中对齐 | center | 
| 拉伸显示(默认值) | stretch | 
stretch:让子盒子在侧轴方向拉伸显示
只有当子元素在侧轴方向没有设置宽度或者高度时,才会有拉伸效果(否则以设置的值为准)
注意点:
flex-wrapflex布局中,默认是单行显示的,如果子元素的宽度之和超出了父元素的宽度,此时子盒子会默认压缩显示。
此时,如果需要设置子元素换行显示,可以使用属性
flex-wrap
| 属性值 | 效果 | 
|---|---|
| nowrap | 不换行(默认值) | 
| wrap | 换行 | 
align-content| 取值 | 效果 | 
|---|---|
| flex-start | 向侧轴的开始位置对齐 | 
| flex-end | 向侧轴的结束位置对齐 | 
| center | 居中对齐 | 
| stretch | 子元素高度拉伸显示(只有没设高才有效果) | 
| space-around | 空白环绕盒子显示 | 
| space-between | 空白只在盒子之间显示 | 
align-items与align-content的区别:
align-itemsalign-contentflex作用: 按照份数分配父元素主轴(宽度)的剩余空间
优先分配具体的宽度,剩余的空间再按照份数分配。
代码: flex:份数(数字);
order作用: 设置弹性盒子中子元素的排列顺序,数值越小,排列靠前,默认是0
代码: order:数字;
align-self| 取值 | 效果 | 
|---|---|
| flex-start | 向侧轴的开始位置对齐(默认相当于顶部对齐) | 
| flex-end | 向侧轴的结束位置对齐(默认相当于底部对齐) | 
| center | 居中对齐 | 
| stretch | 子元素高度拉伸显示(只有没设高才有效果) | 
一、前言
三角形实现原理:
border-方向:长度 solid red,这个画的就是底部的直线。其他边使用border-方向:长度 solid transparent。二、实现
#triangle-up {
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-bottom: 100px solid red;
}
#triangle-down {
    width: 0;
    height: 0;
    border-left: 50px solid transparent;
    border-right: 50px solid transparent;
    border-top: 100px solid red;
}
#triangle-left {
    width: 0;
    height: 0;
    border-top: 50px solid transparent;
    border-right: 100px solid red;
    border-bottom: 50px solid transparent;
}
#triangle-right {
    width: 0;
    height: 0;
    border-top: 50px solid transparent;
    border-left: 100px solid red;
    border-bottom: 50px solid transparent;
}
#triangle-topleft {
    width: 0;
    height: 0;
    border-top: 100px solid red;
    border-right: 100px solid transparent;
}
#triangle-topright {
    width: 0;
    height: 0;
    border-top: 100px solid red;
    border-left: 100px solid transparent;
}
#triangle-bottomleft {
    width: 0;
    height: 0;
    border-bottom: 100px solid red;
    border-right: 100px solid transparent;
}
#triangle-bottomright {
    width: 0;
    height: 0;
    border-bottom: 100px solid red;
    border-left: 100px solid transparent;
}
一、须知
placeholder属性是CSS3中新增加的属性,IE9和Opera12以下版本的CSS选择器均不支持占位文本。
二、设置placeholder文字颜色、字号
方式1:因为每个浏览器的CSS选择器都有所差异,所以需要针对每个浏览器做单独的设定(可以在冒号前面写input和textarea)。
::-webkit-input-placeholder { /* WebKit browsers */
  color: #999;
  font-size: 16px;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
  color: #999;
  font-size: 16px;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
  color: #999;
  font-size: 16px;
}   
方式2:建议使用该方式 如果是在手机客户端webview 只使用-webkit内核方式即可。
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
  color: #666;
  font-size: 16px;
}
input:-moz-placeholder, textarea:-moz-placeholder {
  color: #666;
  font-size: 16px;
}
input::-moz-placeholder, textarea::-moz-placeholder {
  color: #666;
  font-size: 16px;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
  color: #666;
  font-size: 16px;
}
/* 1.文本不换行 */
white-space:nowrap;
/* 2.溢出隐藏 */
overflow:hidden;
/* 4.加省略号 */
text-overflow:ellipsis;
场景:垂直布局的块级元素,上下的margin会合并
结果:最终两者距离为margin的最大值
解决方法:避免就好
• 只给其中一个盒子设置margin即可
场景:互相嵌套的块级元素,子元素的 margin-top 会作用在父元素上
结果:导致父元素一起往下移动
解决方法:
场景:给行内元素设置margin和padding时
结果: