web笔记再整理

前四天笔记在此连接:

web前端笔记+表单练习题+五彩导航栏练习题-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/simply_happy/article/details/136917265?spm=1001.2014.3001.5502

# 1.边框弧度

​    div {

​      width: 300px;

​      height: 50px;

​      background-color: aqua;

​      /* border-radius: 20px; */

​      /* 左上  右上+左下  右下 */

​      /* border-radius: 10px 20px 30px 40px; */

​      /* 胶囊形状:盒子高度的一半 */

​      border-radius: 25px;

​      border-top-right-radius: 70px;

​    }

## 2.盒子阴影

div {

​      width: 100px;

​      height: 100px;

​      background-color: pink;

​      /* x轴的偏移量 y轴的偏移量必须写 */

​      /* x轴的偏移量 y轴的偏移量 模糊的半径  扩散的半径 颜色  */

​      box-shadow: 5px 2px 10px 10px black inset;

​    }

## 3.文字阴影

 p {

​      text-shadow: 5px 5px 3px pink;

​    }

## 4.列表属性

 li {

​      width: 200px;

​      height: 200px;

​      background-color: aqua;

​      list-style: none;

​      list-style-type: none;

 }

## 5.resize

​    textarea {

​      width: 500px;

​      height: 60px;

​      resize: none;

​    }

**<textarea name="" id="" cols="30" rows="10"**>

***rows 和* cols *属性,用于声明 <textarea> 的精确尺寸***

## 6.浮动

 .box1 {

​      width: 200px;

​      height: 200px;

​      background-color: aqua;

​      float: left;

​    }

​    /* 

​    顶部是对齐的

​    脱离标准流 

​    */

​    .out {

​      width: 800px;

​      height: 400px;

​      background-color: brown;

​    }

​    .box2 {

​      width: 300px;

​      height: 300px;

​      background-color: pink;

​      float: right;

​    }

**float *CSS 属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,但是仍然保持部分的流动性(与绝对定位相反)。***

## 7.浮动的问题

**元素高度塌陷、文字环绕不正常等。以下是一些解决浮动问题的方法:**

​    .father {

​      width: 700px;

​      /* 1.给父盒子高度 */

​      /* height: 400px; */

​      /* float: left; */

​      background-color: aqua;

​    }



​    .left {

​      width: 300px;

​      height: 300px;

​      background-color: blue;

​      float: left;

​    }



​    /* p {

​      /* 清除浮动的影响 */

​    /* clear: both; */(**清除两边浮动**)

​    /* } */

​    /* p::before {

​      display: block;

​      content: "";

​      clear: both;

​    } */



​    .father::after {

​      content: "";

​      display: block;

​      clear: both;

​    }

## 8.flex布局

 \* {

​      padding: 0;

​      margin: 0;

​    }



​    ul {

​      /* 此时ul就会变成一个弹性容器 li就是弹性盒子   。子项会默认在一行排列

​      主轴:默认在水平方向

​      测轴:默认在垂直方向

​      子元素可以自动挤压和延伸



​      

​      */

​      display: flex;

​      width: 600px;

​      height: 300px;

​      background-color: aqua;

​      margin: 0 auto;



​    }



​    li {

​      list-style: none;

​      width: 100px;

​      height: 200px;

​      background-color: aquamarine;

​    }

## 9.主轴上的对齐方式

\* {

​      margin: 0;

​      padding: 0;

​    }



​    ul {



​      display: flex;

​      width: 600px;

​      height: 300px;

​      background-color: aqua;

​      margin: 0 auto;

​      /*改变主轴对齐方式 */

​      justify-content: flex-end;

​      /* 两边贴边,其余平分 */

​      justify-content: space-between;

​      justify-content: space-around;

​      justify-content: space-evenly;

​      justify-content: center;

​    }





​    li {

​      list-style: none;

​      width: 100px;

​      height: 200px;

​      background-color: aquamarine;

​    }

## 10.侧轴的对齐方式

\* {

​      margin: 0;

​      padding: 0;

​    }



​    ul {



​      display: flex;

​      width: 600px;

​      height: 300px;

​      background-color: aqua;

​      margin: 0 auto;

​      /* 侧轴 */

​      align-items: center;

​      align-items: end;

​      align-items: start;





​    }



​    ul li:nth-child(3) {

​      align-self: center;

​    }





​    li {

​      list-style: none;

​      width: 100px;

​      height: 200px;

​      background-color: aquamarine;

​    }

## 11.修改主轴方向

\* {

​      margin: 0;

​      padding: 0;

​    }



​    ul {



​      display: flex;

​      width: 600px;

​      height: 300px;

​      background-color: aqua;

​      margin: 0 auto;

​      /* 主轴方向改为垂直方向,从上到下 */

​      flex-direction: column;

​      flex-direction: row-reverse;

​      flex-direction: column-reverse;

​    }





​    li {

​      list-style: none;

​      width: 100px;

​      height: 200px;

​      background-color: aquamarine;

​    }

## 12.弹性伸缩比

\* {

​      margin: 0;

​      padding: 0;

​    }



​    ul {

​      display: flex;

​      width: 700px;

​      height: 400px;

​      background-color: rgb(51, 59, 59);

​    }



​    li {

​      list-style: none;

​      height: 40px;

​      background-color: aqua;

​    }



​    ul li:first-child {

​      flex: 1;

​      /* 整数:占用父级剩余尺寸的分数 */

​    }



​    ul li:nth-child(2) {

​      flex: 1;

​    }



​    ul li:last-child {

​      flex: 1;

​    }

## 13.换行

​    \* {

​      margin: 0;

​      padding: 0;

​    }



​    ul {

​      display: flex;

​      width: 800px;

​      height: 400px;

​      background-color: aqua;

​      /* flex-wrap: wrap; */

​      justify-content: space-between;

​      align-content: space-evenly;

​    }



​    li {

​      list-style: none;

​      width: 170px;

​      height: 100px;

​      background-color: pink;

​    }

## 14.grid

​    .box {

​      display: grid;

​      width: 500px;

​      height: 900px;

​      grid-template-columns: 1fr 2fr 1fr;

​      grid-template-rows: repeat(4, 100px);

​      /* 单元格之间的间距 */

​      grid-gap: 20px;





​    }



​    .box div {

​      border: 1px solid pink;

​    }



​    .test {

​      grid-column-start: 1;

​      grid-column-end: 3;

​      /* grid-row-start: 2;

​      grid-row-end: 4; */

​      grid-row: 2/5;



​    }

## 1.透明度

 div{

​      width: 300px;

​      height: 200px;

​      background-color: black;

​      /**0-1  越靠近0越透明*/

​      opacity: 0;

​    }

## 2.元素的显示与隐藏

div{

​      /*opacity: 0*在页面仍存在*/

​      display: none;/*在页面中不在占有位置*/

​      visibility: hidden;/*在页面中仍然占有位置*/

​      visibility: visible;

​      width: 300px;

​      height: 300px;

​      background-color: black;

​    }

## 3.光标的样式

​    a{

​      /* 工 */

​      cursor: text;

​      /* 手 */

​      cursor: pointer;

​      /* 十字 */

​      cursor: move;

​      /* 箭头 */

​      cursor: default;

​    }

​    p{

​      cursor: pointer;

​    }

## 4.轮廓的样式

 input{

​      /* outline-width: 100px;

​      outline-color: aqua;

​      outline-style: solid; */

​      outline:  none;

​    }

​    /* 标签获取焦点的状态 */

​    input:focus{

​      outline: 1px solid blue;

​    }

## 5.过渡

​    div{

​      width: 100px;

​      height: 100px;

​      background-color: aqua;

​      /* transition: all 2s; */

​      transition: width 2s,height 3s,background-color 4s;

​    }

​    div:hover{

​      width: 1000px;

​      height: 200px;

​      background-color: blanchedalmond;

​    }

## 6.媒体查询

​    div{

​      width: 1000px;

​      height: 1000px;



​    }

​    /* 500-800px    800-1200px  */

​    @media screen  and(min-width: 500px) and (max-width:800px) 

​    {

​      div{

​        background-color: aqua;

​      }

​    }

​    @media screen  and(min-width: 800px) and (max-width:1200px) 

​    {

​      div{

​        background-color: rgb(255, 0, 153);

​      }



​    }

## 7.字体

 @font-face {

​      font-family: myFont ;

​      src: url();

​    }

​    p{

​      font-family: myFont;

​      font-size: 30px;

​    }

## 8.平移

div{

​      width: 300px;

​      height: 200px;



​    }

​    .father{

​      position: relative;

​      border: 1px solid black;

​    }

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;

​      /* 百分比参照的是盒子自身的尺寸

​      正数---x方向

​      正数负数都可以 */

​      transform: translateX(150%);

​      transform: translateY(-100px);

​      transform: translateZ();

​      /* transform: translate(x轴的偏移量,y轴的偏移量); */

​      transform: translate(200px 400px);

​      transform: translateX(200px)translateY(400px);



​    

​    }

​    .father:hover .son{

​      transform: translate(200px 400px);

​    }

## 9.旋转

div{

​      width: 300px;

​      height: 200px;



​    }

​    .father{

​      position: relative;

​      border: 1px solid black;

​    }

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;

​      

​    

​    }

​    .father:hover .son{

​      /* 旋转的单位是deg(度) */

​      transform: rotateZ(60deg);

​      transform: rotate(70deg);

​    }

## 10.改变原点

   div{

​      width: 300px;

​      height: 200px;

​    }

​    .father{

​      margin: 0 auto;

​      position: relative;

​      border: 1px solid black;

​    }

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;



​    }

​    .father:hover .son{

​      /* 旋转的单位是deg(度) */

​      /* transform: rotateZ(60deg); */

​      transform: rotate(70deg) rotateY(45deg);

​      /* transform-origin: 水平方向原点的位置   垂直方向原点的位置; */

​      /* 方向名词 像素 */

​      transform-origin: top right;

​      transform-origin: 100px 200px;

​    }

## 11.多重转换

   div{

​      width: 300px;

​      height: 200px;

​    }

​    .father{

​      margin: 0 auto;

​      position: relative;

​      border: 1px solid black;

​    }

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;

​    }

​    .father:hover .son{

​      transform: translate(100px,200px) rotateY(45deg);

## 12.缩放

div{

​      width: 300px;

​      height: 200px;

​    }

​    .father{

​      margin: 0 auto;

​      position: relative;

​      border: 1px solid black;

​      overflow: hidden;

​    }  

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;



​    }

​    .father:hover .son{

​      /* transform: scale(x轴的缩放  y轴的缩放); */

​      transform: scale(1.5,2);

​      transform: scale(-1);

​      /* 大于1表示放大的倍数 ,小于1表示缩小的倍数 */

​    }

## 13.倾斜

div{

​      width: 300px;

​      height: 200px;

​    }

​    .father{

​      margin: 0 auto;

​      position: relative;

​      border: 1px solid black;

​    }

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;

​    }

​    .father:hover .son{

​      transform: skewX(45deg);

​    }

## 14.空间转换

​    div{

​      width: 300px;

​      height: 200px;



​    }

​    .father{

​      margin: 0 auto;

​      position: relative;

​      border: 1px solid black;

​      /* 视距 */

​      perspective: 1000px;

​      transform: translate3d(100px 100px 200px);

​      transform-style:preserve-3d ;

​    }

​    .son{

​      transition: all 2s;

​      position: absolute;

​      top: 0;

​      left: 0;

​      background-color: blanchedalmond;

​    }

​    .father:hover .son{

​      transform: translateZ(100px);

​    }

## 15.动画

​    /* 定义动画 */

​    @keyframes mymovie {

​      form{

​        width: 0;

​        height: 0;

​        background-color: rgb(249, 240, 255);

​      }

​      to{

​        width: 1200px;

​        height: 300px;

​        background-color: aqua;

​      }

​    }

​    @keyframes mymovie2{

​      0%{         width: 1200px;

​        height: 300px;

​        background-color: aqua;



​      }

​      25%{

​        width: 1200px;

​        height: 300px;

​        background-color: rgb(255, 0, 0);

​      }

​      50%{

​        width: 1200px;

​        height: 300px;

​        background-color: rgb(0, 255, 98);

​      }

​      /* .... */

​    }

​    /* animmation 复合属性:动画名称 动画花费时间 */

​    div{

​      animation: mymovie 3s;

​      animation-duration: 3s;

​      /*动画延迟  */

​      animation-delay: 3s;

​      /* 执行完毕时的状态  */

​      animation-fill-mode: forwards;

​      /* 速度曲线 */

​      animation-timing-function: steps(40);

​      /* 重复次数 */

​      animation-iteration-count: 3;

​      /* animation-iteration-count: infinite;无限循环 */

​      animation: mymovie 3s ease 2s 3 reverse forwards;

​    }

​    div:hover{

​      /* 暂停动画 */

​      animation-play-state: paused;

​    }

JavaScript:是一门弱数据类型的编程语言,实现的是人机交互的效果

干嘛:

1.做网页特效

2,做表单验证

3,是数据交互

4,服务器编程

5,





ECMAScript(变量,数据类型,分支,循环,对象)	WebApi:Dom操作文档,Bom操作文档





JavaScript的书写位置:

内部JS:写在HTML里边,用<**script**>包住 

写在<body**>**结束标签的前面

2,外部JS

代码写在.js结尾的文件中,通过



变量:计算机用来存储数据的容器,

盒子

注意:变量指的是容器

变量的基本使用:

声明变量	let变量名

变量赋值	变量名 = 变量值





重新赋值



let声明的变量,不允许重复声明



let声明多个变量

let age1=21,age2=12



var和let区别:

1,var可以重复声明变量

2,let声明的变量,不能在声明前使用

3,var不存在快起作用域的概念



后面声明变量使用let

变量的命名规范:

1,只能用有效字符(数字,字母,下划线,$)组成,并且不以数字开头

2,不能使用关键字,保留字,

3,js严格区分字母的大小写

4,起名最好是具有意义的

5,遵循小驼峰命名法



数据类型:

基本数据类型:

number

string:通过"" '`'包起来,都是字符串	``包起来的字符串可以进行换行

字符串的拼接:+	

模板字符串可以拼接字符串和变量

bool: true\false

undefined:未定义类型:变量声明了,但是未赋值



null

引用数据类型:

object

function

array



判断数据类型:type of 变量



js是数据类型语言,他的变量类型,只有在赋值之后,才能确定.也就是说,变量赋予的变量值是什么数据类型,变量就是什么数据类型



数据类型转换:

隐式和显示

隐式转换:

+两边存在一边是字符串,则另外一边会被转换成字符串

除了+,其他的算数运算符会将转换成数字类型

显示转换

转换为数字:

Number()

如果参数中出现字符,最终结果会是NAN,NAN本身也是属于number类型,不是一个数字not a number

parseInt()尽可能的将参数转化为整型

parseFloat()尽可能的将参数转化为浮点

转换成字符串:

String()

变量.toString()



运算符:

算术运算符:+ - * / %

赋值运算符:= 	+= 	-= 	/= 	%=

a+=3 =====>> a=a+3

自增自减运算符

i++:赋值运算符的优先级大于后++,先进行赋值运算

++i:前++的优先级高于赋值运算符,先进行前加加,再进行赋值运算

i--

比较运算符:

**> 	<	 >=	<=	 ==	===	!== **

==:只会判断值是否相同

===:会判断值和数据类型

NAN不等于任何值,包括它自身

逻辑运算符:

&&	两真才真

||	一真则真

!	取反

js:

**<script> src="路径" **

**</script>**



prompt()



let 变量名=变量值



数据类型:

基本数据类型	变量数据类型

string()

.tostrong()

运算符:

算数运算符:
赋值运算符:= += -=

一元运算符 ++ -- !

a = 12 

b = a++

c = ++b

关系运算符:> >= < <= == ===(值,数据类型都会进行比较) != !==

逻辑运算符1:&& || !

位移运算符:基于二进制的运算

0 1

原码:十进制对应的二进制

反码:除了符号位之外,其余取反

补码:反码+1





|:两个0才为0

### 1.位运算

​    let a = 2

​    let b = 3

​    console.log(a|b)

​    // 0

​    // &   两个1才为1

​    

​    console.log(a&b)

​    console.log(a^b)

### 2.表达式和语句

​    // 表达式:是一组代码的集合

​    let x = 7

​    3+4

​    x++

​    // 语句:if  js的命令

​    // alert()

### 3.if-else语句

// 顺序,选择,循环

​    // 顺序:代码默认的自上到下,从左到右

​    // 选择(分支):面对不同的条件,执行不同的代码

​    // 条件只要最终返回的是布尔值就可以

​    // if(条件){

​    //   // 满足条件时执行的代码



​    // }

​    // else{}

​    // 条件不满足时,执行的代码

​    // let age = Number(prompt("请输入你的年纪:"))

​    // if (age>18){

​    //   console.log("成年了");

​    // }

​    // else{

​    //   console.log("一边玩去");

​    // }

​    // else if(条件2){

​    //   条件2满足时执行的代码

​    // }

### 4.三元运算符

​    // 条件?   满足条件时执行的代码:不满足条件时执行的代码

​    // let age = 21

​    // age > 18 ? console.log("成年"):console.log("小孩")

​    // let a=2,b=3

​    // c=a>b ? a : b

​    // console.log(c)

​    let a = +prompt("输入一个数")

​    a=a < 10  ? "0"+a : a

​    console.log(a)

### 5.switch语句

// switch(数据){case 值1:代码  case 值2:代码  default:代码}

​    let day = prompt("请输入今天星期几:")

​    switch(day){

​      case "1":

​        alert("今天星期一")

​        break

​      case"2":

​        alert("今天星期二")

​        break

​      case"3":

​        alert("今天星期三")

​        break

​      case"4":

​        alert("今天星期四")

​        break

​      case"5":

​        alert("今天星期五")

​        break

​      case"6":

​      case"7":

​        alert("今天周末")

​        break

​      default:

​        alert("error")

​    }

### 6.断点调试

1.断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。进行分析从而找到这个Bug
2.断点调试是程序员必须掌握的技能。
3.断点调试也能帮助我们查看java底层源代码的执行过程,提高程序员的Java水平

### 7.循环

  // 循环:某一段代码重复执行

​    // while

​    // *

​    // while(循环条件){循环体  }

​    // 变量的初始值

​    // let i = 1

​    // // 终止条件

​    // while(i<=10){

​    //   console.log(i)

​    //   // 初始值变化

​    //   document.write(i)

​    //   i++

​    // }

​    let i=1,n=1,sum1=0,sum2=0

​    while(i<=100){

​      sum1=sum1+i

​      i++

​    }

​    while(n<=100){

​      if(n%2 === 0 ){

​        sum2=sum2+n

​      }

​      

​      n++

​    }

​    console.log(sum1)

​    console.log(sum2)

### 8.break,continue

​    let i = 1

​    while(i<10){

​      if(i===4){

​        // break

​        //终止掉距离自己最近的一层循环

​        i++

​        continue

​        // 跳出本次循环

​      }

​      console.log(i)

​      i++

​    }

### 1.dowhile语句

​    let i = 1

​    do{

​      console.log("hello world")

​      i++

​      // 不管条件是否成立都会执行一次

​    }while(i<1)

### 2.for循环

​    // for循环:

​    // for(声明临时变量;循环条件;变化值){循环体}

​    for(let i=1;i<=100;i++){

​      console.log(i)

​    }

### 3.循环嵌套

​    for(let i=1;i<=7;i++){

​      console.log(`今天是第${i}天`)

​      for(let j=1;j<=7;j++){

​        console.log(`送了${j}朵花`)

​      }

​    }

### 4.数组

​    // 数组:存储多条数据,数组中存放不同的数据类型

​    // 数组的声明方式

​    // 1.new

​    let arr1 = new Array()

​    console.log(arr1)

​    // 2.字面量

​    let arr2=[1,2,3,"zhangsan",true]

​    console.log(arr2)

​    // 3.数组的长度

​    console.log(arr2.length)

​    // 查看数组里边的元素  数组下标:从0开始

​    console.log(arr2[3])

​    console.log(arr2[7])

​    // 遍历数组

​    for(let i=0;i<arr2.length;i++){

​      console.log(arr2[i])

​    }

​    // [2,3,4,5,6,714]求所有元素的和以及平均值

​    let arr3=[2,3,4,5,6,714]

​    let sum=0

​    let ar=0

​    for(let i=0;i<arr3.length;i++){

​      sum+=arr3[i]

​    }

​    document.write(sum)

​    document.write(`<br>`)

​    document.write(sum/arr3.length)

### 5.数组的操作

​    let arr1=[1,2,3,4]

​    // 查  数组名[下标]

​    // 改

​    arr1[0]="zhangsan"

​    console.log(arr1)

​    // 增

​    // 数值名.push():一次把一个或多个进行追加数组的前面

​    arr1.push("o((>ω< ))o")

​    arr1.push("对对对","对对对")

​    // unshift():一次把一个或多个进行追加到数组的后面

​    arr1.unshift("(⊙o⊙)?")

​    // 删除

​    // pop()从数组中删除最后一个元素,把元素

​    arr1.pop()

​    // shift()从数组中删除第一个元素

​    arr1.shift()

​    // splice(start/删除多个元素)删除指定元素

​    arr1.splice(2,3)

​    arr1.splice(2,3,"wwwwwd","assssssss","true")

### 6.函数

​    // 函数:一段实现某一功能的代码的集合   本质:实现了代码的高度复用

​    // 函数在js中的定义方式

​    // function函数名([参数]){函数体}

​    function sayhi(say){

​      console.log(say)

​    }

​    // 函数调用 函数名()

​    // sayhi()

​    // sayhi()

​    // 函数只能return出去一条数据

​    sayhi("顶顶顶顶顶顶顶顶顶顶顶")

​    function getsum(num1,num2){

​      // console.log(num1+num2)

​      return num1+num2,num1-num2

​    }

​    let a=getsum(1,2)

​    console.log(a)

​    // getsum(1,2)

### 7.函数作为参数传参

​    // function test1(){

​    //   console.log("test1~~~~")

​    // }

​    // function test2(){

​    //   test1()

​    //   console.log("test2~~~~")

​    // }

​    function test2(fn){

​      fn(1)

​      console.log("test2~~~~")

​    }

​    //es6 箭头函数

​    test2((x,y) => {

​      console.log("test1")

​    })

​    function getmax(arr){

​      let max =0

​      for(let i in arr){

​        if(arr[i]>max){

​          

​        }

​      }

​    }

### 8.值传递和引用传递

​    function change(Array){

​      // console.log(a)

​      // console.log(b)

​      // a+=10

​      // b+=100

​      // return a,b

​      Array.push("zhansan")

​    }

​    x=2

​    y=3



​    // change(x,y)

​    // console.log(x)

​    // console.log(y)

​    let arr1=[1,2,3,4]

​    change(arr1)

​    console.log(arr1)

### 9.默认值参数

​    function getarea(r,PI = 3.14){

​      return r*r*PI

​    }

​    let a=getarea(3)

​    console.log(a)

### 10.可变参数

​    function getsum(num1,num2){

​      // return num1+num2

​      console.log(arguments)

​      let sum=0

​      for(let i in arguments){

​        sum +=arguments[i]

​      }

​      console.log(sum)

​      return sum



​    }

​    let a = getsum(1,3,4)

​    document.write(a)

​    console.log(a)

### 11.作用域

​    // 作用域:名称在某一个范围内生效,这个范围为就是他的作用域

​    // 全局作用域  局部作用域  块级作用域

​    let a=1

​    function test01(){

​      console.log(a)

​    } 

​    test01()

​    // console.log(b)

​    for(let i=0;i<=0;i++){

​      let zhangsan="zhangsan"

​      console.log(i)

​    }

​    console.log(zhangsan)

### 12.对象

​    let name=[172,120,119]

​    // 对象

​    let zhangsan={

​      unname: "张三",

​      age:21,

​      sing: () =>{

​        console.log("你是会唱歌的")



​      }

​    }

​    // 对象:属性和方法

​    // 查看 对像名.属性

​    

​    console.log(zhangsan,unname)

​    zhangsan.sing()

​    console.log(zhangsan["age"])

### 1.剩余参数

//...  剩余参数,接到的是除了位置参数以外其余的参数,返回的是真数组

​    function test(a,b,...arr){

​      console.log(a+b)

​      console.log(arr)

​      console.log(arguments)

​      



​    }

​    test(1,2,3,4)

## 2.垃圾回收机制

// 内存中的生命周期

​    // 1,内存分配

​    // 2,内存使用

​    // 3,内存回收,使用完毕之后

​    // 内存泄漏,该回收的,



​    // 栈

​    // 堆

​    // 

​    // js:引用计数法   标记清除法

​    // 引用计数法:如果一个对象已经没有指向它的的引用了

​    // 内存消耗:循环引用的内存,

​    // 1.记录引用次数

​    // 2.++ --

​    // 3.引用次数为0时,释放内存 

​    // let arr=[1,2,3,4]

​    let obj={

​      unname:"zhangsan"

​    }

​    let a = obj

​    a = null

​    // 标记清除 从根部查找内存中的对象,凡是能找到的,都是是我要进行使用的

​    let obj2={

​      a:obj3

​    }

​    let obj3={

​      b:obj2

​    }

​    obj2=null

### 3.闭包

// 内层函数+外层函数的变量  。内层函数使用了外层函数的变量

​    // function outer() {

​    //   let i = 10

​    //   function inner() {

​    //     console.log(i)

​    //   }

​    //   return inner



​    // }

​    // let a = outer()

​    // a()

​    // a()





​    // 闭包:外部访问函数内部的变量

​    // let num = 0

​    // function test1() {



​    //   num++

​    //   console.log(`这是函数调用的第${num}次`)

​    // }



​    // test1()

​    // test1()

​    // num = 300

​    // test1()





​    function outer() {

​      let num = 0

​      function inner() {

​        num++

​        console.log(`这是函数调用的第${num}次`)



​      }

​      return inner



​    }



​    let a = outer()

​    a()

​    a()

​    a()

​    num = 21

​    a()

### 4.math

console.log(Math.E)

​    console.log(Math.PI)

​    let a = 4.999

​    let b = 3.11

​    // 向下进行取整

​    console.log(Math.floor(a))



​    // 向上取整

​    console.log(Math.ceil(b))

​    console.log(Math.abs(-111))

​    // 最大值最小值

​    console.log(Math.max(1, 21, 32, 12, 21))

​    console.log(Math.min(1, 21, 32, 12, 21))

​    // 随机数  只能取[0,1)

​    console.log(Math.floor(Math.random() * ((20 - 10) + 1)) + 10)





​    // 

​    // function get_random(n, m) {

​    //   return Math.floor(Math.random() * ((m - n) + 1)) + n

​    // }



​    // console.log(get_random(100, 200))





​    // 四舍五入

​    console.log(Math.round(3.51))



​    // 开平方根

​    console.log(Math.sqrt(9))





​    // 幂次方

​    console.log(Math.pow(2, 3))

### 5.date

// 实例化时间对象

​    let date = new Date("2024-05-01 00:00:00")

​    console.log(date)



​    // 年

​    let year = date.getFullYear()

​    console.log(year)

​    // 月  0-11

​    let m = date.getMonth() + 1

​    console.log(m)



​    // 日

​    let day = date.getDate()

​    console.log(day)



​    // 时分秒

​    let hh = date.getHours()

​    let mm = date.getMinutes()

​    let ss = date.getSeconds()

​    console.log(hh)

​    console.log(mm)

​    console.log(ss)

​    // 星期

​    let w = date.getDay()

​    console.log(w)

​    // 获取毫秒数

​    // let mins = date.getMilliseconds()

​    // console.log(mins)

​    // 时间戳  此刻距离19700101 00:00:00 的毫秒数

​    let timechuo = date.getTime()

​    console.log(timechuo)

​    function get_time() {

​      let date = new Date()

​      let year = date.getFullYear()

​      let m = date.getMonth() + 1

​      let day = date.getDate()

​      let hh = date.getHours()

​      let mm = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes()

​      let ss = date.getSeconds()

​      let w = date.getDay()

​      return `${year}-${m}-${day}  ${hh}:${mm}:${ss}  今天星期${w}`

​    }

​    let a = get_time()

​    console.log(a)

### 6.获取元素对象

 // 1、通过css选择器获取

​    // document.querySelector("css选择器")

​    let div1 = document.querySelector(".box1")

​    console.dir(div1)

​    // document.querySelectorAll("ul li")  拿到的是伪数组,直接考虑for循环

​    let lis = document.querySelectorAll("ul li")

​    console.log(lis)

​    for (let i in lis) {

​      console.log(lis[i])

​    }





​    // 其他



​    console.log(document.getElementById("li4"))

### 1.元素内容

// 1.获取元素对象

​    const box1=document.querySelector("div")

​    console.log(box1)

​    // innerText()  不识别标签

​    console.log(box1.innerText)

​    box1.innerText="新内容"

​    console.log(box1.innerText)

​    // innerHTMl

​    console.log(box1.innerHTML)

​    box1.innerHTML=`<h1>xxxx</h1>`

​    console.log(box1.innerHTML)

​    // textContent  不识别标签

​    box1.textContent=`<h1>5555</h1>`

### 2.改属性

const ipt = document.querySelector()

​    //  对象.属性=值

​    ipt.type="passwd"

### 3.改style样式

// 1. 获取元素

​    const box =document.querySelector("div")

​    // 更改style样式

​    // 1.对象.style.样式=""

​    box.style.width="100px"

​    

​    // 碰见带-的复合属性,采用小驼峰的方式

​    box.style.backgroundColor="brown"

​    // className

​    box.className="box_style"

​    // classList   

​    // box.classList.add("box_style")追加新的类名到元素对象上

​    box.classList.add("box_style")

​    // box.classList.remove("box_style")移除元素对象的类名

​    // 如果类名存在则移除,如果不存在则添加

​    box.classList.toggle("box1")

### 4.补充

// 像是checked这样的属性名=属性值的属性,js在进行赋值时,通过true/false去控制属性值

​    document.querySelector("input[value='nv']").checked="true"

​    console.log(document.querySelector("input[value='nv']").checked)

### 5.查找结点

console.log(document.querySelector(".son").parentNode)

​    console.log(document.querySelector(".father").childNodes)

​    console.log(document.querySelector(".father").children)

​    // 查找兄弟节点

​    console.log(document.querySelector(".father").nextElementSibling)

​    console.log(document.querySelector(".father").previousElementSibling)

​    // console.log(document.querySelector(".father").nextSibling)

### 6.事件监听

 // 事件:事件源  事件类型   处理函数

​    // l0   on事件类型

​    const button = document.querySelector("button")

​    const box = document.querySelector("div")

​    // 事件源.on事件类型=function(){}  

​    // 同一个事件源,后面注册的事件会对前面注册的事件进行覆盖

​    // button.onclick = function () {

​    //   box.style.display = "none"

​    // }

​    // button.onclick = null

​    // button.onclick = function () {

​    //   console.log("666")

​    // }

​    function text() {

​      alert("666")

​      box.style.display = "none"

​    }

​    // l1  事件监听   不会覆盖

​    button.addEventListener("click", text, true)

​    button.removeEventListener("click", text, true)

​    // button.addEventListener("click", function () {

​    //   // alert("666")

​    //   console.log("444")

​    // }, true)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/546135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sql注入之时间注入

一、时间注入 时间注入又名延时注入&#xff0c;属于盲注入的一种&#xff0c;通常是某个注入点无法通过布尔型注入获取数据&#xff0c;而采用一种突破注入的技巧。 在 mysql 里 函数 sleep() 是延时的意思&#xff0c;sleep(10)就是数据库延时 10 秒返回内容。判断注入可以使…

G2D图像处理硬件调用和测试-基于米尔-全志T113-i开发板

本篇测评由电子工程世界的优秀测评者“jf_99374259”提供。 本文将介绍基于米尔电子MYD-YT113i开发板的G2D图像处理硬件调用和测试。 MYC-YT113i核心板及开发板 真正的国产核心板&#xff0c;100%国产物料认证 国产T113-i处理器配备2*Cortex-A71.2GHz &#xff0c;RISC-V 外置…

Selenium自动化测试网页加载太慢如何解决?

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 遇到网页加载慢&#xff0c;selenium运行效率降低&#xff0c;可以通过修改页面加载策略提升自动…

docker-compose yaml指定具体容器网桥ip网段subnet;docker创建即指定subnet;docker取消自启动

1、docker-compose yaml指定具体容器网桥ip网段subnet docker-compose 启动yaml有时可能的容器网段与宿主机的ip冲突导致宿主机上不了网&#xff0c;这时候可以更改yaml指定subnet 宿主机内网一般是192**&#xff0c;这时候容器可以指定172* version: 3.9 services:coredns:…

Django之rest_framework(四)

扩展的视图类介绍 rest_framework提供了几种后端视图(对数据资源进行增删改查)处理流程的实现,如果需要编写的视图属于这几种,则视图可以通过继承相应的扩展类来复用代码,减少自己编写的代码量 官网:3 - Class based views - Django REST framework rest_framework.mixi…

比特币突然暴跌

作者&#xff1a;秦晋 周末愉快。 今天给大家分享两则比特币新闻&#xff0c;也是两个数据。一则是因为中东地缘政治升温&#xff0c;传统资本市场的风险情绪蔓延至加密市场&#xff0c;引发加密市场暴跌。比特币跌至66000美元下方。杠杆清算金额高达8.5亿美元。 二则是&#x…

【Node.js】Express学习笔记(黑马)

目录 初识 ExpressExpress 简介Express 的基本使用托管静态资源nodemon Express 路由路由的概念路由的使用 Express 中间件中间件的概念Express 中间件的初体验中间件的分类 初识 Express Express 简介 什么是 Express&#xff1f; 官方给出的概念&#xff1a;Express 是基于…

书生·浦语大模型全链路开源体系-第3课

书生浦语大模型全链路开源体系-第3课 书生浦语大模型全链路开源体系-第3课相关资源RAG 概述在 InternLM Studio 上部署茴香豆技术助手环境配置配置基础环境下载基础文件下载安装茴香豆 使用茴香豆搭建 RAG 助手修改配置文件 创建知识库运行茴香豆知识助手 在茴香豆 Web 版中创建…

Windows 10明年退役

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Windows 10 生命周期终止&#xff0c;收费预警二、收费标准&#xff1a;基于云的方式&#xff0c;使用 Windows 10 的 PC 也能接收 ESU高定价背后还是主推 …

如何查看个人大数据信用报告?查询报告哪家好呢?

大数据信用报告是现代社会中非常重要的信用评估工具&#xff0c;对于个人来说也具有非常重要的意义。那么&#xff0c;如何查看个人大数据信用报告?查询报告哪家好呢?本文将为您介绍。 首先&#xff0c;查看个人大数据信用报告需要了解报告的内容和格式 一般来说&#xff0c;…

vite+vue3+antDesignVue 记录-持续记录

记录学习过程 持续补充 每天的学习点滴 开始时间2024-04-12 1&#xff0c;报错记录 &#xff08;1&#xff09;env.d.ts文件 解决方法&#xff1a; 在env.d.ts文件中添加以下代码&#xff08;可以看一下B站尚硅谷的讲解视频&#xff09; declare module *.vue {import { Defi…

Hello算法11:排序

https://www.hello-algo.com/chapter_sorting/ 选择排序 初始未排序的区间是[0,n-1]在[0,n-1]中查找最小元素&#xff0c;和索引0交换&#xff0c;此时未排序的区间是[1,n-1]在[1,n-1]中查找最小元素&#xff0c;和索引1交换&#xff0c;此时未排序区间是[2,n-1]以此类推&…

Langchain-Chatchat在windows平台离线部署(1)

Langchain-Chatchat在windows平台离线部署&#xff08;1&#xff09; pwd的不兼容 在调用数据库初始化程序的时候&#xff0c;系统将会调用pebblo.py程序&#xff0c;在此程序中&#xff0c;需要调用基于linux平台的pwd程序。 在windows环境下&#xff0c;pwd模块不兼容&…

extends继承

目录 什么时候用继承? 继承的格式? 继承的特点 子类可以继承父类的哪些呢&#xff1f; 是否可以继承父类的构造方法呢&#xff1f; 是否可以继承成员变量&#xff1f; 是否可以继承成员方法&#xff1f; 在Java中&#xff0c;extends关键字用于实现继承关系。通过使用…

WInForm —— 自定义画板

项目模板:要实现在背景和无背景上完成画线&#xff0c;画直线、矩形、椭圆、并能随意调整字体的大小 首先要定义绘制的类型 enum DrawMode {None, // 没有选择绘制型Pen, // 画笔 画直线Line,// 画直线Rectangle,// 画矩形Ellipse, // 画椭圆Rubber // 橡皮擦 } //如果要想…

【Linux】进程的优先级及linux下进程的调度于切换

目录 ​编辑 1.优先级是什么 2.linux中的优先级是怎么实现的 ps -la 命令查看当前用户启动的进程​编辑 linux下调整优先级&#xff1a; ①先top一下 ②点击r ③需要输入进程的pid ④回车 ​编辑 ⑤输入想将优秀级修改的值&#xff1a; linux进程优先级范围为什么必须是【60,9…

Navicat的安装与破解

个人介绍 hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的…

《系统分析与设计》实验-----需求规格说明书 哈尔滨理工大学

文章目录 需求规格说明书1&#xff0e;引言1.1编写目的1.2项目背景1.3定义1.4参考资料 2&#xff0e;任务概述2.1目标2.2运行环境2.3条件与限制 3&#xff0e;数据描述3.1静态数据3.2动态数据3.3数据库介绍3.4数据词典3.5数据采集 4&#xff0e;功能需求4.1功能划分4.2功能描述…

Java——封装、访问修饰符、包

目录 一.封装的概念 二.访问限定符 三.封装扩展之包 1.包的概念 2.导入包中的类 3.自定义包 4.包的访问权限控制举例 5.常见的包 一.封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&am…

linux进阶篇:文件查找的利器——grep命令+管道操作详解

Linux文件查找的利器——grep命令管道操作详解 1 grep简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。 Uni…