前端css中animation(动画)的使用

前端css中animation的使用

  • 一、前言
  • 二、主要内容说明
    • (一)、animation-name(名称)属性
    • (二)、animation-duration(持续时间)属性
      • 1.前两个属性举例,源码1
      • 2.源码1运行效果
        • (1)、视频效果
        • (2)、截图效果
    • (三)、animation-timing-function属性
      • 1.使用贝塞尔曲线举例,源码2
      • 2.源码2运行效果
        • (1)、视频效果
        • (2)、截图效果
    • (四)、animation-delay(延迟)属性
      • 1.动画延迟举例,源码3
      • 2.源码3运行效果
        • (1)、视频效果
        • (2)、截图效果
    • (五)、animation-iteration-count(反复计数)属性
      • 1.重复动画,源码4
      • 2.源码4运行效果
        • (1)、视频效果
        • (2)、截图效果
    • (六)、animation-direction(方向)属性
      • 1.方向动画效果,源码5
      • 2.源码5运行效果
        • (1)、视频效果
        • (2)、截图效果
    • (七)、animation-fill-mode属性
      • 1.动画结束后停在最后关键帧,源码6-1
      • 2.源码6-1运行效果
        • (1)、视频效果
        • (2)、截图效果
      • 3.动画开始前元素第一关键帧状态,源码6-2
      • 4.源码6-2运行效果
        • (1)、视频效果
        • (2)、截图效果
    • (八)、animation-play-state(播放状态)属性
      • 1.动画暂停或继续,源码7
      • 2.源码7运行效果
        • (1)、视频效果
        • (2)、截图效果
  • 三、结语
  • 四、定位日期

一、前言

animation常伴随着动画帧@keyframes一起使用。本文主要说明animation都有啥属性,然后简单的进行使用。

二、主要内容说明

animation动画有多个属性,每个属性也有相应相关的值。另外我们使用过程中也可以使用简便方法,如“animation:”+后面各属性的值,用空格隔开+“;”的形式设置动画效果。举例如:animation: box1 3s linear 2s infinite;,表示创建一个叫box1,持续时间3s,开始到结束的动画速度不变,延迟2s后再开始,不断重复的动画。各值要按排序要求设置好。

(一)、animation-name(名称)属性

animation-name用于定义动画的名称。当我们创建一个动画时,给他编辑一个名称方便管理些。如某个动画取名为n,要关键帧@keyframes配合运行这个n动画,则关键帧里需要指定索引这个名称n,最后关键帧就可以确定是要进行这个n动画了。当然不给@keyframes关键帧指定对象运行动画,他也不懂要运行啥。

(二)、animation-duration(持续时间)属性

duration为持续时间。那么animation-duration则为定义动画的持续时间的属性,通常以秒(s)或毫秒(ms)为单位。

1.前两个属性举例,源码1

我们先创建个盒子,盒子名叫box-max,宽高各100px,天蓝色背景。使用动画效果使得盒子逐渐变透明,这个动画效果叫box1,动画持续持续3s。代码如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 定义.box-max类的样式,设置盒子的尺寸和背景颜色 */.box-max {width: 100px;             /* 盒子宽度 */height: 100px;            /* 盒子高度 */background-color: aqua;   /* 盒子背景颜色为水蓝色 */animation-name: box1;     /* 应用动画名称为box1 */animation-duration: 3s;   /* 动画持续时间为3秒 */}/* 定义名为box1的关键帧动画 */@keyframes box1 {0% {opacity: 1;           /* 动画开始时,盒子完全不透明 */}100% {opacity: 0.3;         /* 动画结束时,盒子透明度为0.3 */}}</style>
</head>
<body><!-- 动画作用的元素,带有描述性文本 --><div class="box-max">我是一个盒子,名称为box1,我会逐渐变透明。</div>
</body>
</html>

2.源码1运行效果

(1)、视频效果

动画名称+动画运行时间,源码1

(2)、截图效果
  • 开始时
    在这里插入图片描述
  • 逐渐透明化
    在这里插入图片描述

(三)、animation-timing-function属性

timing(时序),function(函数)。animation-timing-function用于控制动画的速度曲线。动画有运行的时段,有些时段我们想让它快些,有些时段我们想让它慢性,此时可以根据需要自己设置好animation-timing-function的值便可,常用的值有

  • linear ------ 从头到尾,动画的运行速度相同。
  • ease ------ 默认值,开始低速,然后加快,结束前变慢。
  • ease-in ------ 低速开始,结束前不断变快。
  • ease-out ------ 快速开始,结束前不断变慢。
  • ease-in-out ------ 开始和结束时段是慢速,中间部分速度最快。
  • cubic-bezier(n,n,n,n) ------ 贝塞尔曲线,可以自己设置速度曲线。

1.使用贝塞尔曲线举例,源码2

源码1的基础上,使用animation-timing-function属性的cubic-bezeier自己设置值。开始动画速度较快,后面结束段部分动画速度慢。运行效果和源码1类似。源码1为默认情况下的ease值(前面慢,后面加快,结束前变慢),源码2设置的是动画速度前部分快和源码1运行效果略微不同。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 定义.box-max类的样式,设置盒子的尺寸、背景颜色和动画效果 */.box-max {width: 100px;             /* 盒子宽度 */height: 100px;            /* 盒子高度 */background-color: aqua;   /* 盒子背景颜色为水蓝色 */animation-name: box2;     /* 应用动画名称为box2 */animation-duration: 4s;   /* 动画持续时间为4秒 */animation-timing-function: cubic-bezier(1, 1, 0.8, 0.2); /* 自定义的三次贝塞尔曲线,用于控制动画速度 */}/* 定义名为box1的关键帧动画,控制透明度从不透明到半透明的过渡 */@keyframes box2 {0% {opacity: 1;           /* 动画开始时,盒子完全不透明 */}100% {opacity: 0.1;         /* 动画结束时,盒子透明度为0.1 */}}</style>
</head>
<body><!-- 动画作用的元素,提供简单的文本描述 --><div class="box-max">我是一个盒子,名称为box2,我会逐渐变透明。</div>
</body>
</html>

2.源码2运行效果

(1)、视频效果

动画的速度曲线,源码2

(2)、截图效果
  • 动画开始阶段
    在这里插入图片描述

  • 动画快结束阶段
    在这里插入图片描述

(四)、animation-delay(延迟)属性

delay(延迟)。顾名思义,animation-delay为延迟的时间,动画开始前的延迟时间。因为有时候我们不需要动画马上运行,需要延迟一定的时间后再开始。单位同样取秒(s)或毫秒(ms)。
后面的源码3小盒子在等待期间,它是显示的,不是透明的状态效果,需要等待2s后才开始进行动画由透明变为不透明,这里是属性animation-fill-mode的默认值none设置的作用。后面也会讲到这部分关于动画前、后的内容。

1.动画延迟举例,源码3

我们先创建两个盒子,一个大盒子,一个小盒子。大盒子程序一运行便进行动画效果,小盒子程序刚开始运行先等2s再进行动画效果。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 定义.box-max类的样式,设置较大盒子的尺寸、背景颜色和动画效果 */.box-max {width: 200px;             /* 盒子宽度 */height: 200px;            /* 盒子高度 */background-color: aqua;   /* 盒子背景颜色为水蓝色 */animation-name: box3-1;   /* 应用动画名称为box3-1 */animation-duration: 4s;   /* 动画持续时间为4秒 */animation-timing-function: linear; /* 动画速度函数为线性,即动画速度恒定 */}/* 定义.box-min类的样式,设置较小盒子的尺寸、背景颜色和动画效果 */.box-min {width: 150px;             /* 盒子宽度 */height: 150px;            /* 盒子高度 */background-color: yellowgreen;   /* 盒子背景颜色为黄绿色 */animation-name: box3-2;   /* 应用动画名称为box3-2 */animation-duration: 4s;   /* 动画持续时间为4秒 */animation-timing-function: linear; /* 动画速度函数为线性 */animation-delay: 2s;      /* 动画延迟2秒开始 */}/* 定义名为box3-1的关键帧动画,控制透明度从全透明到不透明的过渡 */@keyframes box3-1 {0% {opacity: 0;           /* 动画开始时,盒子完全透明 */}100% {opacity: 1;           /* 动画结束时,盒子完全不透明 */}}/* 定义名为box3-2的关键帧动画,控制透明度从全透明到不透明的过渡 */@keyframes box3-2 {0% {opacity: 0;           /* 动画开始时,盒子完全透明 */}100% {opacity: 1;           /* 动画结束时,盒子完全不透明 */}}</style>
</head>
<body><!-- 动画作用的较大元素,提供简单的文本描述 --><div class="box-max">我是一个盒子,名称为box3-1,我会逐渐变不透明。</div><!-- 动画作用的较小元素,提供简单的文本描述 --><div class="box-min">我也是一个盒子,名称为box3-2,我也会逐渐变不透明。</div>
</body>
</html>

2.源码3运行效果

(1)、视频效果

动画延迟属性,源码3

(2)、截图效果

大盒子先逐渐不透明化的动画,小盒子等2s后才进行不透明化的动画。

  • 程序运行前部分效果,截图如下
    在这里插入图片描述
  • 程序运行后部分效果,截图如下
    在这里插入图片描述

(五)、animation-iteration-count(反复计数)属性

iteration(反复),count(计数)。animation-iteration-count用于定义动画播放的次数。一段动画我们设置的时间若有限,想让动画多运行几次可以用此属性设置。取值的方式主要有以下几种。

  • 整数 ------ 设置整数值,如1、2、3,当为3时表示动画重复运行3次。
  • 小数 ------ 设置小数,如2.5,那么表示动画重复2次,第三次进行一半。
  • infinite ------ 取值infinite(无限的)则重复运行动画

1.重复动画,源码4

我们创建一个盒子,背景添加图片,盒子变圆,然后产生一个左边滚到右边的动画,动画一直重复运行。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 设置动画效果的基本样式 */.box-max {width: 100px;                  /* 盒子宽度设置为100像素 */height: 100px;                 /* 盒子高度设置为100像素 */background-image: url('./小蜗牛.jpg'); /* 设置背景图片,确保路径正确 */background-size: cover;        /* 背景图片覆盖整个元素区域 */border-radius: 50%;            /* 设置圆形边框,使盒子呈圆形 */position: relative;            /* 设置相对定位,以便使用left属性和transform */animation-name: box4;          /* 引用定义的关键帧动画名称 */animation-duration: 4s;        /* 动画持续时间为4秒 */animation-timing-function: linear; /* 动画的时间函数设置为线性,速度恒定 */animation-iteration-count: infinite; /* 动画无限重复播放 */}/* 定义动画关键帧 */@keyframes box4 {from {left: 0; /* 动画开始时,元素从容器的最左端开始 */transform: rotate(0deg); /* 开始旋转时角度为0度 */}to {left: calc(100% - 100px); /* 动画结束时,元素移动到容器宽度减去元素宽度的位置 */transform: rotate(360deg); /* 结束旋转时完成360度旋转 */}}</style>
</head>
<body><div class="box-max"></div> <!-- 动画作用的元素,显示为一个旋转并左右移动的圆形 -->
</body>
</html>

2.源码4运行效果

(1)、视频效果

动画持续进行,源码4

(2)、截图效果
  • 动画开始前部分
    在这里插入图片描述

  • 动画开始后部分
    在这里插入图片描述

(六)、animation-direction(方向)属性

direction(方向),属性animation-direction用于设置动画的播放方式,是从头到尾正向播放,或是从尾到头的倒放。当我们设置关键帧,开始为0%,结束为100%的状态,正向为0%到100%的动画变换,反向倒放为100%到0%的动画变换。属性值主要有下面4个。

  • normal ------ 动画正放,动画一周期解释后重置到开始位置。
  • reverse ------- 动画倒放
  • alternate ------ 动画在奇数次正向播放,偶数次反向播放。如过一个动画是持续播放的,程序刚开始动画为第一次,这一次播放完毕便进行第二次,以此类推。当是奇数,如1,3,5···时,动画就正向播放;当是偶数,如2,4,6···时,动画就反向播放。
  • alternate-reverse ------ 与alternate属性相反,动画在奇数次反向播放,偶数次正向播放。

1.方向动画效果,源码5

我们在源码4的基础上添加alternate的播放方式,原本源码4的动画中图片是不断由左滚向右边,我们使用alternate的方式,便可让图片来回滚动了。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 设置动画效果的基本样式 */.box-max {width: 100px;                  /* 盒子宽度设置为100像素 */height: 100px;                 /* 盒子高度设置为100像素 */background-image: url('./小蜗牛.jpg'); /* 设置背景图片,确保路径正确 */background-size: cover;        /* 背景图片覆盖整个元素区域 */border-radius: 50%;            /* 设置圆形边框,使盒子呈圆形 */position: relative;            /* 设置相对定位,以便使用left属性和transform */animation-name: box4;          /* 引用定义的关键帧动画名称 */animation-duration: 4s;        /* 动画持续时间为4秒 */animation-timing-function: linear; /* 动画的时间函数设置为线性,速度恒定 */animation-iteration-count: infinite; /* 动画无限重复播放 */animation-direction: alternate; /* 动画在完成一次循环后反向播放 */}/* 定义动画关键帧 */@keyframes box4 {from {left: 0; /* 动画开始时,元素从容器的最左端开始 */transform: rotate(0deg); /* 开始旋转时角度为0度 */}to {left: calc(100% - 100px); /* 动画结束时,元素移动到容器宽度减去元素宽度的位置 */transform: rotate(360deg); /* 结束旋转时完成360度旋转 */}}</style>
</head>
<body><div class="box-max"></div> <!-- 动画作用的元素,显示为一个旋转并左右移动的圆形 -->
</body>
</html>

2.源码5运行效果

(1)、视频效果

动画来回滚动,源码5

(2)、截图效果
  • 开始前部分,奇数次
    在这里插入图片描述

  • 后部分,奇数次
    在这里插入图片描述

  • 开始前部分,偶数次
    在这里插入图片描述

  • 后部分,偶数次
    在这里插入图片描述

(七)、animation-fill-mode属性

animation-fill-mode主要用于定义动画前后的元素状态。主要属性值如下

  • none ------ 默认值,动画不会对元素在动画开始前或结束后形式参数产生任何影响。动画开始前,元素显示css非动画状态的形式;动画结束元素回到动画未运行前的初始状态。
  • forwards ------ 动画完成后,元素保持在动画的最后关键帧。就是动画运行到哪里,结束后它就保持在哪里,不会回初始点了。
  • backwards ------ 动画开始前,元素显示动画的第一个关键帧的样式。当我们设置一个盒子,进行的动画是刚开始开始是透明的,后面慢慢变得完全不透明。默认情况下,在等待运行前,盒子长啥样它就显示啥样,动画开始后才运行从透明变为不透明的状态,如源码3中的小盒子的属性,小盒子是延迟2s钟才开始运行动画,在这2s中的等待期盒子是显示盒子本身的具体样子,并不是以透明的状态进行等待。若要达到在动画运行前的等待期间为透明效果,就可以运用backwards的属性,在动画开始前的等待期,它显示的是第一关键帧的时候的样子,也就是透明的样子。
  • both ------ 结合了forwards和backwards的效果。动画开始前的等待期他是第一关键帧的样子,动画结束后保持在最后结束时的模样,也不会回到原点了。

1.动画结束后停在最后关键帧,源码6-1

在源码5上修改,使图片从左往右只滚动一次,默认情况下,图片滚动完后又恢复到初始左边位置。然后设置forwards属性,如
animation-fill-mode: forwards; /* 动画结束时元素保持最终状态 */
此时图片滚动完后图片就直接停在动画最后关键帧的位置,不会回原本位置了。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 设置动画效果的基本样式 */.box-max {width: 100px;                  /* 盒子宽度设置为100像素 */height: 100px;                 /* 盒子高度设置为100像素 */background-image: url('./小蜗牛.jpg'); /* 设置背景图片,确保路径正确 */background-size: cover;        /* 背景图片完全覆盖元素区域,无空隙 */border-radius: 50%;            /* 设置盒子为圆形 */position: relative;            /* 使用相对定位,支持left属性和transform变换 */animation-name: box4;          /* 使用名为box4的关键帧动画 */animation-duration: 4s;        /* 动画总持续时间为4秒 */animation-timing-function: linear; /* 动画时间函数为linear,即动画速度恒定 */animation-iteration-count: 1;  /* 动画播放一次 */animation-fill-mode: forwards; /* 动画结束时元素保持最终状态 */}/* 定义动画关键帧 */@keyframes box4 {from {left: 0; /* 动画开始时元素位于容器的最左端 */transform: rotate(0deg); /* 动画开始时旋转角度为0度 */}to {left: calc(100% - 100px); /* 动画结束时元素位于容器宽度减去元素宽度的位置 */transform: rotate(360deg); /* 动画结束时元素完成一圈(360度)旋转 */}}</style>
</head>
<body><div class="box-max"></div> <!-- 动画作用的元素,显示为一个旋转并左右移动的圆形 -->
</body>
</html>

2.源码6-1运行效果

(1)、视频效果

动画结束后停在后面一帧,源码6-1

(2)、截图效果
  • 动画开始的前段状态
    在这里插入图片描述
  • 动画结束状态
    在这里插入图片描述
  • 注释掉animation-fill-mode: forwards; /* 动画结束时元素保持最终状态 */,也就是默认其况下的运行完后的状态。
    ~~在这里插入图片描述~~

3.动画开始前元素第一关键帧状态,源码6-2

在源码3的小盒子部分上添加
animation-fill-mode: backwards;动画开始前应用第一帧的状态,结束后回到初始状态
小盒子等2s后才开始动画,在这2s的等待期,小盒子显示为第一关键帧的状态,一开始关键帧为透明。源码3的效果,小盒子在2s这期间都是整个显示,并没有透明效果。使用backwards属性,那么盒子在动画前的等待期也就是这2s内显示的是第一关键帧的状态,也就是透明的状态。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 设置动画效果的基本样式 *//* 定义.box-max类,为较大盒子设置样式和动画 */.box-max {width: 200px;                      /* 盒子宽度设置为200像素 */height: 200px;                     /* 盒子高度设置为200像素 */background-color: aqua;            /* 盒子背景颜色设置为水蓝色 */animation-name: box3-1;            /* 应用名为box3-1的动画 */animation-duration: 4s;            /* 动画持续时间设置为4秒 */animation-timing-function: linear; /* 动画速度函数设置为线性,速度恒定 */animation-fill-mode: forwards;     /* 动画结束后保持最后一帧的状态 */}/* 定义.box-min类,为较小盒子设置样式和动画 */.box-min {width: 150px;                      /* 盒子宽度设置为150像素 */height: 150px;                     /* 盒子高度设置为150像素 */background-color: yellowgreen;     /* 盒子背景颜色设置为黄绿色 */animation-name: box3-2;            /* 应用名为box3-2的动画 */animation-duration: 4s;            /* 动画持续时间设置为4秒 */animation-timing-function: linear; /* 动画速度函数设置为线性 */animation-delay: 2s;               /* 动画延迟2秒开始 */animation-fill-mode: backwards;    /* 动画开始前应用第一帧的状态,结束后回到初始状态 */}/* 动画box3-1关键帧定义 */@keyframes box3-1 {0% { opacity: 0; } /* 动画开始时盒子完全透明 */100% { opacity: 1; } /* 动画结束时盒子完全不透明 */}/* 动画box3-2关键帧定义 */@keyframes box3-2 {0% { opacity: 0; } /* 动画开始时盒子完全透明 */100% { opacity: 1; } /* 动画结束时盒子完全不透明 */}</style>
</head>
<body><div class="box-max">我是一个盒子,名称为box3-1,我会逐渐变不透明。</div><div class="box-min">我也是一个盒子,名称为box3-2,我也会逐渐变不透明。</div>
</body>
</html>

4.源码6-2运行效果

(1)、视频效果

动画前等待期小盒子第一帧透明状态,源码6-2

(2)、截图效果
  • 前段截图
    在这里插入图片描述

  • 中段截图
    在这里插入图片描述

  • 后段截图
    在这里插入图片描述

(八)、animation-play-state(播放状态)属性

state(状态)。animation-play-state用于控制动画的播放状态。在动画过程中我们可以暂停动画,也可以暂停后继续运行。值主要有两个。即runningpaused。当running时,动画正常播放。当paused时,动画则停在当前帧。

1.动画暂停或继续,源码7

我们在源码5的基础上添加鼠标悬停:hover效果,当鼠标碰到图片时使得animation-play-state变为paused暂停动画,当鼠标移开时动画又继续。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Animation 动画效果</title><style>/* 设置动画效果的基本样式 */.box-max {width: 100px;                  /* 盒子宽度设置为100像素 */height: 100px;                 /* 盒子高度设置为100像素 */background-image: url('./小蜗牛.jpg'); /* 设置背景图片,确保文件路径和文件名正确 */background-size: cover;        /* 背景图片完全覆盖元素,不留空白 */border-radius: 50%;            /* 设置边框为圆形 */position: relative;            /* 设置为相对定位以使用left和transform属性 */animation-name: box4;          /* 引用定义的关键帧动画名称 */animation-duration: 4s;        /* 动画持续时间为4秒 */animation-timing-function: linear; /* 设置动画速度函数为线性 */animation-iteration-count: infinite; /* 动画无限重复播放 */animation-direction: alternate; /* 动画每次完成后反向播放 */animation-play-state: running; /* 默认动画状态为运行 */}.box-max:hover {animation-play-state: paused; /* 鼠标悬停时暂停动画 */}/* 定义动画关键帧 */@keyframes box4 {from {left: 0; /* 动画开始时,元素从容器的最左端开始 */transform: rotate(0deg); /* 开始时无旋转 */}to {left: calc(100% - 100px); /* 动画结束时,元素移动到右侧,留下元素宽度的空间 */transform: rotate(360deg); /* 结束时元素完成一圈(360度)旋转 */}}</style>
</head>
<body><div class="box-max"></div> <!-- 动画作用的元素,显示为一个旋转并左右移动的圆形 -->
</body>
</html>

2.源码7运行效果

(1)、视频效果

鼠标悬停动画暂停,源码7

(2)、截图效果
  • 当鼠标未悬停到圆图片上时,它不断来回滚动
    在这里插入图片描述
  • 当鼠标悬停到图片上时图片停止来回滚动(截图时鼠标消失了,图片中鼠标未显示)。
    在这里插入图片描述

三、结语

动画效果还是很有意思的,增强了网页窗口的交互性。动画效果的简单使用和transition(过渡)的使用方法比较相似。都有设置持续时间和时间段的速度及是否延迟的效果。关于动画播放状态的效果,即开始还是暂停也可以结合js来呈现,后面便慢慢添加相关的知识内容吧。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

四、定位日期

2024.5.6;
18:53;

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

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

相关文章

Redis线程模型

文章目录 &#x1f496; Redis 单线程模型⭐ 单线程监听大量的客户端连接⭐ Redis 6.0 之前为什么不用多线程&#xff1f; &#x1f496; Redis多线程⭐ Redis 后台线程⭐ Redis 网络IO多线程 对于读写命令来说&#xff0c;Redis 一直是单线程模型。不过&#xff0c;在 Redis 4…

SinoDB数据库的RAW TABLE

RAW表是不记录日志的永久表&#xff0c;类似于无日志模式数据库中的表。对于RAW表&#xff0c;支持对其进行更新、插入和删除操作&#xff0c;但日志是不会记录这些操作。可以在RAW表上定义索引&#xff0c;但不能在RAW表上定义唯一约束、主键约束或引用约束&#xff08;refere…

语音识别之特征提取与起始检测

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

关闭前端统一请求库设计与落地

前言 对于一个前端工程师而言&#xff0c;每天都在面对的较多的需求场景就是调用后端的接口&#xff0c;但是因为众所周知的原因&#xff0c;前端目前已经有无数种调用接口的方式&#xff0c;例如&#xff1a;之前有基于 XHR、Axios、Fetch 进行封装的工具&#xff0c;大家都试…

2-qt之信号与槽-简单实例讲解

前言、因实践课程讲解需求&#xff0c;简单介绍下qt的信号与槽。 一、了解信号与槽 怎样使用信号与槽&#xff1f; 概览 还记得 X-Window 上老旧的回调函数系统吗&#xff1f;通常它不是类型安全的并且很复杂。&#xff08;使用&#xff09;它&#xff08;会&#xff09;有很多…

prometheus+grafana的安装与部署及优点

一、Prometheus 的优点 1、非常少的外部依赖&#xff0c;安装使用超简单&#xff1b; 2、已经有非常多的系统集成 例如&#xff1a;docker HAProxy Nginx JMX等等&#xff1b; 3、服务自动化发现&#xff1b; 4、直接集成到代码&#xff1b; 5、设计思想是按照分布式、微服…

YashanDB与帆软信创商业智能软件完成兼容互认证

近日&#xff0c;深圳计算科学研究院崖山数据库系统YashanDB与帆软信创商业智能软件&#xff08;V6.0&#xff09;顺利完成兼容性互认证&#xff0c;经严格测试&#xff0c;双方产品能够相互兼容&#xff0c;稳定运行。 崖山数据库系统YashanDB是深圳计算科学研究院自主研发设计…

构建第一个ArkTS应用之@LocalStorage:页面级UI状态存储

LocalStorage是页面级的UI状态存储&#xff0c;通过Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内&#xff0c;在页面间共享状态。 本文仅介绍LocalStorage使用场景和相关的装饰器&#xff1a;LocalStorageProp和LocalS…

[开发|安卓] Android Studio 开发环境配置

Android Studio下载 Android Studio下载地址 下载SDK依赖 1.点击左上角菜单 2.选择工具 3.打开SDK管理中心 4.下载项目目标Android版本的SDK 配置安卓虚拟机 1.打开右上角的设备管理 2.选择合适的手机规格 3.下载并选择项目目标Android系统 4.点击完成配置 …

国内如何下载TikTOK,手机刷机教程

最近很多玩家都来问怎么刷机&#xff1f;手机环境怎么搭建&#xff1f;这里给大家整理了苹果IOS刷机教程 1.iOS下载教程 &#xff1a; 步骤一&#xff1a;手机调试 苹果手机系统配置推荐&#xff1a;iPhone6S以上&#xff0c;16G。 注意&#xff1a;如果是选择购入二手手机…

指针进阶(三)

嘿嘿,uu们,今天呢我们来剖析指针进阶的剩下部分,好啦,废话不多讲,开干! 1:回调函数 概念:回调函数是指一个通过函数指针调用的函数,如果将函数的地址作为参数传递给另外一个函数,当这个指针被用来调用所指向的函数时,那么这个被调用的函数就是回调函数.回调函数不是由该函数的…

2024年中国AI大模型产业发展报告,洞见下一个智能时代!

人民网财经研究院、至顶科技联合发布的《开启智能新时代&#xff1a;2024年中国AI大模型产业发展报告》,全面梳理了我国AI大模型产业的发展背景、现状、应用案例、面临的挑战以及未来趋势。报告指出,AI大模型是全球科技竞争的新高地、未来产业的新赛道、经济发展的新引擎,在我国…

如何高效封装App?小猪APP分发平台一站式解决方案

在移动应用开发领域&#xff0c;App封装&#xff08;App Packaging&#xff09;是一个至关重要的环节&#xff0c;它不仅关乎应用的安全性&#xff0c;还直接影响到最终用户体验和市场推广策略。本文旨在通过实战指南&#xff0c;揭示如何高效完成App封装&#xff0c;并介绍如何…

微信报名活动链接怎么做

在数字营销日新月异的今天&#xff0c;微信作为拥有数亿用户的社交平台&#xff0c;早已成为品牌宣传的重要阵地。而微信报名活动链接&#xff0c;更是品牌吸引用户参与、提升活动影响力的关键工具。今天&#xff0c;就让我们一起探讨如何制作一个引人入胜的微信报名活动链接&a…

信创 | 2023年中国信创产业深度研究报告(完整版)

信创产业研究报告 免责声明&#xff1a;本文资料来源于“第一新声”&#xff0c;版权归原作者所有。如涉及作品版权问题&#xff0c;请与我们联系&#xff0c;我们将在第一时间协商版权问题或删除内容&#xff01; 获取文中相关的PPT资料&#xff0c;请关注文末公众号“程序员…

【JVM】内存结构

内存结构 Java 虚拟机定义了若干种程序运行期间会使用到的运行时数据区&#xff0c;其中有一些会随着虚拟机启动而创建&#xff0c;随着虚拟机退出而销毁。另外一些则是与线程一一对应的&#xff0c;这些与线程一一对应的数据区域会随着线程开始和结束而创建和销毁。 线程私有…

Baidu Comate 智能编码助手:编程新伙伴,效率新飞跃

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 一、Baidu Comate智能编码助手简介…

STL——deque

双端队列&#xff0c;可以对头端进行插入删除操作 记录一个常遇到的问题 deque subscript out of range 使用了还未定义的空间&#xff0c;大概率是没有初始化就使用了下标或者其他方式进行数据访问。 与vector区别 内部实现方式&#xff1a;deque采用了分段连续存储的方式&…

Java代码基础算法练习-年龄问题-2024.05.07

数学家维纳智力早熟&#xff0c;11岁就上了大学。一次&#xff0c;他参加某个重要会议&#xff0c;年轻的脸孔引人注目。于是有人询问他的年龄&#xff0c;他回答说&#xff1a;“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10 个数字正好包含了从0到9这10个数字&#…