分享实现地铁车辆侧面图

简介

通过伪类和关键帧动画实现地铁车辆侧面图

在线演示

伪元素和关键帧动画

实现代码

<!DOCTYPE html>

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta content="always" name="referrer">

<meta name="theme-color" content="#ffffff">
<meta name="description" content="">
<title>伪元素和关键帧动画</title>
<style>
.loading{
    --ballSize: 10px;
	--containerSize: 150px;
	--duration: 2s;
	--barderWidth: 3px;
    width: var(--containerSize);
	height: var(--containerSize);
	border: 1px solid #12332100;
	margin: 50px auto;
	position: relative;
	border-radius:50%;
}
.loading:before{
    content: '';
	position: absolute;
	left: calc( 50% - var(--ballSize) / 2 - var(--barderWidth) );
	top: calc( 40% - var(--ballSize) / 2 - var(--barderWidth)  );
	width: var(--ballSize);
	height: var(--ballSize);
	border-radius: 50%;
	background: transparent;
	border-top: 0 solid gray;
	border-left: var(--barderWidth) solid gray;
	border-right:  var(--barderWidth) solid gray;
	border-bottom:  0 solid gray;
	animation: run 3s ease-in infinite;
}
.loading:after{
    content: '';
	position: absolute;
	left: calc( 50% - var(--ballSize) / 2 - var(--barderWidth) / 10 );
	top: calc( 50% - var(--ballSize) / 2 - 4*var(--barderWidth) );
	width: calc( var(--ballSize) / 2 );
	height: calc( var(--ballSize) / 2 );
	border-radius: 50%;
	background: transparent;
	border-top: 0 solid gray;
	border-left: var(--barderWidth) solid gray;
	border-right: var(--barderWidth) solid gray;
	border-bottom: 0 solid gray;
	animation: run 2s ease-out infinite;
}
@keyframes run {
    0%{
	  border-color: #00ff0022;
   }
   25%{
	  border-color: #00ff0044;
   }
   50%{
	  border-color: #00ff0088;
   }
   75%{
	  border-color: #00ff00aa;
   }
   100%{
	  border-color: #00ff00;
   }
}
.dot{
    position: absolute;
	left: 50%;
	top: 0;
	width: var(--ballSize);
	height: var(--ballSize);
	margin-left: calc( var(--ballSize) / (-2) );
	margin-top: calc( var(--ballSize) / (-2) );
	background: #65432123;
	transform-origin: center calc( var(--containerSize) / 2 +  var(--ballSize) / 2 );
	perspective: 70px;
	transform-style: preserve-3d;
}

.dot:nth-child(1){
    transform: rotate(0deg);
}
.dot:nth-child(1)::before,.dot:nth-child(1)::after{
    animation-delay: calc( var(--duration) / 36 * ( 1 - 1)*6*-1 );
}

.dot:nth-child(2){
    transform: rotate(10deg);
}
.dot:nth-child(2)::before,.dot:nth-child(2)::after{
    animation-delay: calc( var(--duration) / 36 * ( 2 - 1 )*6*-1 );
}
.dot:nth-child(3){
    transform: rotate(20deg);
}
.dot:nth-child(3)::before,.dot:nth-child(3)::after{
    animation-delay: calc( var(--duration) / 36 * ( 3 - 1 )*6*-1 );
}
.dot:nth-child(4){
    transform: rotate(30deg);
}
.dot:nth-child(4)::before,.dot:nth-child(4)::after{
    animation-delay: calc( var(--duration) / 36 * ( 4 - 1 )*6*-1 );
}
.dot:nth-child(5){
    transform: rotate(40deg);
}
.dot:nth-child(5)::before,.dot:nth-child(5)::after{
    animation-delay: calc( var(--duration) / 36 * ( 5 - 1 )*6*-1 );
}
.dot:nth-child(6){
    transform: rotate(50deg);
}
.dot:nth-child(6)::before,.dot:nth-child(6)::after{
    animation-delay: calc( var(--duration) / 36 * ( 6 - 1 )*6*-1 );
}
.dot:nth-child(7){
    transform: rotate(60deg);
}
.dot:nth-child(7)::before,.dot:nth-child(7)::after{
    animation-delay: calc( var(--duration) / 36 * ( 7 - 1 )*6*-1 );
}
.dot:nth-child(8){
    transform: rotate(70deg);
}
.dot:nth-child(8)::before,.dot:nth-child(8)::after{
    animation-delay: calc( var(--duration) / 36 * ( 8 - 1 )*6*-1 );
}
.dot:nth-child(9){
    transform: rotate(80deg);
}
.dot:nth-child(9)::before,.dot:nth-child(9)::after{
    animation-delay: calc( var(--duration) / 36 * ( 9 - 1 )*6*-1 );
}
.dot:nth-child(10){
    transform: rotate(90deg);
}
.dot:nth-child(10)::before,.dot:nth-child(10)::after{
    animation-delay: calc( var(--duration) / 36 * ( 10 - 1 )*6*-1 );
}
.dot:nth-child(11){
    transform: rotate(100deg);
}
.dot:nth-child(11)::before,.dot:nth-child(11)::after{
    animation-delay: calc( var(--duration) / 36 * ( 11 - 1 )*6*-1 );
}
.dot:nth-child(12){
    transform: rotate(110deg);
}
.dot:nth-child(12)::before,.dot:nth-child(12)::after{
    animation-delay: calc( var(--duration) / 36 * ( 12 - 1 )*6*-1 );
}
.dot:nth-child(13){
    transform: rotate(120deg);
}
.dot:nth-child(13)::before,.dot:nth-child(13)::after{
    animation-delay: calc( var(--duration) / 36 * ( 13 - 1 )*6*-1 );
}
.dot:nth-child(14){
    transform: rotate(130deg);
}
.dot:nth-child(14)::before,.dot:nth-child(14)::after{
    animation-delay: calc( var(--duration) / 36 * ( 14 - 1 )*6*-1 );
}
.dot:nth-child(15){
    transform: rotate(140deg);
}
.dot:nth-child(15)::before,.dot:nth-child(15)::after{
    animation-delay: calc( var(--duration) / 36 * ( 15 - 1 )*6*-1 );
}
.dot:nth-child(16){
    transform: rotate(150deg);
}
.dot:nth-child(16)::before,.dot:nth-child(16)::after{
    animation-delay: calc( var(--duration) / 36 * ( 16 - 1 )*6*-1 );
}
.dot:nth-child(17){
    transform: rotate(160deg);
}
.dot:nth-child(17)::before,.dot:nth-child(17)::after{
    animation-delay: calc( var(--duration) / 36 * ( 17 - 1 )*6*-1 );
}
.dot:nth-child(18){
    transform: rotate(170deg);
}
.dot:nth-child(18)::before,.dot:nth-child(18)::after{
    animation-delay: calc( var(--duration) / 36 * ( 18 - 1 )*6*-1 );
}
.dot:nth-child(19){
    transform: rotate(180deg);
}
.dot:nth-child(19)::before,.dot:nth-child(19)::after{
    animation-delay: calc( var(--duration) / 36 * ( 19 - 1 )*6*-1 );
}
.dot:nth-child(20){
    transform: rotate(190deg);
}
.dot:nth-child(20)::before,.dot:nth-child(20)::after{
    animation-delay: calc( var(--duration) / 36 * ( 20 - 1 )*6*-1 );
}
.dot:nth-child(21){
    transform: rotate(200deg);
}
.dot:nth-child(21)::before,.dot:nth-child(21)::after{
    animation-delay: calc( var(--duration) / 36 * ( 21 - 1 )*6*-1 );
}
.dot:nth-child(22){
    transform: rotate(210deg);
}
.dot:nth-child(22)::before,.dot:nth-child(22)::after{
    animation-delay: calc( var(--duration) / 36 * ( 22 - 1 )*6*-1 );
}
.dot:nth-child(23){
    transform: rotate(220deg);
}
.dot:nth-child(23)::before,.dot:nth-child(23)::after{
    animation-delay: calc( var(--duration) / 36 * ( 23 - 1 )*6*-1 );
}
.dot:nth-child(24){
    transform: rotate(230deg);
}
.dot:nth-child(24)::before,.dot:nth-child(24)::after{
    animation-delay: calc( var(--duration) / 36 * ( 24 - 1 )*6*-1 );
}
.dot:nth-child(25){
    transform: rotate(240deg);
}
.dot:nth-child(25)::before,.dot:nth-child(25)::after{
    animation-delay: calc( var(--duration) / 36 * ( 25 - 1 )*6*-1 );
}
.dot:nth-child(26){
    transform: rotate(250deg);
}
.dot:nth-child(26)::before,.dot:nth-child(26)::after{
    animation-delay: calc( var(--duration) / 36 * ( 26 - 1 )*6*-1 );
}
.dot:nth-child(27){
    transform: rotate(260deg);
}
.dot:nth-child(27)::before,.dot:nth-child(27)::after{
    animation-delay: calc( var(--duration) / 36 * ( 27 - 1 )*6*-1 );
}
.dot:nth-child(28){
    transform: rotate(270deg);
}
.dot:nth-child(28)::before,.dot:nth-child(28)::after{
    animation-delay: calc( var(--duration) / 36 * ( 28 - 1 )*6*-1 );
}
.dot:nth-child(29){
    transform: rotate(280deg);
}
.dot:nth-child(29)::before,.dot:nth-child(29)::after{
    animation-delay: calc( var(--duration) / 36 * ( 29 - 1 )*6*-1 );
}
.dot:nth-child(30){
    transform: rotate(290deg);
}
.dot:nth-child(30)::before,.dot:nth-child(30)::after{
    animation-delay: calc( var(--duration) / 36 * ( 30 - 1 )*6*-1 );
}
.dot:nth-child(31){
    transform: rotate(300deg);
}
.dot:nth-child(31)::before,.dot:nth-child(31)::after{
    animation-delay: calc( var(--duration) / 36 * ( 31 - 1 )*6*-1 );
}
.dot:nth-child(32){
    transform: rotate(310deg);
}
.dot:nth-child(32)::before,.dot:nth-child(32)::after{
    animation-delay: calc( var(--duration) / 36 * ( 32 - 1 )*6*-1 );
}
.dot:nth-child(33){
    transform: rotate(320deg);
}
.dot:nth-child(33)::before,.dot:nth-child(33)::after{
    animation-delay: calc( var(--duration) / 36 * ( 33 - 1 )*6*-1 );
}
.dot:nth-child(34){
    transform: rotate(330deg);
}
.dot:nth-child(34)::before,.dot:nth-child(34)::after{
    animation-delay: calc( var(--duration) / 36 * ( 34 - 1 )*6*-1 );
}
.dot:nth-child(35){
    transform: rotate(340deg);
}
.dot:nth-child(35)::before,.dot:nth-child(35)::after{
    animation-delay: calc( var(--duration) / 36 * ( 35 - 1 )*6*-1 );
}
.dot:nth-child(36){
    transform: rotate(350deg);
}
.dot:nth-child(36)::before,.dot:nth-child(36)::after{
    animation-delay: calc( var(--duration) / 36 * ( 36 - 1 )*6*-1 );
}

.dot::before,.dot::after{
    content: '';
	position: absolute;
	left: 0;
	top: 0;
	width: var(--ballSize);
	height: var(--ballSize);
	border-radius: 50%;
}
.dot::before{
    background: #123456;
	top: -100%;
	animation: rotate-black var(--duration) infinite;
	
}
@keyframes rotate-black{
        0%{
		   animation-timing-function: ease-in;
		}
	    25%{
		   transform: translate3d(0,100%,10px);
		   animation-timing-function: ease-out;
		}
		50%{
		   transform: translate3d(0,200%,0);
		   animation-timing-function: ease-in;
		}
		75%{
		   transform: translate3d(0,100%,-10px);
		   animation-timing-function: ease-out;
		}
	}

.dot::after{
    background: red;
	top: 100%;
	animation: rotate-red var(--duration) infinite;
}
@keyframes rotate-red{
        0%{
		   animation-timing-function: ease-in;
		}
	    25%{
		   transform: translate3d(0,-100%,-10px);
		   animation-timing-function: ease-out;
		}
		50%{
		   transform: translate3d(0,-200%,0);
		   animation-timing-function: ease-in;
		}
		75%{
		   transform: translate3d(0,-100%,10px);
		   animation-timing-function: ease-out;
		}
	}

.train {
  --speed: 1s;
  display: black;
  align-items: center;
  box-sizing: border-box;
  flex: 1;
  height: 100px;
  padding: 0 60px;
  padding-top: 20px;
  flex-wrap: wrap;
}
.content_item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex: 1;
    padding: 0 8px;
}
.carriageUp {
	background: #eaeaeb;
	box-shadow: 0px 20px 20px 5px #01071788;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: space-around;
	color: #a2a7b5;
	font-size: 14px;
	font-weight: bold;
	border-top-left-radius: 5px;
	border-top-right-radius: 5px;
	width: calc( ( 100% - (8 - 1) * 8px) / 8);
	cursor: pointer;
}
.carriageUp::before{
	content: "";
	position: relative;
	z-index: 1;
	width: 40px;
	height: 20px;
	border-radius: 2px;
	background-color: #dbdbe6;
	box-shadow: 1px -1px 1px 1px #0000004d;
	top: 0px;
	left: 0px;
}
.carriageUp::after{
	content: "";
	position: relative;
	z-index: 1;
	width: 40px;
	height: 20px;
	border-radius: 2px;
	background-color: #dbdbe6;
	box-shadow: 1px -1px 1px 1px #0000004d;
	top: 0px;
	right: 0px;
}
.carriageUp:first-child{
	border-top-left-radius: 80px;
}
.carriageUp:last-child{
	border-top-right-radius: 80px;
}
.carriageUp:first-child::before{
	left: -5px;
	border-top-left-radius: 20px;
	border-bottom-left-radius: 5px;
	width: 40px;
}
.carriageUp.openmc1:first-child::before{
  background: #4ebe11;
}
.carriageUp:last-child::after{
	right: -5px;
	border-top-right-radius: 20px;
	border-bottom-right-radius: 5px;
	width: 40px;
}
.carriageUp.openmc2:last-child::after{
  background: #4ebe11;
}
.carriageDown {
  background: #eaeaeb;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #a2a7b5;
  font-size: 20px;
  font-weight: bold;
  border-radius: 1px;
  border-top: 10px solid #dbdbe6;
  width: calc( ( 100% - (8 - 1) * 8px) / 8);
}
.carriageDown::before{
	content: "";
	position: relative;
	z-index: 1;
	width: 40px;
	height: 40px;
	border-radius: 20px;
	background-color: #dbdbe6;
	box-shadow: 0px -1px 1px 1px #0000004f;
	top: 0px;
	left: -20px;
	animation: runRight calc( var(--speed)/24 ) linear infinite;
}
.carriageDown::after{
	content: "";
	position: relative;
	z-index: 1;
	width: 40px;
	height: 40px;
	border-radius: 20px;
	background-color: #dbdbe6;
	box-shadow: 0px -1px 1px 1px #0000004f;
	top: 0px;
	right: -20px;
	animation: runRight calc( var(--speed)/24 ) linear infinite;
}
.carriageDown:first-child{
	border-bottom-left-radius: 80px;
}
.carriageDown:last-child{
	border-bottom-right-radius: 80px;
}

.content_item:first-child{
    height: 80%;
}
.content_item:last-child{
    height: 20%;
}

@keyframes runRight{
   0%{
      transform: rotate(0deg) scale(0.96);
   }
   25%{
      transform: rotate(-90deg) scale(0.98);
   }
   50%{
      transform: rotate(-180deg) scale(1);
   }
   75%{
      transform: rotate(-270deg) scale(0.98);
   }
   100%{
      transform: rotate(-360deg) scale(0.96);
   }
}

@keyframes runLeft{
   0%{
      transform: rotate(0deg) scale(0.96);
   }
   25%{
      transform: rotate(90deg) scale(0.98);
   }
   50%{
      transform: rotate(180deg) scale(1);
   }
   75%{
      transform: rotate(270deg) scale(0.98);
   }
   100%{
      transform: rotate(360deg) scale(0.96);
   }
}

</style>
</head>

<body>


<div class="loading">
     <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
	 <div class="dot"></div>
</div>

<div class="train">
	<div class="content_item">
		 <div class="carriageUp openmc1"></div>
		 <div class="carriageUp"></div>
		 <div class="carriageUp"></div>
		 <div class="carriageUp"></div>
		 <div class="carriageUp"></div>
		 <div class="carriageUp"></div>
		 <div class="carriageUp"></div>
		 <div class="carriageUp"></div>
	</div>
	<div class="content_item">
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
		 <div class="carriageDown"></div>
	</div>
</div>

<div style="width: 100%;height: 30px;background:#123456;"></div>

<script>


</script>

</body>

</html>

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

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

相关文章

【免费资料】IEEE33节点系统参数及拓扑图visio

主要内容 对于初学配电网的同学&#xff0c;最经典的系统即是33节点配电网系统&#xff0c;在各个研究文献中出现频次最高的也是这个系统&#xff0c;为了让大家更好了解33节点系统参数&#xff0c;本次整理了系统节点、支路参数excel以及33节点网络拓扑图visio&#xff0c…

org.springframework.jdbc.BadSqlGrammarException异常

Bug 记录 概述 在执行定时任务更新电子书统计信息时&#xff0c;遇到了 org.springframework.jdbc.BadSqlGrammarException 异常&#xff0c;具体表现为 SQL 函数 count 被错误地解析为自定义函数 wiki.count&#xff0c;导致数据库更新操作失败。 详细描述 错误信息&#x…

adb不插usb线通过wifi调试

说起做手机开发也有好多年了&#xff0c;说来惭愧&#xff0c;我最近才知道安卓手机是可以不插数据线进行开发调试的。起因是公司近期采购了一批安卓一卡通设备&#xff0c;需要对其进行定制开发APP,但是由于我插USB调试发现没有反应。通过询问厂家才知道可以通过WIFI进行调试。…

Gradient Descent

在整个maching learning的第三个步骤要找一个最好的function。在第二步是定义了一个 Loss function L&#xff0c;这个L是一个function的fuction 求完偏微分之后得到的向量就是Gradient&#xff08;黄色部分&#xff09; 随机找一个起始点0&#xff0c;它的等高线的法线方向就…

Flash存储器解析:从原理到应用,全面了解其与缓存的区别

Flash存储器解析&#xff1a;从原理到应用&#xff0c;全面了解其与缓存的区别 Flash存储器是一种非易失性存储器技术&#xff0c;广泛应用于各种电子设备中&#xff0c;如USB闪存盘、固态硬盘&#xff08;SSD&#xff09;、智能手机、数码相机和嵌入式系统。它能够在断电情况下…

Windows使用nxlog发送系统日志到Linux的rsyslog服务器

Windows使用nxlog发送系统日志到Linux的rsyslog服务器 前言一、IP地址规划及示意图二、在windows上安装及配置nxlog1.下载nxlog2.安装nxlog3.配置nxlog4.创建对应日志路径的文件夹 三、windows上启动nxlog服务四、在CentOS 7上配置日志存到指定位置文件1.编辑/etc/rsyslog.conf…

【国产开源可视化引擎Meta2d.js】钢笔

钢笔 钢笔是和其他众多绘图工具&#xff08;Photoshop、Sketch、Illustrator&#xff09;中一致的钢笔工具&#xff0c;能够很方便的在线绘制各种小图标 在线体验&#xff1a; 乐吾乐2D可视化 示例&#xff1a; // 开始绘画&#xff1a;curve。除了curve&#xff0c;还有poly…

9 张图带你理解 Kafka 中高水位 HW

大家好&#xff0c;我是君哥。 Kafka 高水位&#xff08;简称 HW&#xff09;是 Kafka 中非常重要的一个概念&#xff0c;今天来聊一聊 HW。 1 HW 简介 HW 是 Kafka 中 Offset 的一个值&#xff0c;HW 作为一个边界&#xff0c;Offset 小于 HW 的消息被称为已提交消息&#…

让ChatGPT干正事、说人话、会思考!借助ChatGPT润出优质论文的实操指南

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步&a…

Qt 文件初始化配置ini/conf类型读写

学习目标&#xff1a; 文件初始化配置 前置环境 运行环境:qt creator 4.12 学习内容 INI 文件是一种常见的配置文件格式,它通常用于存储应用程序或系统的设置和参数。INI 文件的格式很简单,由以下几个部分组成: 节(Section): 节用方括号括起来,如 [General]、[Network] 等。…

基于Redis和阻塞队列的 异步秒杀业务

异步前 之前的秒杀业务的查询优惠券、查询订单、减库存、创建订单都要查询数据库&#xff0c;而且有分布式锁&#xff0c;使得整个业务耗时长&#xff0c;对此采用异步操作处理&#xff0c;异步操作类似于餐厅点餐&#xff0c;服务员负责点菜产生订单、厨师负责根据订单后厨做…

LabVIEW图像分段线性映射

介绍了如何使用LabVIEW对图像进行分段线性映射处理&#xff0c;通过对特定灰度值区间进行不同的线性映射调整&#xff0c;以优化图像的显示效果。案例中详细展示了如何配置和使用LabVIEW中的图像处理工具&#xff0c;包括设置分段区间、计算映射参数和应用映射函数等步骤。 实…

STM32智能医疗监测系统教程

目录 引言环境准备智能医疗监测系统基础代码实现&#xff1a;实现智能医疗监测系统 4.1 数据采集模块 4.2 数据处理与分析 4.3 通信系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;医疗监测与优化问题解决方案与优化收尾与总结 1. 引言 智能医疗监测系统通过STM32嵌…

Python爬取股票信息-并进行数据可视化分析,绘股票成交量柱状图

为了使用Python爬取股票信息并进行数据可视化分析&#xff0c;我们可以使用几个流行的库&#xff1a;requests 用于网络请求&#xff0c;pandas 用于数据处理&#xff0c;以及 matplotlib 或 seaborn 用于数据可视化。 步骤 1: 安装必要的库 首先&#xff0c;确保安装了以下P…

virtualbox窗口和win10窗口的切换

1、问题&#xff1a; 从windows切换到虚拟机可以用快捷键 ALTTAB&#xff0c;但是从虚拟机到windows使用 ALTTAB 无法成功切换 2、解决方法&#xff1a; 注意&#xff1a;发现设置为ctrlAlt会导致打开终端快捷键&#xff08;CtrlAltT&#xff09;失效&#xff0c;建议这里设置…

【C++】开源:地图投影和坐标转换proj库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍地图投影和坐标转换proj库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&a…

mars3d加载wms服务或者wmts服务注意事项

1.wms只支持4326、3857、4490的标准切片&#xff0c;其他坐标系不支持 Mars3D三维可视化平台 | 火星科技 2.wmts同理&#xff0c;Mars3D三维可视化平台 | 火星科技 3.对应级别tilematrix找到的瓦片tilerow&tilecol这两个参数使用常见报错无效参考&#xff1a; 【Mars3d】…

VSCode设置字体大小

方法1&#xff1a;Ctrl 和 Ctrl -&#xff0c;可以控制整个VSCode界面的整体缩放&#xff0c;但是不会调整字体大小 方法2&#xff1a;该方法只能设置编辑器界面的字号&#xff0c;无法改变窗口界面的字号。 &#xff08;1&#xff09;点开左下角如下图标&#xff0c;进入…

商贸物流大脑:大模型+数据要素赋能智慧物流数据平台

项目背景与意义 物流行业快速发展&#xff0c;数据量急剧增加&#xff0c;随着电子商务、智能制造等领域的快速发展&#xff0c;物流行业面领着前所未有的挑战和机遇&#xff0c;如效率低下、资源配置不均、信息不透明等问题。随着全球化和电子商务的快速发展&#xff0c;数据…

【Linux进阶】文件系统8——硬链接和符号连接:ln

在Linux下面的链接文件有两种&#xff0c; 一种是类似Windows的快捷方式功能的文件&#xff0c;可以让你快速地链接到目标文件&#xff08;或目录)&#xff1b;另一种则是通过文件系统的inode 链接来产生新文件名&#xff0c;而不是产生新文件&#xff0c;这种称为硬链接&…