CSS学习笔记之高级教程(二)

10、CSS 3D 转换

通过 CSS transform 属性,您可以使用以下 3D 转换方法:

  • rotateX()
  • rotateY()
  • rotateZ()

10.1 rotateX() 方法(使元素绕其 X 轴旋转给定角度)

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>

    /* div{
      position: absolute;
    } */
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: #F0AAAE;
      border: 1px solid black;
    }

    div.ex2 {
      width: 200px;
      height: 200px;
      background-color: #E45664;
      border: 1px solid black;
      transform: rotateX(50deg);
    }
  </style>
</head>

<body>

   <div>
    <div class="ex1"></div>
    <div class="ex2"></div>
   </div>
</body>

</html>

运行效果:
在这里插入图片描述

10.2 rotateY() 方法(使元素绕其 Y 轴旋转给定角度)

div.ex2 {
      width: 200px;
      height: 200px;
      background-color: #E45664;
      border: 1px solid black;
      transform: rotateY(50deg);
    }

10.3 rotateZ() 方法(方法使元素绕其 Z 轴旋转给定角度)

div.ex2 {
      width: 200px;
      height: 200px;
      background-color: #E45664;
      border: 1px solid black;
      transform: rotateZ(50deg);
    }

11、CSS 过渡

  • CSS 过渡允许您在给定的时间内平滑地改变属性值。

如需创建过渡效果,必须明确两件事:

  • 您要添加效果的 CSS 属性
  • 效果的持续时间

在这里插入图片描述

示例:

  • transition: width 2s,height 2s;
  • transition: width 2s;
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>

    /* div{
      position: absolute;
    } */
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: #F0AAAE;
      border: 1px solid black;
      transition: width 2s;
    }

    div.ex1:hover{
      width: 400px;
    }

   
  </style>
</head>

<body>

   <div>
    <div class="ex1"></div>
   </div>
</body>

</html>

运行效果:
鼠标放置元素上后,元素宽度会从200px 平滑增加到 400px,动画效果持续2秒钟

11.2 transition-timing-function(规定过渡效果的速度曲线)

transition-timing-function 属性可接受以下值:

  • ease - 规定过渡效果,先缓慢地开始,然后加速,然后缓慢地结束(默认)
  • linear - 规定从开始到结束具有相同速度的过渡效果
  • ease-in -规定缓慢开始的过渡效果
  • ease-out - 规定缓慢结束的过渡效果
  • ease-in-out - 规定开始和结束较慢的过渡效果
  • cubic-bezier(n,n,n,n) - 允许您在三次贝塞尔函数中定义自己的值

11.3 transition-delay (规定过渡效果的延迟(以秒计))。

div {
  transition-delay: 1s;
}

11.4 过渡 + 转换

div {
  transition: width 2s, height 2s, transform 2s;
}

11.5 简写的 transition 属性

div {
  transition-property: width;
  transition-duration: 2s;
  transition-timing-function: linear;
  transition-delay: 1s;
}

可简写为:

div {
  transition: width 2s linear 1s;
}

12、CSS 动画

12.1 @keyframes 规则

如果您在 @keyframes 规则中指定了 CSS 样式,动画将在特定时间逐渐从当前样式更改为新样式。

要使动画生效,必须将动画绑定到某个元素。

  • animation-duration 属性定义需要多长时间才能完成动画。如果未指定 animation-duration 属性,则动画不会发生,因为默认值是 0s(0秒)

12.2 from、to关键词使用:

下面的例子将 “example” 动画绑定到 <div> 元素。动画将持续 4 秒钟,同时将 <div> 元素的背景颜色从 “red” 逐渐改为 “yellow”:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: red;
      animation-name: example;
      animation-duration: 4s;
    }

    @keyframes example {
      from {
        background-color: red;
      }

      to {
        background-color: yellow;
      }
    }
  </style>
</head>

<body>

  <div>
    <div class="ex1"></div>
  </div>
</body>

</html>

12.3 动画完成度(百分制):

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: red;
      animation-name: example;
      animation-duration: 4s;
    }

    @keyframes example {

      0% {
        background-color: red;
      }

      25% {
        background-color: yellow;
      }

      50% {
        background-color: blue;
      }

      100% {
        background-color: green;
      }
    }
  </style>
</head>

<body>

  <div>
    <div class="ex1"></div>
  </div>
</body>

</html>

12.3 延迟动画:animation-delay

  • 负值也是允许的。如果使用负值,则动画将开始播放,如同已播放 N 秒。
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: red;
      animation-name: example;
      animation-duration: 4s;
      animation-delay: 1s;
    }

    @keyframes example {

      0% {
        background-color: red;
      }

      25% {
        background-color: yellow;
      }

      50% {
        background-color: blue;
      }

      100% {
        background-color: green;
      }
    }
  </style>
</head>

<body>

  <div>
    <div class="ex1"></div>
  </div>
</body>

</html>

12.4 设置动画应运行多少次:animation-iteration-count

  • 使用值 “infinite” 使动画永远持续下去
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: red;
      animation-name: example;
      animation-duration: 4s;
      animation-delay: 1s;
      /* 动画运行次数 */
      animation-iteration-count:3
    }

    @keyframes example {

      0% {
        background-color: red;
      }

      25% {
        background-color: yellow;
      }

      50% {
        background-color: blue;
      }

      100% {
        background-color: green;
      }
    }
  </style>
</head>

<body>

  <div>
    <div class="ex1"></div>
  </div>
</body>

</html>

12.5 反向或交替运行动画:animation-direction

animation-direction 属性可接受以下值:

  • normal - 动画正常播放(向前)。默认值
  • reverse - 动画以反方向播放(向后)
  • alternate - 动画先向前播放,然后向后
  • alternate-reverse - 动画先向后播放,然后向前
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div.ex1 {
      width: 200px;
      height: 200px;
      background-color: red;
      position: relative;
      animation-name: example;
      animation-duration: 4s;
      animation-timing-function:ease;
      animation-iteration-count: 2;
      /* 动画以反方向播放(向后) */
      animation-duration: reverse;
    }

    @keyframes example {

      0% {
        background-color: red;
        left: 0;
        top: 0;
      }

      25% {
        background-color: yellow;
        left: 200px;
        top: 0;
      }

      50% {
        background-color: blue;
        left: 200px;
        top: 200px;
      }

      100% {
        background-color: green;
        left: 0px;
        top: 200px;
      }
    }
  </style>
</head>

<body>

  <div>
    <div class="ex1"></div>
  </div>
</body>

</html>

12.6 指定动画的速度曲线:animation-timing-function

animation-timing-function 属性可接受以下值:

  • ease - 指定从慢速开始,然后加快,然后缓慢结束的动画(默认)
  • linear - 规定从开始到结束的速度相同的动画
  • ease-in - 规定慢速开始的动画
  • ease-out - 规定慢速结束的动画
  • ease-in-out - 指定开始和结束较慢的动画
  • cubic-bezier(n,n,n,n) - 运行您在三次贝塞尔函数中定义自己的值

12.7 指定动画的填充模式:animation-fill-mode

  • 在不播放动画时(在开始之前,结束之后,或两者都结束时),animation-fill-mode 属性规定目标元素的样式。

animation-fill-mode 属性可接受以下值:

  • none - 默认值。动画在执行之前或之后不会对元素应用任何样式。
  • forwards - 元素将保留由最后一个关键帧设置的样式值(依赖 animation-directionanimation-iteration-count)。
  • backwards - 元素将获取由第一个关键帧设置的样式值(取决于 animation-direction),并在动画延迟期间保留该值。
  • both - 动画会同时遵循向前和向后的规则,从而在两个方向上扩展动画属性。

12.8 动画简写属性

  div {
        /* 动画名称 */
        animation-name: example;
        /* 动画执行时间 */
        animation-duration: 5s;
        /* 指定动画的速度曲线-规定从开始到结束的速度相同的动画 */
        animation-timing-function: linear;
        /* 延迟多久后执行动画 */
        animation-delay: 2s;
        /* 执行动画次数:循环 */
        animation-iteration-count: infinite;
        /* 反向或交替运行动画:动画先向前播放,然后向后 */
        animation-direction: alternate;
      }

简写为:

div {
  animation: example 5s linear 2s infinite alternate;
}

在这里插入图片描述

13、CSS 工具提示

  • 通过 CSS 创建工具提示(Tooltip)。

13.1 基础的工具提示

创建一个鼠标移到元素上时显示的工具提示:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .tooltip {
      position: relative;
      display: inline-block;
      border-bottom: 1px dotted black;
    }

    .tooltiptext {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
    }

    .tooltip:hover .tooltiptext {
      visibility: visible;
    }
  </style>
</head>

<body>

  <div class="tooltip">鼠标移到我上面
    <span class="tooltiptext">提示文字</span>
  </div>

</body>

</html>

13.2 定位工具提示

  • 右侧工具提示:
.tooltip .tooltiptext {
  top: -5px;
  left: 105%; 
}
  • 左侧工具提示:
.tooltip .tooltiptext {
  top: -5px;
  right: 105%; 
}
  • 顶部工具提示:
.tooltip .tooltiptext {
  width: 120px;
  bottom: 100%;
  left: 50%; 
  margin-left: -60px; /* Use half of the width (120/2 = 60), to center the tooltip */
}
  • 底部工具提示:
.tooltip .tooltiptext {
  width: 120px;
  top: 100%;
  left: 50%;
  margin-left: -60px; /* Use half of the width (120/2 = 60), to center the tooltip */
}

示例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .tooltip {
      position: relative;
      display: inline-block;
      background-color: rgb(107, 119, 189);
      padding: 15px 25px;
      color: white;
      border-radius: 5px;
      margin-left: 200px;
      margin-top: 100px;
    }

    .tooltiptext-top {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
      bottom: 105%;
      left: -30px;
    }

    .tooltip:hover .tooltiptext-top {
      visibility: visible;
    }

    .tooltiptext-left {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
      right: 105%;
      top: 50%;
      transform: translateY(-50%);
    }

    .tooltip:hover .tooltiptext-left {
      visibility: visible;
    }

    .tooltiptext-right {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
      left: 105%;
      top: 50%;
      transform: translateY(-50%);
    }

    .tooltip:hover .tooltiptext-right {
      visibility: visible;
    }

    .tooltiptext-bottom {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
      top: 105%;
      left: 50%;
      transform: translateX(-50%);
    }

    .tooltip:hover .tooltiptext-bottom {
      visibility: visible;
    }
  </style>
</head>

<body>

  <div>
    <div class="tooltip">Top
      <div class="tooltiptext-top">顶部提示</div>

    </div>
    <div class="tooltip">Left
      <div class="tooltiptext-left">左部提示</div>
    </div>
    <div class="tooltip">Right
      <div class="tooltiptext-right">右部提示</div>
    </div>
    <div class="tooltip">Bottom
      <div class="tooltiptext-bottom">底部提示</div>
    </div>
  </div>


</body>

</html>

13.4 工具提示箭头

  • 思路:使用伪元素:::after 伪元素(伪元素可用于在元素内容之后插入一些内容)
  • 顶部提示增加箭头示例( 关键点:border-color: black transparent transparent transparent;):
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .tooltip {
      position: relative;
      display: inline-block;
      background-color: rgb(107, 119, 189);
      padding: 15px 25px;
      color: white;
      border-radius: 5px;
      margin-left: 200px;
      margin-top: 100px;
    }

    .tooltiptext-top {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
      bottom: 105%;
      left: -30px;
    }

    .tooltip:hover .tooltiptext-top {
      visibility: visible;
    }

    /* 使用伪元素添加箭头内容 */
    .tooltiptext-top::after {
      content: "";
      position: absolute;
      top: 100%;
      left: 50%;
      border-width: 5px;
      border-style: solid;
      border-color: black;
      margin-left: -5px;
      border-color: black transparent transparent transparent;
    }
  </style>
</head>

<body>

  <div>
    <div class="tooltip">Top
      <div class="tooltiptext-top">顶部提示</div>
    </div>
  </div>


</body>

</html>
  • 左部提示增加箭头示例( 关键点:border-color: transparent black transparent transparent;
  • 右部提示增加箭头示例( 关键点: border-color: transparent transparent transparent black;
  • 底部提示增加箭头示例( 关键点: border-color: transparent transparent black transparent ;

13.5 淡入的工具提示(动画)

.tooltip .tooltiptext {
  opacity: 0;
  transition: opacity 1s;
}

.tooltip:hover .tooltiptext {
  opacity: 1;
}

示例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .tooltip {
      position: relative;
      display: inline-block;
      background-color: rgb(107, 119, 189);
      padding: 15px 25px;
      color: white;
      border-radius: 5px;
      margin-left: 200px;
      margin-top: 100px;
    }

    .tooltiptext-top {
      position: absolute;
      width: 120px;
      background-color: black;
      opacity: 0.9;
      color: white;
      padding: 10px;
      border-radius: 8px;
      text-align: center;
      visibility: hidden;
      bottom: 105%;
      left: -30px;
      /* 增加淡入动画 */
      opacity: 0;
      transition: opacity 1s;
    }

    .tooltip:hover .tooltiptext-top {
      visibility: visible;
      opacity: 1;
    }

    /* 使用伪元素添加箭头内容 */
    .tooltiptext-top::after {
      content: "";
      position: absolute;
      top: 100%;
      left: 50%;
      border-width: 5px;
      border-style: solid;
      border-color: black;
      margin-left: -5px;
      border-color: black transparent transparent transparent;
    }
  </style>
</head>

<body>

  <div>
    <div class="tooltip">Top
      <div class="tooltiptext-top">顶部提示</div>
    </div>
  </div>


</body>

</html>

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

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

相关文章

2024-05-23 vscode + clang + clangd 解锁 modules

点击 <C 语言编程核心突破> 快速C语言入门 vscode clang clangd 解锁 modules 前言一、准备二、使用备注: 总结 前言 要解决问题: 昨天解锁VS使用modules, 但是不完美, 没有代码提示和补全了, 今天用 vscode clang clangd 解锁 modules, 同时还有代码补全及提示. …

第十一章 文件及IO操作

第十一章 文件及IO操作 文件的概述及基本操作步骤 文件&#xff1a; 存储在计算机的存储设备中的一组数据序列就是文件不同类型的文件通过后缀名进行区分 文本文件&#xff1a;由于编码格式的不同&#xff0c;所占磁盘空间的字节数不同(例如GBK编码格式中一个中文字符占2字…

K8S集群再搭建

前述&#xff1a;总体是非常简单的&#xff0c;就是过程繁琐&#xff0c;不过都是些重复的操作 master成员: [controller-manager, scheduler, api-server, etcd, proxy,kubelet] node成员: [kubelet, proxy] master要修改的配置文件有 1. vi /etc/etcd/etcd.conf # 数…

【设计模式深度剖析】【4】【创建型】【建造者模式】| 类比选购汽车的过程,加深理解

&#x1f448;️上一篇:抽象工厂模式 | 下一篇:原型模式&#x1f449;️ 目录 建造者模式概览定义英文原话直译如何理解呢&#xff1f;建造者模式将对象的建造过程给抽象出来了类比选购汽车 4个角色UML类图1. 抽象建造者&#xff08;Builder&#xff09;角色2. 具体建造者…

盲人社会适应性训练:打开生活的新篇章

在现代社会的快节奏中&#xff0c;每一位成员都在寻求更好的方式来适应环境&#xff0c;对于盲人群体而言&#xff0c;这种适应性尤为关键。盲人社会适应性训练作为一个旨在提升盲人生活质量和独立性的系统性过程&#xff0c;正逐步受到广泛关注。在这一过程中&#xff0c;一款…

安灯呼叫系统解决方案在生产中的应用

工厂安灯呼叫系统是一种用于监控工厂设备运行情况和生产状况的系统。它通常包括各种传感器和监控设备&#xff0c;可以实时监测工厂的生产流程&#xff0c;提供运行状态、故障警报、生产效率等信息。通过工厂安灯系统&#xff0c;工厂管理人员可以及时了解生产情况&#xff0c;…

探数API统计分享-中国各省人均消费支出

根据2017年至2021年的统计数据&#xff0c;我国各省&#xff08;市、区&#xff09;的人均消费支出情况各不相同。其中&#xff0c;上海的人均消费支出最高&#xff0c;达到了2021年的48879元&#xff0c;位居全国之首。紧随其后的是北京&#xff0c;人均消费支出为43640元。 相…

肯尼亚大坝决堤反思:强化大坝安全监测的必要性

一、背景介绍 近日&#xff0c;肯尼亚发生了一起严重的大坝决堤事件。当地时间4月29日&#xff0c;肯尼亚内罗毕以北的一座大坝决堤&#xff0c;冲毁房屋和车辆。当地官员称&#xff0c;事故遇难人数已升至71人。这起事件再次提醒我们&#xff0c;大坝安全无小事&#xff0c;监…

【机器学习高级】强化学习综述

文章目录 一、说明二、强化学习是什么&#xff1f;2.1 与现代神经网络的相异2.2 强化学习属于行为学派2.3 强化学习数学支持 三、强化学习有什么好处&#xff1f;3.1 在复杂环境中表现出色3.2 需要较少的人际互动3.3 针对长期目标进行优化 四、强化学习有哪些用例&#xff1f;4…

到底什么是数字?

来源&#xff1a;Bulletins from the Wolfram Physics Project 一、说明 数字这个概念是最普遍而又最难把控的概念。对数字概念的深度解读&#xff0c;决定人类社会方方面面的整体水平。而且&#xff0c;随着宇宙知识的认识&#xff0c;数字概念也似乎在膨胀中。 外星人乘坐星际…

Transformer,革命性的深度学习架构

Transformer 是一种革命性的深度学习架构,专门设计用于处理序列数据,特别是在自然语言处理(NLP)任务中表现卓越。它由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》中首次提出,打破了当时基于循环神经网络(RNN)和卷积神经网络(CNN)的序列建模常规,…

Tailwind CSS快速入门

文章目录 初识安装Tailwindcss试用安装快速书写技巧扩展好处Todo 初识 只需书写 HTML 代码&#xff0c;无需书写 CSS&#xff0c;即可快速构建美观的网站 Tailwind CSS 是一个功能类优先的 CSS 框架&#xff0c;它通过提供大量的原子类&#xff08;utility classes&#xff09;…

【Android14 ShellTransitions】(二)创建Transition

这一节的内容在WMCore中&#xff0c;主要是创建Transition&#xff0c;初始化其状态为PENDING。 还是我们之前说的&#xff0c;我们以在Launcher界面点击App图标启动某个App为例&#xff0c;来分析Transition的一般流程。启动Activity的流程&#xff0c;在ActivityStarter.star…

[桌面端应用开发] 从零搭建基于Caliburn的图书馆管理系统(C#合集)

图书馆系统要求&#xff1a; 你是一家新市图书馆的经理。 图书馆拥有大量藏书和不断增长的会员。 为了使图书馆管理更加容易&#xff0c;现在创建一个图书馆管理系统。 图书馆管理系统应具备以下功能&#xff1a; 1.图书管理&#xff1a;系统应该能够向图书馆添加新图书。 每本…

【Linux-驱动开发】

Linux-驱动开发 ■ Linux-应用程序对驱动程序的调用流程■ Linux-file_operations 结构体■ Linux-驱动模块的加载和卸载■ 1. 驱动编译进 Linux 内核中■ 2. 驱动编译成模块(Linux 下模块扩展名为.ko) ■ Linux-■ Linux-■ Linux-设备号■ Linux-设备号-分配■ 静态分配设备号…

【设计模式深度剖析】【2】【结构型】【装饰器模式】| 以去咖啡馆买咖啡为例 | 以穿衣服出门类比

&#x1f448;️上一篇:代理模式 目 录 装饰器模式定义英文原话直译如何理解呢&#xff1f;4个角色类图1. 抽象构件&#xff08;Component&#xff09;角色2. 具体构件&#xff08;Concrete Component&#xff09;角色3. 装饰&#xff08;Decorator&#xff09;角色4. 具体装饰…

5分钟在 VSCode 中使用 PlantUML 绘图

去年&#xff0c;写过一篇在 VSCode 中使用 PlantUML 的博客&#xff0c;那时候我嫌弃本地安装麻烦&#xff0c;所以采用的是在本地运行 docker 容器的方法部署的 PlantUML 服务端。不过&#xff0c;现在来看这样还必须依赖在本地手动启动 docker 容器&#xff08;如果有一个不…

7.类和对象

类和对象 当我们没有去了解过java的知识点中 不免产生一些问题&#xff1a; 什么是类&#xff1f;什么是对象&#xff1f; 记住一句话&#xff1a;在java当中 一切皆对象 类&#xff1a;是用来描述一个对象的 而对象是一个真正存在的实体 在Java这门纯面向对象的语言中 我们…

Nginx企业级负载均衡:技术详解系列(10)—— Nginx核心配置详解(HTTP配置块)

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 今天咱们聊聊Nginx核心配置中的HTTP配置块&#xff0c;这个配置块在我们的日常使用中极为常见&#xff0c;它的重要性不言而喻。 HTTP配置块在Nginx的配置架构中占据着核心地位&#xff0c;它直接关系到服务器如何处…

panic: concurrent write to websocket connection【golang、websocket】

文章目录 异常信息原由代码错误点 解决办法 异常信息 panic: concurrent write to websocket connection原由 golang 编写 websocket go版本&#xff1a;1.19 使用了第三方框架&#xff1a; https://github.com/gorilla/websocket/tree/main 代码 server.go // Copyright …