Web前端—移动Web第二天(空间转换、动画、综合案例:全名出游)

news2025/1/27 12:28:49

版本说明

当前版本号[20231118]。

版本修改说明
20231118初版

目录

文章目录

  • 版本说明
  • 目录
  • 移动 Web 第二天
    • 01-空间转换
      • 空间转换简介
      • 平移
      • 视距
      • 旋转
      • 左手法则
      • rotate3d-了解
      • 立体呈现
      • 案例-3d导航
      • 缩放
    • 02-动画
      • 动画实现步骤
      • animation复合属性
      • animation拆分写法
      • 案例-走马灯
      • 精灵动画
      • 多组动画
    • 03-综合案例-全名出游
      • 背景
      • 云彩位置和动画
      • 热气球和气泡的动画
      • 文字动画

移动 Web 第二天

01-空间转换

空间转换简介

  • 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。
  • 空间转换也叫 3D转换
  • 属性:transform
  • 而默认效果下,是看不到Z轴的平移效果。

1681723381377

平移

transform: translate3d(x, y, z);
transform: translateX();
transform: translateY();
transform: translateZ();

取值与平面转换相同

默认情况下,Z 轴平移没有效果,原因:电脑屏幕默认是平面,无法显示 Z 轴平移效果

视距

作用:指定了观察者Z=0 平面的距离,为元素添加透视效果

形容:可以看成是人眼与电脑之间的距离

透视效果:近大远小、近实远虚

属性:(添加给直接父级,取值范围 800-1200)

perspective: 视距;

1681723504103

1、增加一个透视效果。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>透视效果</title>
		<style>
			.son{
				width: 200px;
				height: 200px;
				margin: 100px auto;
				background-color: pink;
				transition: all 0.5s;
			}
			
			.son:hover{
				transform: translateZ(-200px);
			}
		</style>
	</head>
	<body>
		<div class="father">
			<div class="son"></div>
		</div>
	</body>
</html>

image-20231117151117988

2、给1000px视距,形成一种透视的效果。

.father{
				perspective: 1000px;
			}

image-20231117151217083

旋转

  • Z 轴:rotateZ()

    跟平面旋转的效果一样。

1681723549616

  • X 轴:rotateX()

1681723568598

  • Y 轴:rotateY()

1681723587974

左手法则

作用:根据旋转方向确定取值正负

使用:左手握住旋转轴, 拇指指向正值方向, 其他四个手指弯曲方向为旋转正值方向

1681723629410

rotate3d-了解

  • rotate3d(x, y, z, 角度度数) :用来设置自定义旋转轴的位置旋转的角度
  • x,y,z 取值为0-1之间的数字

立体呈现

作用:设置元素的子元素是位于 3D 空间中还是平面中

属性名:transform-style

属性值:

  • flat:子级处于平面中
  • preserve-3d:子级处于 3D 空间

1、先建立两个div盒子。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>立体呈现</title>
		<style>
			.cube{
				width: 200px;
				height: 200px;
				margin: 100px auto;
				background-color: pink;
				transition: all 2s;
			}
			
			.cube div{
				width: 200px;
				height: 200px;
			}
			
			.front{
				background-color: orange;
			}
			
			.back{
				background-color: green;
			}
		</style>
	</head>
	<body>
		<div class="cube">
			<div class="front">前面</div>
				<div class="back">后面</div>
		</div>
	</body>
</html>

image-20231117160251803

2、给父元素添加transform-style: preserve-3d; ,并给子、父级定位。

.cube{
				position: relative;
				width: 200px;
				height: 200px;
				margin: 100px auto;
				background-color: pink;
				transition: all 2s;
				
				transform-style: preserve-3d;
			}
			
			.cube div{
				position: absolute;
				left: 0;
				top: 0;
				width: 200px;
				height: 200px;
			}

image-20231117160613868

3、给父级沿Y轴旋转89deg,为了让后面的操作更容易看。

transform: rotateY(89deg);

image-20231117160851520

4、把橙盒子向前移动100像素。

transform: translateZ(100px);

image-20231117161031783

5、把绿盒子向后移动100像素,并把背景颜色删除。

transform: translateZ(-100px);

image-20231117161446408

6、设置鼠标滑动效果,并把之前设置的旋转注释掉。就能看到一个立方体呈现在我们的眼前了。

.cube:hover{
				transform:rotateY(90deg);
			}

image-20231117161912368

案例-3d导航

1681723704637

案例步骤:

  1. 搭建立方体
    1. 绿色是立方体的前面
    2. 橙色是立方体的上面
  2. 鼠标悬停,立方体旋转

1681723746854

1681723827660

.nav li {
  position: relative;
  width: 100px;
  height: 40px;
  line-height: 40px;
  transition: all 0.5s;

  transform-style: preserve-3d;

  /* 为了看到橙色和绿色的移动过程,给立方体添加旋转 */
  /* transform: rotateX(-20deg) rotateY(30deg); */
}

.nav li a {
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  width: 100%;
  height: 100%;
  text-align: center;
  text-decoration: none;
  color: #fff;
}

/* 立方体每个面都有独立的坐标轴,互不影响 */
.nav li a:first-child {
  background-color: green;
  transform: translateZ(20px);
}

.nav li a:last-child {
  background-color: orange;
  transform: rotateX(90deg) translateZ(20px);
}

.nav li:hover {
  transform: rotateX(-90deg);
}

1、初步建立六个a标签。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>3D导航</title>
		<style>
			ul{
				margin: 0;
				padding: 0;
				list-style: none;
			}
			
			.nav{
				width: 300px;
				height: 40px;
				margin: 50px auto;
			}
			
			.nav ul{
				display: flex;
			}
			
			.nav li{
				width: 100px;
				height: 40px;
				line-height: 40px;
				transition: all 0.5s;
			}
			
			.nav li a{
				display: block;
				width: 100%;
				height: 100%;
				text-align: center;
				text-decoration: none;
				color: #fff;
			}
			
			.nav li a:first-child{
				background-color: green;
			}
			
			.nav li a:last-child{
				background-color: orange;
			}
		</style>
	</head>
	<body>
		<div class="nav">
			<ul>
				<li>
					<a href="#">首页</a>
					<a href="#">Index</a>
				</li>
				<li>
					<a href="#">登录</a>
					<a href="#">Login</a>
				</li>
				<li>
					<a href="#">注册</a>
					<a href="#">Register</a>
				</li>
			</ul>
		</div>
	</body>
</html>

image-20231117162909382

2、每个li中的两个a标签各是立方体的两个面,所以li就是立方体,所以先给li标签添加以下内容。

/* 为了更好看移动过程,给立方体加旋转 */
				transform: rotateX(-20deg) rotateY(30deg);
			}

image-20231117163627582

3、接下来以图片的形式介绍以下我们该走的流程。

image-20231117163450332

4、那么开始定位,子绝父相。并定位于左上角。

.nav li{
				position: relative;
				width: 100px;
				height: 40px;
				line-height: 40px;
				transition: all 0.5s;
				transform-style: preserve-3d;
				
				/* 为了更好看移动过程,给立方体加旋转 */
				transform: rotateX(-20deg) rotateY(30deg);
			}
			
			.nav li a{
				position: absolute;
				left: 0;
				top: 0;
				display: block;
				width: 100%;
				height: 100%;
				text-align: center;
				text-decoration: none;
				color: #fff;
			}

image-20231117163902366

5、橙色以x轴进行旋转,达到躺下来的目的。

.nav li a:last-child{
				background-color: orange;
				transform: rotateX(90deg);
			}

image-20231117164122498

6、转完之后,再把橙色向上抬。

transform: rotateX(90deg) translateZ(20px);

image-20231117164313191

7、同时把绿色的移到前面。

.nav li a:first-child{
				background-color: green;
				transform: translateZ(20px);
			}

image-20231117164532193

注:立方体每个面都有独立的坐标轴,互不影响。

8、沿X轴进行翻转。

.nav li:hover{
				transform: rotateX(-90deg);
			}

image-20231117165025870

9、在注销掉之前的转向,就可以实现该案例了。

image-20231117165139789

缩放

transform: scale3d(x, y, z);
transform: scaleX();
transform: scaleY();
transform: scaleZ();

如:在水平方向上缩放元素

transform: scaleX();

image-20231117165544035

在垂直方向上缩放元素

transform: scaleY();

image-20231117165610196

如在三维空间中缩放元素。它将元素的宽度和高度缩小到原来的一半,同时将深度(Z轴)放大两倍。

transform: scale3d(0.5,0.5,2);

image-20231117165801099

image-20231117165813299

02-动画

  • 过渡:实现两个状态间的变化过程
  • 动画:实现多个状态间的变化过程,动画过程可控(重复播放、最终画面、是否暂停)

动画实现步骤

  1. 定义动画

image-20231117170730042

/* 方式一 */
@keyframes 动画名称 {
  from {}
  to {}
}

/* 方式二 */
@keyframes 动画名称 {
  0% {}
  10% {}
  ......
  100% {}
}
  1. 使用动画
animation: 动画名称 动画花费时长;

1、建个盒子用于演示动画。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>体验动画</title>
		<style>
			div{
				width: 100px;
				height: 100px;
				background-color: pink;
			}
			
			@keyframes change {
				0%{
					transform: translate(0);
				}
				
				100%{
					transform: translate(600px);
				}
			}
		</style>
	</head>
	<body>
		<div></div>
	</body>
</html>

image-20231117170353155

2、添加使用动画的代码,就可以看到粉色小方块划过去了。

animation: change 1s;

image-20231117170444466

animation复合属性

1681723979998

提示:

  • 动画名称和动画时长必须赋值
  • 取值不分先后顺序
  • 如果有两个时间值,第个时间表示动画时长,第个时间表示延迟时间

animation拆分写法

1681724035890

案例-走马灯

1681724053648

  • HTML 结构
<li><img src="./images/1.jpg" alt="" /></li>
<li><img src="./images/2.jpg" alt="" /></li>
<li><img src="./images/3.jpg" alt="" /></li>
<li><img src="./images/4.jpg" alt="" /></li>
<li><img src="./images/5.jpg" alt="" /></li>
<li><img src="./images/6.jpg" alt="" /></li>
<li><img src="./images/7.jpg" alt="" /></li>
<!-- 替身:填补显示区域的露白 -->
<li><img src="./images/1.jpg" alt="" /></li>
<li><img src="./images/2.jpg" alt="" /></li>
<li><img src="./images/3.jpg" alt="" /></li>
  • CSS 样式
.box {
  width: 600px;
  height: 112px;
  border: 5px solid #000;
  margin: 100px auto;
  overflow: hidden;
}

.box ul {
  display: flex;
  animation: move 6s infinite linear;
}

/* 定义位移动画;ul使用动画;鼠标悬停暂停动画 */
@keyframes move {
  0% {
    transform: translate(0);
  }
  100% {
    transform: translate(-1400px);
  }
}

.box:hover ul {
  animation-play-state: paused;
}

无缝动画原理:复制开头图片到结尾位置(图片累加宽度 = 区域宽度)

1、插入六张照片,并把他们限制在框里。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>走马灯</title>
		<style>
			*{
				padding: 0;
				margin: 0;
			}
			li{
				list-style: none;
			}
			img{
				display: block;
				width: 200px;
			}
			.box{
				width: 600px;
				height: 112px;
				border: 5px solid #000;
				margin: 100px auto;
				overflow: hidden;
			}
			
		</style>
	</head>
	<body>
		<div class="box">
			<ul>
				<li><img src="../img/1.jpg" alt=""/></li>
				<li><img src="../img/2.jpg" alt=""/></li>
				<li><img src="../img/3.jpg" alt=""/></li>
				<li><img src="../img/4.jpg" alt=""/></li>
				<li><img src="../img/5.jpg" alt=""/></li>
				<li><img src="../img/6.jpg" alt=""/></li>
				<li><img src="../img/7.jpg" alt=""/></li>
			</ul>
		</div>
	</body>
</html>

image-20231118105200533

2、设计走马灯动画。从0向左边走马灯下去。

.box ul{
				display: flex;
				animation: move 6s;
			}
/* 定义位移动画:ul使用动画,鼠标悬停暂停动画 */
			@keyframes move {
				0%{
					transform: translate(0);
				}
				100%{
					transform: translate(-1400px);
				}	
			}

image-20231118105830504

image-20231118110122995

3、当运行到上图之后,发现第七张图走完后,还留一大片留白,此时我们就需要复制开头图片到结尾位置。(图片累加宽度 = 区域宽度)

<!-- 增加替身 -->
				<li><img src="../img/1.jpg" alt=""/></li>
				<li><img src="../img/2.jpg" alt=""/></li>
				<li><img src="../img/3.jpg" alt=""/></li>

4、增加无限循环。

/* infinite 无限循环 */
				animation: move 6s infinite;

image-20231118111402728

5、增加匀速运动的效果。

/* infinite 无限循环  linear 匀速运动*/
				animation: move 6s infinite linear;

6、当鼠标悬停在.box元素上时,其子元素ul的动画播放状态为暂停。

.box:hover ul{
			animation-play-state: paused;
		}

精灵动画

  • 核心

1681724175321

  • 制作步骤

    1.准备显示区域

    盒子尺寸与一张精灵小图尺寸相同

    2.定义动画

    移动背景图(移动距离 = 精灵图宽度)

    3.使用动画

    steps(N),N 与精灵小图个数相同

div {
  width: 140px;
  height: 140px;
  border: 1px solid #000;
  background-image: url(./images/bg.png);
  animation: run 1s steps(12) infinite;
}

@keyframes run {
  from {
    background-position: 0 0;
  }
  to {
    background-position: -1680px 0;
  }
}

1、把精灵图中的小人圈出来。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>精灵动画</title>
		<style>
			div{
				width: 140px;
				height: 140px;
				border: 1px solid #000;
				background-image: url(../img/bg.png);
			}
		</style>
	</head>
	<body>
		<div></div>
	</body>
</html>

image-20231118112930969

2、增加动画效果。

div{
				width: 140px;
				height: 140px;
				border: 1px solid #000;
				background-image: url(../img/bg.png);
				animation: run 1s;
			}
			@keyframes run {
				from{
					background-position: 0 0;
				}
				to{
					background-position: -1680px 0;
				}
			}

image-20231118113154990

3、在这个动画上设计一些效果。具体来说,该动画在1秒内完成12步(每步持续1/12秒),并且无限循环播放。

div{
				width: 140px;
				height: 140px;
				border: 1px solid #000;
				background-image: url(../img/bg.png);
				animation: run 1s steps(12) infinite;
			}
			@keyframes run {
				from{
					background-position: 0 0;
				}
				to{
					background-position: -1680px 0;
				}
			}

image-20231118113549856

多组动画

animation: 
  动画一,
  动画二,
  ... ...
;

1、给上面的动画增加一个新的方法,之间用逗号隔开:

@keyframes move {
				0%{
					transform: translate(0);
				}
				100%{
					transform: translate(800px);
				}
			}

image-20231118114112055

2、增加在动画结束后,停止在最后的动作上。

animation: 
				run 1s steps(12) infinite,
				move 2s forwards;

image-20231118114138925

注:当动画的开始状态样式 跟 盒子默认样式相同,可以省略动画开始状态。

03-综合案例-全名出游

1681724426559

背景

/* 大背景 */
/* 默认状态HTML和body的高度是0,所以导致cover缩放背景图不成功 */
html {
  height: 100%;
}
body {
  height: 100%;
  background: url(../images/f1_1.jpg) no-repeat center 0 / cover;
  /* background-size: cover; */
}

注:由于默认状态下HTML和boby的高度是0,所以导致cover播放背景图不成功。

image-20231118161719192

云彩位置和动画

  • HTML 结构
<!-- 云 -->
<div class="cloud">
  <img src="./images/yun1.png" alt="">
  <img src="./images/yun2.png" alt="">
  <img src="./images/yun3.png" alt="">
</div>
  • CSS 样式
/* 云 */
.cloud img {
  position: absolute;
  left: 50%;
}

.cloud img:nth-child(1) {
  margin-left: -250px;
  top: 20px;
  animation: cloud 1s infinite alternate linear;
}
.cloud img:nth-child(2) {
  margin-left: 400px;
  top: 100px;
  animation: cloud 1s infinite alternate linear 0.4s;
}
.cloud img:nth-child(3) {
  margin-left: -550px;
  top: 200px;
  animation: cloud 1s infinite alternate linear 0.6s;
}

@keyframes cloud {
  100% {
    transform: translate(20px);
  }
}

1、将三朵云彩放在一起

 <!-- 云 -->
    <div class="cloud">
        <img src="./images/yun1.png" alt="">
        <img src="./images/yun2.png" alt="">
        <img src="./images/yun3.png" alt="">
    </div>
/* 云 */
.cloud img{
    position: absolute;
    left: 50%;
}

image-20231118162113370

2、挪好第一块云彩。

.cloud img:nth-child(1){
    margin-left: -250px;
    margin-top: 20px;
}

image-20231118162516282

3、同样的道理对三片云彩进行修改。

.cloud img:nth-child(2){
    margin-left: 400px;
    margin-top: 100px;
}

.cloud img:nth-child(3){
    margin-left: -550px;
    margin-top: 200px;
}

image-20231118162902519

4、定义一个移动方法,并给第一朵云去加入动画。

@keyframes cloud {
    100%{
        transform: translate(20px);
    }
}

.cloud img:nth-child(1){
    margin-left: -250px;
    margin-top: 20px;
    animation: cloud 1s infinite alternate linear;
}

image-20231118163503912

5、给每一块云彩挪到它应该去的地方。

.cloud img:nth-child(1){
    margin-left: -250px;
    margin-top: 20px;
    animation: cloud 1s infinite alternate linear;
}

.cloud img:nth-child(2){
    margin-left: 400px;
    margin-top: 100px;
    animation: cloud 1s infinite alternate linear 0.4s;
}

.cloud img:nth-child(3){
    margin-left: -550px;
    margin-top: 200px;
    animation: cloud 1s infinite alternate linear 0.6s;
}

image-20231118163659449

热气球和气泡的动画

1.与上面近乎相似,只不过是垂直变化的动画了。加入热气球,只不过此时在网页的最左上角。

<!-- 热气球 -->
    <div class="hotairballoon">
        <img src="./images/san.png" alt="">
    </div>

image-20231118164119331

2、大概定好了位置。

.hotairballoon img{
    margin-left: 350px;
    margin-top: 150px;
}

image-20231118164524406

3、完成上下动画。

.hotairballoon img{
    margin-left: 350px;
    margin-top: 150px;
    animation: hotballoon 1s infinite alternate linear;
}

@keyframes hotballoon {
    100%{
        transform: translateY(50px);
    }
}

image-20231118164805647

4、接下来对那四个按钮进行设置,首先先把四张图片弄出来。

<!-- 地标 -->
    <div class="landmark">
        <img src="./images/1.png" alt="">
        <img src="./images/2.png" alt="">
        <img src="./images/3.png" alt="">
        <img src="./images/4.png" alt="">
    </div>

image-20231118165104333

5、先调到一条正确的线上。

/* 地标 */
.landmark img{
    margin-top: 250px;
}

image-20231118165242836

6、调整好了方位。

/* 地标 */
.landmark img{
    position: absolute;
    margin-top: 250px;
}

.landmark img:nth-child(1){
    margin-left: 225px;
}

.landmark img:nth-child(2){
    margin-left: 485px;
}

.landmark img:nth-child(3){
    margin-left: 750px;
}

.landmark img:nth-child(4){
    margin-left: 1013px;
}

image-20231118170800960

7、动画可以继续延续上面热气球的动画,然后给每个地标的动画延迟时间等差数列,使产生波浪形效果。同时为了使动起来更好看,让顶部少了20边距,让图标不紧贴着轴进行运动。

/* 地标 */
.landmark img{
    position: absolute;
    margin-top: 230px;
}

.landmark img:nth-child(1){
    margin-left: 225px;
    animation: hotballoon 1s infinite alternate linear 0.3s;
}

.landmark img:nth-child(2){
    margin-left: 485px;
    animation: hotballoon 1s infinite alternate linear 0.5s;
}

.landmark img:nth-child(3){
    margin-left: 750px;
    animation: hotballoon 1s infinite alternate linear 0.7s;
}

.landmark img:nth-child(4){
    margin-left: 1013px;
    animation: hotballoon 1s infinite alternate linear 0.9s;
}

image-20231118171558514

文字动画

  • HTML 结构
<!-- 文字 -->
<div class="text">
  <img src="./images/font1.png" alt="">
</div>
  • CSS 样式
/* 文字 */
.text img {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  animation: text 1s;
}

/* 默认 → 小 → 大 → 小 → 默认 */
@keyframes text {
  0% {
    transform: translate(-50%, -50%) scale(1);
  }
  20% {
    transform: translate(-50%, -50%) scale(0.1);
  }
  40% {
    transform: translate(-50%, -50%) scale(1.4);
  }
  70% {
    transform: translate(-50%, -50%) scale(0.8);
  }
  100% {
    transform: translate(-50%, -50%) scale(1);
  }
}

1、文字定到正确的位置

 <!-- 文字 -->
    <div class="text">
        <img src="./images/font1.png" alt="">
    </div>
/* 文字 */
.text img{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
}

image-20231118172547516

2、设计动画。

/* 文字 */
.text img{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    animation: text 1s alternate;
}

/* 默认 - 小 - 大 - 小 - 默认 */
@keyframes text {
    0%{
        transform: translate(-50%,-50%) scale(1);
    }
    30%{
        transform: translate(-50%,-50%) scale(0.5);
    }
    60%{
        transform: translate(-50%,-50%) scale(1.5);
    }
    90%{
        transform: translate(-50%,-50%) scale(0.8);
    }
    100%{
        transform: translate(-50%,-50%) scale(1);
    }
}

image-20231118173236081

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

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

相关文章

K-Means算法进行分类

已知数据集D中有9个数据点&#xff0c;分别是&#xff08;1,2&#xff09;&#xff0c;(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类&#xff0c;k2&#xff0c;设初始中心点为&#xff08;1.1,2.2&#xff09;&#xff0c;&#xff08;2.3,3.…

k8s上Pod生命周期、重启策略、容器探测简介

目录 一.Pod的创建过程 二.Pod的终止过程 三.Pod的重启策略&#xff08;restartPolicy&#xff09; 1.Always 2.OnFailture 3.Never 4.示例 四.Pod生命周期内的5种状态&#xff08;相位&#xff09; 1.Pending 2.Running 3.Succeeded 4.Failed 5.Unknown 五.初始…

号卡分销管理系统搭建

随着移动互联网的发展&#xff0c;各种手机应用层出不穷&#xff0c;其中包括了很多用于企业管理的软件。号卡系统分销管理软件就是其中的一种。它是一种基于移动互联网的企业管理软件&#xff0c;能够帮助企业进行号卡的分销管理&#xff0c;从而提高企业的效率和竞争力。 …

OpenAI发布会中不起眼的重大更新

上周&#xff0c;OpenAI的历史首届开发者大会上&#xff0c;OpenAI的首席执行官山姆奥特曼展示了一系列产品更新&#xff0c;包含了众多重磅功能&#xff0c;就算单独拿出来都能让科技圈震一震&#xff0c;一下能发布这么多也真是家底厚。 果不其然&#xff0c;接下来的一周&am…

C#实现观察者模式

观察者模式是一种软件设计模式&#xff0c;当一个对象的状态发生变化时&#xff0c;其所有依赖者都会自动得到通知。 观察者模式也被称为“发布-订阅”模式&#xff0c;它定义了对象之间的一对多的依赖性&#xff0c;当一个对象状态改变时&#xff0c;所有依赖于它的对象都会得…

Unity 6 是下一个 LTS 版本即将发布

Unity 公司宣布&#xff0c;即将发布 Unity 6&#xff0c;并表示其为下一个长期支持版本 (LTS)。 Unity 在大会上演示了全新的 Unity 6引擎&#xff0c;并通过 Syncy Studios 采用 Unity 6 制作的《幻想王国&#xff08;Fantasy Kingdom&#xff09;》Demo 进行了演示&#xff…

C#单例模式懒汉式与饿汉式

单例模式一般分为懒汉模式和饿汉模式&#xff0c;懒汉式单例在第一次引用时创建实例&#xff0c;不是在类加载时&#xff1b;饿汉式单例模式是一种在类加载时就创建实例的方式&#xff0c;因此也称为静态初始化。 单例模式实现的技巧时构造私有&#xff0c;向外提供静态实例。…

键鼠自动化2.0展示

软件介绍&#xff1a;桌面键鼠自动化工具 Qtc 编写&#xff1a; 本软件采用Qt C编写&#xff0c;旨在提供高效、跨平台的桌面键鼠自动化解决方案。Qt C框架的选择确保了软件的稳定性、可靠性&#xff0c;并通过其图形用户界面实现了用户友好的操作体验。 鼠标移动与点击&#…

目标检测—YOLO系列(二 ) 全面解读复现YOLOv1 PyTorch

精读论文 前言 从这篇开始&#xff0c;我们将进入YOLO的学习。YOLO是目前比较流行的目标检测算法&#xff0c;速度快且结构简单&#xff0c;其他的目标检测算法如RCNN系列&#xff0c;以后有时间的话再介绍。 本文主要介绍的是YOLOV1&#xff0c;这是由以Joseph Redmon为首的…

不动产数据质量提升_电子档案挂接

前言 做了不动产数据质量提升项目&#xff0c;其中包括集体土地所有权档案扫描、挂接。扫描的工作已经完成了&#xff0c;现在需要进行电子档案挂接。正常来说通过不动产系统技术支撑单位的批量挂接功能&#xff0c;但现实是一言难尽。   尝试过进行抓包分析&#xff0c;提交…

快速集成Skywalking 9(Windows系统、JavaAgent、Logback)

目录 一、Skywalking简介二、下载Skywalking服务端三、安装Skywalking服务端3.1 解压安装包3.2 启动Skywalking 四、关于Skywalking服务端更多配置五、Java应用集成skywalking-agent.jar5.1 下载SkyWalking Java Agent5.2 集成JavaAgent5.3 Logback集成Skywalking5.4 集成效果 …

036、目标检测-锚框

之——对边缘框的简化 目录 之——对边缘框的简化 杂谈 正文 1.锚框操作 2.IoU交并比 3.锚框标号 4.非极大值抑制 5.实现 拓展 杂谈 边缘框这样一个指定roi区域的操作对卷积神经网络实际上是很不友好的&#xff0c;这可能会对网络感受野提出一些特定的要求&#xff0…

电子电器架构 —— 车载网关边缘节点总线转换

电子电器架构 —— 车载网关边缘节点路由转发策略 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 PS:小细节,本文字数3000+,详细描述了网关在车载框架中的具体性能设置。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无…

物联网AI MicroPython学习之语法 SPI串行外设通信

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; SPI 介绍 模块功能: SPI串行外设驱动 接口说明 SPI - 构建SPI对象 函数原型&#xff1a;SPI(id, baudrate&#xff0c;polarity, phase&#xff0c;sck, mosi, miso)参数说明&#xff1a; 参数类型必选参…

mysql 中with的用法(3)

有表&#xff08;tb&#xff09;,数据如下&#xff1a; 请用SQL,生成如下的样式&#xff1a; 一、建表 CREATE TABLE tb (id varchar(3) DEFAULT NULL,pid varchar(3) DEFAULT NULL,name varchar(64) DEFAULT NULL ) INSERT INTO tb (id, pid, name) VALUES(002, 0, 浙江省)…

【RH850芯片】RH850U2A芯片平台Spinlock的底层实现

目录 前言 正文 1.RH850U2A上的原子操作 1.1 Link 1.2 Link generation 1.3 Success in storing 1.4 Failure in storing 1.5 Condition for successful storing 1.6 Loss of the link 1.7 示例代码 2.Spinlock代码分析 2.1 尝试获取Spinlock 2.2 释放Spinlock …

一款带数字传输信号的OVP芯片

基本概述 今天给大家介绍的一款芯片是OVP&#xff0c;相比于传统的OVP芯片来说&#xff0c;这款芯片新增了数字信号控制&#xff0c;可以进行10Mbps的一个通信&#xff0c;通过外部的GPIO口进行控制&#xff0c;达到输入与输出信号的产生。 YHM2009这款OVP芯片具有较低的导通…

深度学习数据集—细胞、微生物、显微图像数据集大合集

最近收集了一大波关于细胞、微生物、显微图像数据集&#xff0c;有细胞、微生物&#xff0c;细菌等。 接下来是每个数据的详细介绍&#xff01;&#xff01; 1、12500张血细胞增强图像&#xff08;JPEG&#xff09;数据集 该数据集包含12500张血细胞增强图像&#xff08;JPE…

freetype将字符串制作成位图并显示过程详解

在流媒体项目中字幕显示是不可或缺的一环&#xff0c;一般会有字幕流在视频播放过程中进行显示&#xff1b;不过还有很多情况是从头到尾只在视频的某个区域显示某些文字&#xff0c;例如某个电视台的log&#xff1b;这种也称为字幕&#xff0c;如果想要将这些字符串显示到视频&…