CSS3设计动画样式

CSS3动画包括过渡动画和关键帧动画,它们主要通过改变CSS属性值来模拟实现。我将详细介绍Transform、Transitions和Animations 3大功能模块,其中Transform实现对网页对象的变形操作,Transitions实现CSS属性过渡变化,Animations实现CSS样式分步式演示效果。

1、CSS3变形

2012年9月,W3C发布CSS3变形工作草案。这个草案包括CSS3 2D变形和CSS3 3D变形。CSS 2D Transform获得各主流浏览器的支持,CSS 3D Transform支持程度不是很完善。本节重点讲解2D变形,有关3D变形可以参考我的其它帖子。

1.1、设置原点

CSS变形的原点默认为对象的中心点(50% 50%),使用transform-origin属性可以重新设置新的变形原点。语法格式如下所示:

    transform-origin:[ <percentage> | <length> | left | center① | right ] [ <percentage> | <length> | top | center② | bottom ]?

取值简单说明如下:

  • <percentage>:用百分比指定坐标值,可以为负值。
  • <length>:用长度值指定坐标值,可以为负值。
  • left:指定原点的横坐标为left。
  • center①:指定原点的横坐标为center。
  • right:指定原点的横坐标为right。
  • top:指定原点的纵坐标为top。
  • center②:指定原点的纵坐标为center。
  • bottom:指定原点的纵坐标为bottom。

【示例】通过重置变形原点,可以设计不同的变形效果。以图像的右上角为原点逆时针旋转图像45度:

    <style type="text/css">img {                                    /* 固定两幅图像相同大小和相同显示位置 */position: absolute;left: 20px;top: 10px;width: 170px;width: 250px;}img.bg {                                 /* 设置第1幅图像作为参考 */opacity: 0.3;border: dashed 1px red;}img.change {                             /* 变形第2幅图像 */border: solid 1px red;transform-origin: top right;         /* 以右上角为原点进行变形*/transform: rotate(-45deg);           /* 逆时针旋转45度*/}</style><img class="bg" src="images/1.jpg"><img class="change" src="images/1.jpg">

比较效果如下图所示:
在这里插入图片描述

1.2、2D旋转

rotate()函数能够在2D空间内旋转对象,语法格式如下:

    rotate(<angle>)

其中,参数angle表示角度值,取值单位可以是:度,如90deg(90度,一圈360度);梯度,如100 grad(相当于90度,360度等于400 grad);弧度,如1.57 rad(约等于90度,360度等于2π);圈,如0.25 turn(等于90度,360度等于1 turn)。

【示例】以上节示例为基础,按默认原点逆时针旋转图像45度:

    img.change {border: solid 1px red;transform: rotate(-45deg);}

效果如下图所示:
在这里插入图片描述

1.3、2D缩放

scale()函数能够缩放对象大小,语法格式如下:

    scale(<number>[, <number>])

该函数包含两个参数值,分别用来定义宽和高的缩放比例。取值简单说明如下:

  • 如果取值为正数,则基于指定的宽度和高度将放大或缩小对象。
  • 如果取值为负数,则不会缩小元素,而是翻转元素(如文字被反转),然后再缩放元素。
  • 如果取值为小于1的小数(如0.5)可以缩小元素。
  • 如果第二个参数省略,则第二个参数等于第一个参数值。

【示例】继续以上节示例为基础,按默认原点把图像缩小1/2:

    img.change {border: solid 1px red;transform: scale(0.5);}

在这里插入图片描述

1.4、2D平移

translate()函数能够平移对象的位置,语法格式如下:

    translate(<translation-value>[, <translation-value>])

该函数包含两个参数值,分别用来定义对象在x轴和y轴相对于原点的偏移距离。如果省略参数,则默认值为0。如果取负值,则表示反向偏移,参考原点保持不变。

【示例】设计向右下角方向平移图像,其中x轴偏移150px,y轴偏移50px:

    img.change {border: solid 1px red;transform: translate(150px, 50px);}

在这里插入图片描述

1.5、2D倾斜

skew()函数能够倾斜显示对象,语法格式如下:

    skew(<angle> [, <angle>])

该函数包含两个参数值,分别用来定义对象在x轴和y轴倾斜的角度。如果省略参数,则默认值为0。与rotate()函数不同,rotate()函数只是旋转对象的角度,而不会改变对象的形状;skew()函数会改变对象的形状。

【示例】使用skew()函数变形图像,x轴倾斜30度,y轴倾斜20度:

    img.change {border: solid 1px red;transform: skew(30deg, 20deg);}

效果如下图所示:
在这里插入图片描述

1.6、2D矩阵

matrix()是一个矩阵函数,它可以同时实现缩放、旋转、平移和倾斜操作,语法格式如下:

    matrix(<number>, <number>, <number>, <number>, <number>, <number>)

该函数包含6个值,具体说明如下:

  • 第1个参数控制x轴缩放。
  • 第2个参数控制x轴倾斜。
  • 第3个参数控制y轴倾斜。
  • 第4个参数控制y轴缩放。
  • 第5个参数控制x轴平移。
  • 第6个参数控制y轴平移。

【示例】使用matrix()函数模拟:

    img.change {border: solid 1px red;transform: matrix(1, 0.6, 0.2, 1, 0, 0);}

提示:多个变形函数可以在一个声明中同时定义。例如:

    div {transform: translate(80, 80);transform: rotate(45deg);transform: scale(1.5, 1.5);}

针对上面样式,可以简化为:

    div { transform: translate(80, 80) rotate(45deg) scale(1.5, 1.5);}

在这里插入图片描述

2、过渡动画

2013年2月,W3C发布CSS Transitions工作草案,这个草案描述了CSS过渡动画的基本实现方法和属性,目前获得所有浏览器的支持。

2.1、设置过渡属性

transition-property属性定义过渡动画的CSS属性名称,基本语法如下所示:

    transition-property:none | all | [ <IDENT> ] [ ‘,’ <IDENT> ]*;

取值简单说明如下:

  • none:表示没有元素。
  • all:默认值,表示针对所有元素,包括:before和:after伪元素。
  • IDENT:指定CSS属性列表。几乎所有色彩、大小或位置等相关的CSS属性,包括许多新添加的CSS3属性都可以应用过渡,如CSS3变换中的放大、缩小、旋转、斜切、渐变等。

【示例】指定动画的属性为背景颜色。这样当鼠标经过盒子时,会自动从红色背景过渡到蓝色背景:

    <style type="text/css">div {margin: 10px auto; height: 80px;background: red;border-radius: 12px;box-shadow: 2px 2px 2px #999;}div:hover {background-color: blue;/*指定动画过渡的CSS属性*/transition-property: background-color;}</style><div></div>

在这里插入图片描述

2.2、设置过渡时间

transition-duration属性定义转换动画的时间长度,基本语法如下所示:

    transition-duration:<time> [, <time>]*;

其中,初始值为0,适用于所有元素,以及:before和:after伪元素。在默认情况下,动画过渡时间为0 s,当指定元素动画时,会看不到过渡的过程,而直接看到结果。

【示例】以上节示例为例,设置动画过渡时间为2 s,当鼠标移过对象时,会看到背景色从红色逐渐过渡到蓝色:

    div:hover {background-color: blue;/*指定动画过渡的CSS属性*/transition-property: background-color;/*指定动画过渡的时间*/transition-duration:2s;}

在这里插入图片描述

2.3、设置延迟过渡时间

transition-delay属性定义开启过渡动画的延迟时间,基本语法如下所示:

    transition-delay:<time> [, <time>]*;

其中,初始值为0,适用于所有元素,以及:before和:after伪元素。设置时间可以为正整数、负整数和零。非零的时候必须设置单位是s(秒)或者ms(毫秒);为负数的时候,过渡的动作会从该时间点开始显示,之前的动作被截断;为正数的时候,过渡的动作会延迟触发。

【示例】继续以上节示例为基础进行介绍,设置过渡动画推迟2s后执行,则当鼠标移过对象时,会看不到任何变化,过了2 s之后,才发现背景色从红色逐渐过渡到蓝色。

    div:hover {background-color: blue;/*指定动画过渡的CSS属性*/transition-property: background-color;/*指定动画过渡的时间*/transition-duration: 2s;/*指定动画延迟触发 */transition-delay: 2s;}

2.4、设置过渡动画类型

transition-timing-function属性定义过渡动画的类型,基本语法如下所示:

    transition-timing-function:ease | linear | ease-in | ease-out | ease-in-out | cubicbezier(<number>, <number>, <number>, <number>)
[, ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>,<number>, <number>)]*

属性初始值为ease,取值简单说明如下:

  • ease:平滑过渡,等同于cubic-bezier(0.25, 0.1, 0.25, 1.0)函数,即立方贝塞尔。
  • linear:线性过渡,等同于cubic-bezier(0.0, 0.0, 1.0, 1.0)函数。
  • ease-in:由慢到快,等同于cubic-bezier(0.42, 0, 1.0, 1.0)函数。
  • ease-out:由快到慢,等同于cubic-bezier(0, 0, 0.58, 1.0)函数。
  • ease-in-out:由慢到快再到慢,等同于cubic-bezier(0.42,0, 0.58, 1.0)函数。
  • cubic-bezier:特殊的立方贝塞尔曲线效果。

【示例】继续以上节示例为基础进行介绍,设置过渡类型为线性效果,代码如下所示:

    div:hover {background-color: blue;/*指定动画过渡的CSS属性*/transition-property: background-color;/*指定动画过渡的时间*/transition-duration: 10s;/*指定动画过渡为线性效果 */transition-timing-function: linear;}

2.5、设置过渡触发动作

CSS3过渡动画一般通过动态伪类触发,如下表所示:
在这里插入图片描述
也可以通过JavaScript事件触发,包括click、focus、mousemove、mouseover、mouseout等。

1、:hover

最常用的过渡触发方式是使用:hover伪类。

【示例1】设计当鼠标经过div元素时,该元素的背景颜色会在经过1 s的初始延迟后,于2 s内动态地从绿色变为蓝色。

    <style type="text/css">div {margin: 10px auto;height: 80px;border-radius: 12px;box-shadow: 2px 2px 2px #999;background-color: red;transition: background-color 2s ease-in 1s;}div:hover { background-color: blue}</style><div></div>

2、:active

:active伪类表示用户单击某个元素并按住鼠标按钮时显示的状态。

【示例2】设计当用户单击div元素时,该元素被激活,这时会触发动画,高度属性从200px过渡到400px。如果按住该元素,保持活动状态,则div元素始终显示400px高度,松开鼠标之后,又会恢复到原来的高度:

    <style type="text/css">div {margin: 10px auto;border-radius: 12px;box-shadow: 2px 2px 2px #999;background-color: #8AF435;height: 200px;transition: width 2s ease-in;}div:active {height: 400px;}</style><div></div>

在这里插入图片描述

3、: focus

:focus伪类通常会在表单对象接收键盘响应时出现。

【示例3】当输入框获取焦点时,输入框的背景色逐步高亮显示,如下图所示:

    <style type="text/css">label {display: block;margin: 6px 2px;}input[type="text"], input[type="password"] {padding: 4px;border: solid 1px #ddd;transition: background-color 1s ease-in;}input:focus { background-color: #9FFC54;}</style><form id=fm-form action="" method=post><fieldset><legend>用户登录</legend><label for="name">姓名<input type="text" id="name" name="name" ></label><label for="pass">密码<input type="password" id="pass" name="pass" ></label></fieldset></form>

在这里插入图片描述
提示:把:hover伪类与:focus配合使用,能够丰富鼠标用户和键盘用户的体验。

4、:checked

:checked伪类在发生选中状况时触发过渡,取消选中则恢复原来的状态。

【示例4】设计当复选框被选中时缓慢缩进2个字符:

    <style type="text/css">label.name {display: block;margin: 6px 2px;}input[type="text"], input[type="password"] {padding: 4px;border: solid 1px #ddd;}input[type="checkbox"] { transition: margin 1s ease;}input[type="checkbox"]:checked { margin-left: 2em;}</style><form id=fm-form action="" method=post><fieldset><legend>用户登录</legend><label class="name" for="name">姓名<input type="text" id="name" name="name" ></label><p>技术专长<br><label><input type="checkbox" name="web" value="html" id="web_0">HTML</label><br><label><input type="checkbox" name="web" value="css" id="web_1">CSS</label><br><label><input type="checkbox" name="web" value="javascript" id="web_2">JavaScript</label><br></p></fieldset></form>

演示效果:
在这里插入图片描述

5、媒体查询

触发元素状态变化的另一种方法是使用CSS3媒体查询。

【示例5】设计div元素的宽度和高度为49%×200px,如果用户将窗口大小调整到420px或以下,则该元素将过渡为100%×100px。也就是说,当窗口宽度变化经过420px的阈值时,将会触发过渡动画:

    <style type="text/css">div {float: left; margin: 2px;width: 49%; height: 200px;background: #93FB40;border-radius: 12px;box-shadow: 2px 2px 2px #999;transition: width 1s ease, height 1s ease;}@media only screen and (max-width : 420px) {div {width: 100%;height: 100px;}}</style><div></div><div></div>

在这里插入图片描述

6、JavaScript事件

【示例6】可以使用纯粹的CSS伪类触发过渡,为了方便用户理解,这里通过jQuery脚本触发过渡:

    <script type="text/javascript" src="images/jquery-1.10.2.js"></script><script type="text/javascript">$(function() {$("#button").click(function() {$(".box").toggleClass("change");});});</script><style type="text/css">.box {margin:4px;background: #93FB40;border-radius: 12px;box-shadow: 2px 2px 2px #999;width: 50%; height: 100px;transition: width 2s ease, height 2s ease;}.change { width: 100%; height: 120px;}</style><input type="button" id="button" value="触发过渡动画" /><div class="box"></div>

在文档中包含一个box类的盒子和一个按钮,当单击按钮时,jQuery脚本会将盒子的类切换为change,从而触发过渡动画:
在这里插入图片描述
上面演示了样式发生变化会导致过渡动画,也可以通过其他方法触发这些更改,包括通过JavaScript脚本动态更改。从执行效率来看,事件通常应当通过JavaScript触发,简单动画或过渡则应使用CSS触发。

3、帧动画

2012年4月,W3C发布CSS Animations工作草案,在这个草案中描述了CSS关键帧动画的基本实现方法和属性。目前主流浏览器都支持CSS帧动画。

3.1、设置关键帧

CSS3使用@keyframes定义关键帧,具体用法如下所示:

    @keyframes animationname {keyframes-selector {css-styles;}}

其中参数说明如下:

  • animationname:定义动画的名称。
  • keyframes-selector:定义帧的时间位置,也就是动画时长的百分比,合法的值包括:0~100%、from(等价于0)、to(等价于100%)。
  • css-styles:表示一个或多个合法的CSS样式属性。

在动画设计过程中,用户能够多次改变CSS样式,以百分比定义样式改变发生的时间,或者通过关键词from和to。为了获得最佳浏览器支持,设计关键帧动画时,应该始终定义0和100%位置帧。最后,为每帧定义动态样式,同时将动画与选择器绑定。

【示例】演示让一个小方盒沿着方形框内壁匀速运动:

    <style>#wrap {                                    /* 定义运动轨迹包含框*/position:relative;                     /* 定义定位包含框,避免小盒子跑到外面运动*/border:solid 1px red;width:250px; height:250px;}#box {                                     /* 定义运动小盒的样式*/position:absolute;left:0; top:0;width: 50px; height: 50px;background: #93FB40;border-radius: 8px;box-shadow: 2px 2px 2px #999;/*定义帧动画:名称为ball,动画时长5s,动画类型为匀速渐变,动画无限播放*/animation: ball 5s linear infinite;}/*定义关键帧:共包括5帧,分别在总时长为0、25%、50%、75%、100%的位置*//*每帧中设置动画属性为left和top,让它们的值匀速渐变,产生运动动画*/@keyframes ball {0 {left:0;top:0;}25% {left:200px;top:0;}50% {left:200px;top:200px;}75% {left:0;top:200px;}100% {left:0;top:0;}}</style><div id="wrap"><div id="box"></div></div>

在这里插入图片描述

3.2、设置动画属性

Animations功能与Transition功能相同,都是通过改变元素的属性值实现动画效果。它们的区别在于:使用Transitions功能时只能通过指定属性的开始值与结束值,然后以在这两个属性值之间进行平滑过渡的方式实现动画效果,因此不能实现比较复杂的动画效果;而Animations功能则通过定义多个关键帧以及定义每个关键帧中元素的属性值实现更为复杂的动画效果。

1.定义动画名称

使用animation-name属性可以定义CSS动画的名称,语法如下所示:

    animation-name:none | IDENT [, none | IDENT ]*;

其中,初始值为none,定义一个适用的动画列表。每个名字用来选择动画关键帧,提供动画的属性值。如名称是none,就不会有动画。

2.定义动画时间

使用animation-duration属性可以定义CSS动画的播放时间,语法如下所示。

    animation-duration:<time> [, <time>]*;

在默认情况下,该属性值为0,这意味着动画周期为0,即不会有动画。当值为负值时,则被视为0。

3.定义动画类型

使用animation-timing-function属性可以定义CSS动画类型,语法如下所示。

    animation-timing-function:ease | linear | ease-in | ease-out | ease-in-out | cubicbezier(<number>, <number>, number>, <number>) [,
ease | linear |ease-in | ease-out | ease-in-out | cubic-bezier(<number>, <number>,<number>, <number>)]*

初始值为ease,取值说明可参考上面介绍的过渡动画类型。

4.定义延迟时间

使用animation-delay属性可以定义CSS动画延迟播放的时间,语法如下所示:

    animation-delay:<time> [, <time>]*;

该属性允许一个动画开始执行一段时间后才被应用。当动画延迟时间为0,即默认动画延迟时间,则意味着动画将尽快执行,否则该值指定将延迟执行的时间。

5.定义播放次数

使用animation-delay属性可以定义CSS动画延迟播放的时间,语法如下所示:

    animation-delay:<time> [, <time>]*;

该属性允许一个动画开始执行一段时间后才被应用。当动画延迟时间为0,即默认动画延迟时间,则意味着动画将尽快执行,否则该值指定将延迟执行的时间。

6.定义播放方向

使用animation-direction属性定义CSS动画的播放方向,基本语法如下所示。

    animation-direction:normal | alternate [, normal | alternate]*;

默认值为normal。当为默认值时,动画的每次循环都向前播放。另一个值是alternate,设置该值则表示第偶数次向前播放,第奇数次向反方向播放。

7.定义播放状态

使用animation-play-state属性定义动画正在运行还是暂停,语法如下所示:

    animation-play-state: paused|running;

初始值为running。其中,paused定义动画已暂停,running定义动画正在播放。

提示:可以在JavaScript中使用该属性,这样就能在播放过程中暂停动画。在JavaScript脚本中用法如下。

8.定义播放外状态

使用animation-fill-mode属性定义动画播放外状态,语法如下所示。

    animation-fill-mode:none | forwards | backwards | both [ , none | forwards | backwards | both ]*

初始值为none,如果提供多个属性值,以逗号进行分隔。取值说明如下:

  • none:不设置对象动画之外的状态。
  • forwards:设置对象状态为动画结束时的状态。
  • backwards:设置对象状态为动画开始时的状态。
  • both:设置对象状态为动画结束或开始的状态。

【示例】设计一个小球,并定义它水平向左运动,动画结束之后,再返回起始点位置:

    <style>/*启动运动的小球,并定义动画结束后返回*/.ball{width: 50px; height: 50px;background: #93FB40;border-radius: 100%;box-shadow:2px 2px 2px #999;animation:ball 1s ease backwards;}/*定义小球水平运动关键帧*/@keyframes ball{0%{transform:translate(0,0);}100%{transform:translate(400px);}}</style><div class="ball"></div>

效果如下图所示:
在这里插入图片描述

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

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

相关文章

ChatGPT 实际上是如何工作的?

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; ChatGPT 操作的两个主要阶段 我们再用谷歌来打个比方。当你要求谷歌查找某些内容时&#xff0c;你可能知道它不会——在你提出要求的那一刻——出去搜索整个网络来寻找答案。相反&#xff0c;谷歌会在其数…

网络编程套接字(二)

目录 简单的TCP网络程序服务端创建套接字服务端绑定服务端监听服务端获取连接服务端处理请求单执行流服务器的弊端 多进程版TCP网络程序捕捉SIGCHLD信号让孙子进程提供服务多线程版的TCP网络程序客户端创建套接字客户端链接服务器客户端发起请求 线程池版的TCP网络程序 简单的T…

IntelliJ IDEA 2023 最新版如何试用?IntelliJ IDEA 2023最新版试用方法及验证ja-netfilter配置成功提示

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Rocky9 上安装 redis-dump 和redis-load 命令

一、安装依赖环境 1、依赖包 dnf -y install perl gcc gcc-c zlib-devel2、编译openssl 1.X ### 下载编译 wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar xf openssl-1.1.1t.tar.gz cd openssl-1.1.1t ./config --prefix/usr/local/openssl make make ins…

Ubuntu重启后进入initramfs导致无法开机解决方案

今天&#xff0c;我的电脑意外关机&#xff0c;重新开机后打开了虚拟机。该虚拟机使用的是 Ubuntu 22.04 系统。但重启后&#xff0c;系统一直显示(initramfs):&#xff0c;导致无法正常启动。最后&#xff0c;在网上查找了一些解决方案&#xff0c;成功解决了这个开机问题。在…

Java配置47-Spring Eureka 未授权访问漏洞修复

文章目录 1. 背景2. 方法2.1 Eureka Server 添加安全组件2.2 Eureka Server 添加参数2.3 重启 Eureka Server2.4 Eureka Server 升级版本2.5 Eureka Client 配置2.6 Eureka Server 添加代码2.7 其他问题 1. 背景 项目组使用的 Spring Boot 比较老&#xff0c;是 1.5.4.RELEASE…

Minium:专业的小程序自动化工具

小程序架构上分为渲染层和逻辑层&#xff0c;尽管各平台的运行环境十分相似&#xff0c;但是还是有些许的区别&#xff08;如下图&#xff09;&#xff0c;比如说JavaScript 语法和 API 支持不一致&#xff0c;WXSS 渲染表现也有不同&#xff0c;所以不论是手工测试&#xff0c…

腾讯云双十一云服务器活动:88元1年的云服务器难道不香吗?

腾讯云双十一活动中&#xff0c;有三款轻量应用服务器可享受特惠优惠。这三款服务器分别是2核2G、2核4G和4核8G&#xff0c;价格分别为88元/年、166.6元/年和529元/15个月。对于需要低成本而又高性能的服务器需求&#xff0c;轻量应用服务器是一个理想的选择。 轻量应用服务器特…

【错误解决方案】matplotlib绘图中文标签不显示

1. 错误提示 Matplotlib 中文标签不显示的问题通常是由于中文字符在图形中的编码问题导致的。例如&#xff1a; import numpy import matplotlib.pyplot as pltz numpy.arange(-5, 5, .1) sigma_fn numpy.vectorize(lambda z: 1/(1numpy.exp(-z))) sigma sigma_fn(z)fig …

中国等28个国家发布《布莱切利宣言》,鼓励AI以安全方式发展

英国时间11月1日&#xff0c;中国、美国、英国、法国、德国等28个国家和欧盟&#xff0c;在英国的布莱切利庄园签署了&#xff0c;首个全球性人工智能&#xff08;AI&#xff09;声明——《布莱切利宣言》。 该宣言明确指出了AI对人类社会的巨大机遇&#xff0c;但AI需要以人为…

【C语法学习】11 - fprintf()函数

文章目录 1 函数原型2 参数3 返回值4 比较5 示例 1 函数原型 fprintf()&#xff1a;将格式化输出发送至指定流stream&#xff0c;函数原型如下&#xff1a; int fprintf(FILE *stream, const char *format, ...)2 参数 fprintf()函数参数包括三部分&#xff1a; 参数stream…

【数据结构】归并排序 的递归实现与非递归实现

归并排序 前言一、归并排序递归实现&#xff08;1&#xff09;归并排序的核心思路&#xff08;2&#xff09;归并排序实现的核心步骤&#xff08;3&#xff09;归并排序码源详解&#xff08;4&#xff09;归并排序效率分析1&#xff09;时间复杂度 O&#xff08;N*logN&#xf…

分享一个自己写的免费的微信聊天记录提取软件 2023.11.03

有什么办法可以导出与某个人的微信聊天记录&#xff1f; 只想导出与某个微信好友的聊天记录&#xff0c;有办法做到吗&#xff1f;导出所有的话&#xff0c;文件太大了&#xff0c;只想导出与其中一个人的&#xff0c;求大神教。 我的需求和上面这个人的比较类似&#xff0c;因…

JMM讲解

一&#xff1a;为什么要有JMM&#xff0c;它为什么出现&#xff1f; CPU的运行并不是直接操作内存而是先把内存里面的数据读到缓存&#xff0c;而内存的读和写操作的时候会造成不一致的问题。JVM规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异&…

基于深度学习的目标检测算法 计算机竞赛

文章目录 1 简介2 目标检测概念3 目标分类、定位、检测示例4 传统目标检测5 两类目标检测算法5.1 相关研究5.1.1 选择性搜索5.1.2 OverFeat 5.2 基于区域提名的方法5.2.1 R-CNN5.2.2 SPP-net5.2.3 Fast R-CNN 5.3 端到端的方法YOLOSSD 6 人体检测结果7 最后 1 简介 &#x1f5…

公会发展计划(GAP):经过实战考验的 Web3 任务模式

2020 年 12 月&#xff0c;Yield Guild Games 踏上了一段征程&#xff0c;以表彰兢兢业业的 Web3 游戏玩家所付出的时间和努力&#xff0c;同时为他们提供利用自己的技能促进个人成长的机会。这一旅程的第一步是于 2022 年 7 月推出的公会发展计划&#xff08;GAP&#xff09;。…

基于顺序表实现的可存储性通讯录!!!

基于顺序表实现的通讯录 通讯录的基本功能 顺序表顺序表的部分变量修改修改处一修改处二修改处三 头文件 Contact.h通讯录自定义结构体 功能实现 源文件 Contact.c读取文件中联系人的信息 void ContactReadFile(contact* pcon)保存到文件 void ContactSave(contact* pcon) 测试…

高德地图撒点组件

一、引入amap地图库 - public/index.html <script type"text/javascript">window._AMapSecurityConfig {securityJsCode: 地图密钥 }</script><scripttype"text/javascript"src"https://webapi.amap.com/maps?v1.4.8&key111111…

基于单片机的智能鱼缸控制系统的设计与实现

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、开发技术和原理的相关知识2.1开发设计目标2.2 开发设计使用技术和原理2.2.1嵌入式技术2.2.2传感器技术 二、基于单片机的智能鱼缸控制系统的总体设计3.1智能鱼缸控制系统的基本组成3.1.1系统的构成部分3.2需求…

【生物信息学】单细胞RNA测序数据分析:计算亲和力矩阵(基于距离、皮尔逊相关系数)及绘制热图(Heatmap)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. 读取数据集2. 质量控制&#xff08;可选&#xff09;3. 基于距离的亲和力矩阵4. 绘制基因表达的Heatmap5. 基于皮尔逊相关系数的亲和力矩阵6. 代码整合 一、实验介绍 计算亲和力…