css3实现一个3d楼梯动画

news2024/11/27 16:39:38

背景

👏👏通过给出的宽/高+个数,用css3的transform以及transform-style快速的实现一个3d楼梯,速速来Get吧~
🥇文末分享源代码。记得点赞+关注+收藏!

1.实现效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8HrUkV1e-1669741574799)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2f2e8db6e64249a1be8b6c673b08f3aa~tplv-k3u1fbpfcp-watermark.image?)]

2.实现步骤

  • 定义css变量:宽w、高h、个数count
/* 楼梯高度 */
--h: 40px;
/* 楼梯宽度 */
--w: 50px;
/* 楼梯节数 */
--count: 5;
  • 写一个容器,宽为count * w; 高为count * h;设置transform-style: preserve-3d,让转换的子元素保留3D转换。
.container {
    position: relative;
    width: calc(var(--count) * var(--w));
    height: calc(var(--count) * var(--h));
    transform-style: preserve-3d;
  }
  • 在容器内写count个div,给每个div标签定义css变量c,表示当前位置,从1~count,设置width为w,高为h * c,transform-style为preserve-3d;基于父容器absolute定位,bottom都为0,left从0开始,为w*(c-1);实现效果如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ETj4Frj-1669741574800)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/69fa85ea62de4537b971bb8aed3add2c~tplv-k3u1fbpfcp-watermark.image?)]

注意:以下圈出来的即为定义的w和h

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntHzke6a-1669741574801)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a0145bed8725419aa348054a7502158a~tplv-k3u1fbpfcp-watermark.image?)]

<div class="container">
    <div class="step" style="--c: 1">
    </div>
    <div class="step" style="--c: 2">
    </div>
    <div class="step" style="--c: 3">
    </div>
    <div class="step" style="--c: 4">
    </div>
    <div class="step" style="--c: 5">
    </div>
</div>
.container .step {
    position: absolute;
    --i: calc(var(--c) - 1);
    left: calc(var(--w) * var(--i));
    bottom: 0;
    width: var(--w);
    height: calc(var(--h) * var(--c));
    border: 1px solid orange;
  }
  • 对父容器进行transform偏移,看看效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBiAh3sl-1669741574801)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cc5d39834dad475bae554dbb3c533869~tplv-k3u1fbpfcp-watermark.image?)]

.container{
 + transform: rotateX(-30deg) rotateY(30deg);
}
  • 为每个div设置前伪元素,宽度为w,高度为count * h,设置X轴方向旋转从0-90deg,效果如下:

在这里插入图片描述

.container .step::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: var(--w);
    height: calc(var(--count) * var(--h));
    background: orange;
    transform: rotateX(90deg);
  }
  • 前伪元素设置z轴方向的偏移,偏移量为总高度(count * h)的一半

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxB3ozZK-1669741574802)(https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/cf00f9db459343ebb7e0e7c0314bb562~tplv-k3u1fbpfcp-watermark.image?)]

.container .step::before {
    /* z轴偏移为高度的2分之一 */
    --z: calc(var(--count) * var(--h) / 2);
    transform: rotateX(90deg) translateZ(var(--z));
 }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pThI4Sgv-1669741574803)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d386df4cb4024740a940c41b6c13b067~tplv-k3u1fbpfcp-watermark.image?)]

  • 为每个div设置后伪元素,高度为h,宽度为count* h(这个值与前伪元素的高度对应),设置Y轴方向旋转从0-90deg,效果如下:

在这里插入图片描述

.container .step::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: calc(var(--count) * var(--h));
  height: var(--h);
  background: orangered;
  transform: rotateY(90deg);
}
  • 后伪元素设置z轴方向的偏移,偏移量为总高度(count * h)的一半
.container .step::after {
    /* z轴偏移为高度的2分之一 */
    --z: calc(var(--count) * var(--h) / 2);
    transform: rotateY(90deg) translateZ(calc(-1 * var(--z)));
 }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LF6Oy9ga-1669741574803)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f326df5c49e04505b91cd316e4f13ae7~tplv-k3u1fbpfcp-watermark.image?)]

  • 为前伪元素添加hover效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHZGvzSE-1669741574804)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e5b841c792a04e81b120e6ee76320e92~tplv-k3u1fbpfcp-watermark.image?)]

.container .step:hover::before {
  cursor: pointer;
  filter: brightness(1.1);
}
  • 将父容器进行旋转,可以看到已经有大概的轮廓了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XEDgD4sO-1669741574804)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/059ea8e878134bda9429c2b474469857~tplv-k3u1fbpfcp-watermark.image?)]

  • 在每个div下添加两个span标签,宽度为w,高度为父元素step的高度,做为梯形的左右两侧

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iSbNYExq-1669741574804)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/97b3e09d7ffc455bb5187743e04cda83~tplv-k3u1fbpfcp-watermark.image?)]

<div class="container">
  <div class="step" style="--c: 1">
    <span></span>
    <span></span>
  </div>
 ... //4个相同的标签
</div>
.container .step span {
    position: absolute;
    display: block;
    width: var(--w);
    height: 100%;
    background: orchid;
    transform-style: preserve-3d;
}
  • 设置第一个span的位置,z轴方向的偏移,偏移量为总高度(count * h)的一半

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7pSWZxVg-1669741574805)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8c16ac5d11c34005b4eb2d066857af74~tplv-k3u1fbpfcp-watermark.image?)]

.container .step span:nth-child(1) {
  /* z轴偏移为高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  transform: translateZ(var(--z));
}
  • 设置第二个span的位置,z轴方向的偏移,偏移量为总高度(count * h)的一半

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mu8gUJCD-1669741574805)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/112ca2e24fb547ceb1fd1ba424fe3da4~tplv-k3u1fbpfcp-watermark.image?)]

.container .step span:nth-child(2) {
  /* z轴偏移为高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  transform: translateZ(calc(-1 * var(--z)));
}
  • 可以看到,现在还剩两处需要填充

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ujWUuOQJ-1669741574805)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ab9cfcde86c248a89e66faa646ede934~tplv-k3u1fbpfcp-watermark.image?)]

  • 填补第一处内容,将最后一个div标签中的最后一个span为容器,添加一个伪元素,高度100%,宽度为counut * h

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kuohIa8z-1669741574806)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f92d35e0086f4053a1ebf799ebe906d1~tplv-k3u1fbpfcp-watermark.image?)]

.container .step:last-child span:nth-child(2)::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: calc(var(--counut) * var(--h));
  height: 100%;
  background: #222;
}
  • 将该伪元素y轴方向旋转90deg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w3EyYjZ5-1669741574806)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7b076bbfa5d44ce5a3ef9702b371df98~tplv-k3u1fbpfcp-watermark.image?)]

  • 调整其在x,y,z轴各个方向的偏移量,x轴方向为总高度的一半 即 -1 * (count * h) /2,y轴方向为0,z轴方向为-1 * ((count * h) /2 - w)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NfeKF8Z-1669741574806)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/48fbe2e2cad64cdca43285e217b6bec3~tplv-k3u1fbpfcp-watermark.image?)]

.container .step:last-child span:nth-child(2)::before {
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  /*  总高度的2分之一 - 宽度*/
  --k: calc(var(--z) - var(--w));
  transform: rotateY(90deg)
    translate3d(calc(-1 * var(--z)), 0, calc(-1 * var(--k)));
}
  • 填补第二处内容,将第一个div标签中的第二个span为容器,添加一个伪元素,高度counut * h,宽度为span元素的高度* count

在这里插入图片描述

.container .step:first-child span:nth-child(2)::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  background: #222;
  width: calc(100% * var(--count));
  height: calc(calc(var(--count) * var(--h)));
  transform: rotateX(90deg);
}
  • 将该伪元素X轴方向旋转90deg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mnGh4tXX-1669741574807)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c70a6c455e52481683c480a67a13797d~tplv-k3u1fbpfcp-watermark.image?)]

  • 调整其在x,y,z轴各个方向的偏移量,x轴方向为0,y轴为总高度的一半 即 (count * h) /2,z轴方向为 ((count * h) /2 - h)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v2HvZUPU-1669741574807)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8ecf10fee9a246b58968956478d7bfd7~tplv-k3u1fbpfcp-watermark.image?)]

.container .step:first-child span:nth-child(2)::after {
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  /*  总高度的2分之一 - 高度*/
  --k: calc(var(--z) - var(--h));
  transform: rotateX(90deg) translate3d(0, var(--z), var(--k));
}
  • 到此,我们就是写了一个完整的3d楼梯了,去掉辅助线,将各边的颜色风格统一一致

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WtIcIxNH-1669741574807)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bbeb1937968d4cab875cc3b510a6ed49~tplv-k3u1fbpfcp-watermark.image?)]

  • 为底部添加一个阴影效果,选择最底部的区域,设置scale

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRHpxo2p-1669741574808)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1d2f2ec6bce2404f81ebd848e6482ae5~tplv-k3u1fbpfcp-watermark.image?)]

.container .step:first-child span:nth-child(2)::after{
    + transform: rotateX(90deg) translate3d(0, var(--z), var(--k)) scale(1.25);
}
  • 设置filter的blur滤镜

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z8UnVb7L-1669741574808)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b924431b90cb405b94a3ccff107146c8~tplv-k3u1fbpfcp-watermark.image?)]

.container .step:first-child span:nth-child(2)::after{
    +filter: blur(20px);
}
  • 父容器添加animation动画,改变rotateX, rotateY的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gOiaPTcD-1669741574808)(https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5f444825834e43c1b66d9910ca548092~tplv-k3u1fbpfcp-watermark.image?)]

.container {
  + transform: rotateX(-30deg) rotateY(30deg);
  + animation: animate 10s linear infinite;
}

@keyframes animate {
    0% {
        transform: rotateX(-30deg) rotateY(0deg);
    }
    100% {
        transform: rotateX(-30deg) rotateY(1turn);
    }
}
  • 修改w和h,设置不同的count,试试吧

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UoIIkZjn-1669741574808)(https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3f4030e2d2c64313b5530f1890688a20~tplv-k3u1fbpfcp-watermark.image?)]

 /* 楼梯高度 */
  --h: 10px;
  /* 楼梯宽度 */
  --w: 50px;
  /* 楼梯节数 */
  --count: 6;

3.实现代码

<style>
:root {
  --bg: linear-gradient(to top, #fdcbf1 0%, #fdcbf1 1%, #e6dee9 100%);
  --c1: #6ec5e7;
  --c3: #c2e9fb;
  --c2: skyblue;
  /* 楼梯高度 */
  --h: 10px;
  /* 楼梯宽度 */
  --w: 50px;
  /* 楼梯节数 */
  --count: 6;
}
body {
  background: var(--bg);
}
.container {
  position: relative;
  width: calc(var(--count) * var(--w));
  height: calc(var(--count) * var(--h));
  transform-style: preserve-3d;
  transform: rotateX(-30deg) rotateY(30deg);
  animation: animate 10s linear infinite;
}
@keyframes animate {
  0% {
    transform: rotateX(-30deg) rotateY(0deg);
  }

  100% {
    transform: rotateX(-30deg) rotateY(1turn);
  }
}
.container .step {
  position: absolute;
  --i: calc(var(--c) - 1);
  left: calc(var(--w) * var(--i));
  bottom: 0;
  width: var(--w);
  height: calc(var(--h) * var(--c));
  transform-style: preserve-3d;
}
.container .step::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: var(--w);
  height: calc(var(--count) * var(--h));
  background: var(--c3);
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  transform: rotateX(90deg) translateZ(var(--z));
}
.container .step:hover::before {
  cursor: pointer;
  filter: brightness(1.1);
}
.container .step::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: calc(var(--count) * var(--h));
  height: var(--h);
  background: var(--c2);
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  transform: rotateY(90deg) translateZ(calc(-1 * var(--z)));
}
.container .step span {
  position: absolute;
  display: block;
  width: var(--w);
  height: 100%;
  background: var(--c1);
  transform-style: preserve-3d;
}
.container .step span:nth-child(1) {
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  transform: translateZ(var(--z));
}
.container .step span:nth-child(2) {
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  transform: translateZ(calc(-1 * var(--z)));
}
.container .step:last-child span:nth-child(2)::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: calc(var(--count) * var(--h));
  height: 100%;
  background: var(--c2);
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  /*  总高度的2分之一 - 宽度*/
  --k: calc(var(--z) - var(--w));
  transform: rotateY(90deg)
    translate3d(calc(-1 * var(--z)), 0, calc(-1 * var(--k)));
}
.container .step:first-child span:nth-child(2)::after {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  background: var(--c1);
  width: calc(100% * var(--count));
  height: calc(calc(var(--count) * var(--h)));
  /* z轴偏移为总高度的2分之一 */
  --z: calc(var(--count) * var(--h) / 2);
  /*  总高度的2分之一 - 高度*/
  --k: calc(var(--z) - var(--h));
  transform: rotateX(90deg) translate3d(0, var(--z), var(--k)) scale(1.25);
  filter: blur(20px);
}
</style>

<body>
    <div class="container">
      <div class="step" style="--c: 1">
        <span></span>
        <span></span>
      </div>
      <div class="step" style="--c: 2">
        <span></span>
        <span></span>
      </div>
      <div class="step" style="--c: 3">
        <span></span>
        <span></span>
      </div>
      <div class="step" style="--c: 4">
        <span></span>
        <span></span>
      </div>
      <div class="step" style="--c: 5">
        <span></span>
        <span></span>
      </div>
      <div class="step" style="--c: 6">
        <span></span>
        <span></span>
      </div>
    </div>
</body>

4.写在最后🍒

看完本文如果觉得对你有一丢丢帮助,记得点赞+关注+收藏鸭 🍕
更多相关内容,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云~

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

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

相关文章

cadence SPB17.4 - allegro - disable recent Designs list

文章目录cadence SPB17.4 - allegro - disable recent Designs list概述笔记效果备注ENDcadence SPB17.4 - allegro - disable recent Designs list 概述 和csdn同学讨论问题, 他的问题如下: cadence如何在不去掉startpage的情况下只Recent Projects呢&#xff1f;&#xff…

【能效管理】变电站综合自动化监控系统在35kV变电站中应用

摘要&#xff1a;Acrel-1000变电站综合自动化系统&#xff0c;是我司根据电力系统自动化及无人值守的要求&#xff0c;总结国内外的研究和生产的先进经验&#xff0c;专门研制出的新一代电力监控系统。本系统具有保护、遥测、遥信、遥脉、遥调、遥控功能&#xff0c;可实现无人…

Lakehouse架构指南

什么是数据湖&#xff0c;为什么需要数据湖&#xff1f; 数据湖是一种存储系统&#xff0c;具有底层数据湖文件格式及其不同的数据湖表格式&#xff0c;可存储大量非结构化和半结构化数据&#xff0c;并按原样存储&#xff0c;但没有特定用途。广泛的技术和非技术数据消费者可…

第10讲:Python列表对象查操作之通过切片获取列表中的元素

文章目录1.切片获取列表中的技术要点1.1切片获取列表中的概念总结1.2.切片的语法格式以及含义3.使用切片方法获取列表中元素3.1.定义一个原始列表列表3.2.当step步长为正数时切片的案例3.3.当step步长为负数时切片的案例3.4.使用负数索引作为切片范围4.将切片后的列表赋值给新的…

【收藏】安科瑞企业微电网能效管理系统云平台演示账号

安科瑞 李亚俊 Acrel8757 1、AcrelCloud-1000变电所电力运维云平台 网址&#xff1a;https://acrelcloud.cn/ 演示账号&#xff1a;acrel 密码:123456 2、SCADA电力监控系统 网址&#xff1a;http://scada.acrel-eem.com/ 演示账号&#xff1a;acrel 密码:…

【手把手】教你玩转SpringCloud Alibaba之Nacos Config深入

1、不同环境相同配置问题-自定义Data ID配置 在实际的开发过程中&#xff0c;项目所用到的配置参数有的时候并不需要根据不同的环境进行区分&#xff0c;生产、测试、开发环境所用到的参数值是相同的。怎么解决同一服务在多环境中&#xff0c;引用相同的配置的问题&#xff1f…

Spring Security(7)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e; 有时某些业务或者功能&#xff0c;需要在用户请求到来之前就进行一些判断或执行某些动作&#xff0c;就像在Servlet中的FilterChain过滤器所做的那样&#xff0c…

A Self-Attentive model for Knowledge Tracing论文笔记

原文链接和代码链接A Self-Attentive model for Knowledge Tracing | Papers With Code motivation&#xff1a;传统方法面临着处理稀疏数据时不能很好地泛化的问题。 本文提出了一种基于自注意力机制的知识追踪模型 Self Attentive Knowledge Tracing (SAKT)。其本质是用 Tra…

我的创作二周年纪念日

我的创作二周年纪念日 文章目录我的创作二周年纪念日机缘最初成为创作者的初心:1. 自我简介2. 日常学习过程中的记录收获在创作的过程中都有哪些收获?1. 获得了多少粉丝的关注?2. 获得了多少正向的反馈&#xff0c;如赞、评论、阅读量?3. 认识和哪些志同道合的领域同行?日常…

剑指Offer专项突破版(76)—— 数组中的第 k 大的数字

题目 剑指 Offer II 076. 数组中的第 k 大的数字 思路 假设有个划分函数divide&#xff1a; divide&#xff1a;将num在[l,r]范围内&#xff0c;按照nums[l]进行划分&#xff0c;返回一个数组range&#xff0c;划分为&#xff1a; 所有小于nums[l]的数&#xff1a;移动到nu…

nginx连接前后端分离项目 或 负载均衡映射多个服务器

nginx的两种用法&#xff1a; 打通前后端项目&#xff0c;前后端分离的项目&#xff0c;通过nginx建立连接 负载均衡&#xff0c;一台机器请求转发至多个服务器 1. 前后端分离项目&#xff0c;打通前后端项目 前端项目中的配置&#xff1a; 后端项目的ip和端口号就是正常的 …

verilog实现分频(奇数分频和偶数分频,通用版)

大家好&#xff0c;最近写了一些分频器的设计&#xff0c;发现奇数分频和偶数分频是比较常用分频效果&#xff0c;所以写了一个比较简单的分频代码&#xff0c;适用于奇数分频和偶数分频&#xff08;不考虑占空比&#xff09;&#xff0c;代码已经经过测试&#xff0c;需要可自…

微服务框架 SpringCloud微服务架构 5 Nacos 5.7 Nacos 与 Eureka 的对比

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构5 Nacos5.7 Nacos 与 Eureka 的对比5.7.1 Nacos 注册中心细节分析5.7.2 临…

基于马科维茨与蒙特卡洛模型的资产最优配置模型(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 资本是保险公司经营的核心要素,是资产配置的重要约束条件。本文在马克维茨方法的基础上,将偿付能力引入了资产配置的优化模型。…

VH6501模板工程介绍(一)

VH6501硬件结构 1.式样 1.正向有5个灯&#xff0c;用来指示干扰的触发状态&#xff0c;干扰类型&#xff08;数字或模拟&#xff09;&#xff0c;通道通信以及设备状态。 2.两个DB9接口&#xff08;公头male和母头female&#xff09;&#xff0c;这是CAN或CANFD通道&#xff0…

(二)Java 线程

一、创建和运行线程 1. 方法一&#xff0c;直接使用 Thread Slf4j(topic "c.Test1") public class Demo {public static void main(String[] args) {Thread t new Thread(){Overridepublic void run() {log.debug("running");}};t.setName("t1&qu…

Casein-PEG-Indocyanine green 络蛋白-聚乙二醇-吲哚菁绿 Casein-ICG

产品名称&#xff1a;络蛋白-聚乙二醇-吲哚菁绿 英文名称&#xff1a;Casein-PEG-Indocyanine green 质量控制&#xff1a;95% 原料分散系数PDI&#xff1a;≤1.05 存储条件&#xff1a;-20C&#xff0c;避光&#xff0c;避湿 用 途&#xff1a;仅供科研实验使用&#xff0c;…

【免杀前置课——Windows编程】十三、事件与信号量——事件与互斥体区别、操纵信号量实现游戏多开访问控制(附代码)

事件 事件可以完全控制&#xff0c;其他无法控制线程的执行顺序&#xff0c;但是事件对象可以做到。 ***事件(Event&#xff09;***是在线程同步中最常使用的一种同步对象&#xff0c;事件包含一个使用计数&#xff0c;一个是用来表示自动重置/手动重置的布尔值&#xff0c;另…

[附源码]计算机毕业设计springboot高校后勤保障系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计springboot个性化名片网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…