web笔记再整理

news2024/11/14 18:44:16

前四天笔记在此连接:

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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVAEE——网络初始

文章目录 网络发展史独立模式网络模式局域网LAN路由器的诞生 网络通信的基础IP地址端口号 认识协议OSI七层模型TCP/IP五层模型 网络发展史 独立模式 在原始的年代中电脑间想要通信需要两台电脑连接一根网线&#xff0c;但是一台电脑基本上只有一个接口。因此想要链接更多的电…

RISCV指令集体系简读之RV32I

RV32I 指令格式 用于寄存器-寄存器操作的R类型指令用于短立即数和访存load操作的I型指令用于访存store操作的s型指令用于条件跳转操作的B类型指令用于长立即数的U型指令用于无条件跳转的J型指令 特点&#xff1a; 所有指令都是32bits&#xff0c; 简化了指令解码&#xff1b;…

SuperMap GIS基础产品FAQ集锦(20240415)

一、SuperMap iDesktopX 问题1&#xff1a;请教一下&#xff0c;同一份数据&#xff0c;用idesktop11.0.1、idesktopX11.1.1和idesktopX11.1.1的临时包&#xff0c;做同一分析&#xff0c;得到的结果数据集都不一样&#xff0c;有的是57条&#xff0c;有的是86条&#xff0c;有…

如何在树莓派安装Nginx并实现固定公网域名访问本地静态站点

文章目录 1. Nginx安装2. 安装cpolar3.配置域名访问Nginx4. 固定域名访问5. 配置静态站点 安装 Nginx&#xff08;发音为“engine-x”&#xff09;可以将您的树莓派变成一个强大的 Web 服务器&#xff0c;可以用于托管网站或 Web 应用程序。相比其他 Web 服务器&#xff0c;Ngi…

【C++语言】初步认识面向对象编程类和对象(上)

文章目录 前言一.初步认识面向过程和面向对象编程1.面向过程编程初步认识2.面向对象编程初步认识 二.C类1. 类的引入&#xff1a;2. 类的定义3.类的访问限定符&&封装3.1 访问限定符3.2 封装 4.类的实例化5.如何计算类的大小 总结C语言系列学习目录 前言 面向对象编程 类…

深度探索:Secure Hash Algorithm(SHA)全景解析

title: 深度探索&#xff1a;Secure Hash Algorithm&#xff08;SHA&#xff09;全景解析 date: 2024/4/15 18:33:17 updated: 2024/4/15 18:33:17 tags: SHA安全抗碰撞性算法版本实现细节性能优化发展历史应用案例 密码学中的哈希函数 一、哈希函数的定义 哈希函数是一种数…

车载终端设备主板方案_MTK平台智能后视镜行车记录仪PCBA定制开发

智能后视镜集成了车辆行车记录、倒车影像、AR实景导航、语音助手、ADAS辅助、云电子狗、蓝牙通话、影音娱乐等功能&#xff0c;为驾驶者提供全方位的驾驶辅助体验。 智能后视镜主板解决方案&#xff0c;采用了联发科MT6762八核处理器&#xff0c;拥有主频2.0GHz&#xff0c;采用…

Ubuntu与主机windows共享文件夹

一、创建共享文件夹&#xff1a; 虚拟机->设置->选项->共享文件夹->总是启用->选择本地的共享文件夹&#xff08;如E&#xff1a;\Share&#xff09;->确定。 二、设置挂载&#xff1a; 首先赋予/etc/fstab文件可编辑的权限&#xff1b; sudo chmod 777 /…

Langchain入门到实战-第二弹

Langchain入门到实战 Langchain快速入门官网地址Langchain概述Langchain调用大模型更新计划 Langchain快速入门 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://python.langchain.com/Langchain概述 LangChain是一个…

从旺店通·旗舰奇门到金蝶云星空通过接口配置打通数据

从旺店通旗舰奇门到金蝶云星空通过接口配置打通数据 对接系统旺店通旗舰奇门 慧策&#xff08;原旺店通&#xff09;是一家技术驱动型智能零售服务商&#xff0c;基于云计算PaaS、SaaS模式&#xff0c;以一体化智能零售解决方案&#xff0c;帮助零售企业数字化智能化升级&#…

实时渲染 -- 流明(Lumen)

首先我们需要知道Lumen需要解决哪些问题。 很多人都会问&#xff0c;既然已经有了硬件的Raytracing &#xff0c;我们为什么还要Lumen呢。这是由于很多硬件并不支持 Realtime Raytracing&#xff0c;对于支持的那些硬件&#xff0c; N 卡还算是勉强可以&#xff0c;而 A 卡支持…

科技感画册制作方法,视觉效果直接拉满

随着科技的不断进步&#xff0c;科技感画册制作也变得更加精彩和引人注目。通过巧妙地运用先进的设计工具和技术&#xff0c;以及结合创新的视觉元素&#xff0c;可以轻松地将画册的视觉效果直接拉满。 那你想知道怎么制作吗&#xff1f;现在我来教你这个方法吧&#xff0c;方法…

第二期书生浦语大模型训练营第三次笔记

RAG RAG是什么&#xff1f; RAG&#xff08;Retrieval Augmented Generation&#xff09;技术&#xff0c;通过检索与用户输入相关的信息片段&#xff0c;并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺…

Unity开发holoLens2应用时的ProjectSettings配置

正确的进行Unity工程配置&#xff0c;才能进行后续的【发布】和【部署】操作… 本案例开发环境说明&#xff1a; Unity2021.3.18Win10VS2022HoloLens2 一、平台设置 二、Quality画面质量设置 三、Player玩家设置 四、XR-Plug设置 五、环境测试 导入一个官方demo&#xff0c…

安装jmeter和ant

安装jmeter和ant 安装java环境 安装jdk和jre 下载Java SE Development Kit 8 Java SE subscribers will receive JDK 8 updates until at least December 2030. 选择指定包进行安装&#xff0c;如windows 共享账号参考&#xff1a;Oracle官网 账号及密码 目前官网下载低…

论文速读:Do Generated Data Always Help Contrastive Learning?

在对比学习领域&#xff0c;最近很多研究利用高质量生成模型来提升对比学习 给定一个未标记的数据集&#xff0c;在其上训练一个生成模型来生成大量的合成样本&#xff0c;然后在真实数据和生成数据的组合上执行对比学习这种使用生成数据的最简单方式被称为“数据膨胀”这与数据…

Android,AMS、WMS、PKMS添加动态控制debug开关功能

问题背景 在framework源码中有很多debug开关,通常我们想要看某个模块的日志,比如说广播,就需要去修改源码,把对应的debug值改为true,但是这种方法耗时耗力,比如说我想看sendBroadcast的流程,但是BroadcastQueue中有很多debug开关,如下: 这种就需要去修改对应的源码才…

消费增值新模式:让每一分钱都更有价值

亲爱的消费者们&#xff0c;大家好&#xff01;今天我想和大家探讨一种新颖的消费方式——消费增值&#xff0c;它让您的每一次消费都蕴含了额外的价值&#xff0c;让消费变得更加有意义。 在过往的消费观念里&#xff0c;我们往往只是简单地将钱花出去&#xff0c;购买所需的商…

文件传输工具WinSCP安装与使用教程

目录 一、WinSCP下载 二、WinSCP安装 三、WinSCP使用 WinSCP介绍&#xff1a; WinSCP 是一个 Windows 环境下使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。它的主要功能是在本地与远程计算机间安全地复制文件&#xff0c;并且可以直接编辑文件。 一、WinSCP下…

图片壁纸社区app前后端开源小程序源码

图片壁纸社区APP前后端开源小程序源码&#xff0c;修改了开源版的前端样式&#xff0c;变成图片社区&#xff0c;也可以用来作为壁纸 源码下载地址抄笔记 (chaobiji.cn)