【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现
当前内容所在位置(可进入专栏查看其他译好的章节内容)
- 第五部分 添加动效 ✔️
- 【第 16 章 变换】 ✔️
- 16.1 旋转、平移、缩放与倾斜
- 16.1.1 变换原点的更改
- 16.1.2 多重变换的设置
- 16.1.3 单个变换属性的设置
- 16.2 变换在动效中的应用
- 16.2.1 放大图标(上)
- 16.2.2 带“飞入”特效的文本标签的创建(下) ✔️
- 16.2.3 过渡特效的交错渲染(下) ✔️
- 16.3 动画的性能
文章目录
- 16.2.2 带“飞入”特效的文本标签的创建 Creating “fly in” labels
- 16.2.3 过渡特效的交错渲染 Staggering the transitions
《CSS in Depth》新版封面
译者按
本篇为 16.2 节的下篇,主要介绍剩下两个功能点的视线:飞入特效与菜单项的延迟交错渲染。看似小小一个导航菜单,其交互效果实现起来却一点都不简单。前端开发早已不是完整页面的实现了,更多情况下是结合前端框架进行组件化开发;但无论组件细分到什么程度,CSS 需要处理的细节样式问题一个都少不了,划分组件往往只解决了“如何省力”的问题,始终解决不了“如何省功”这个关键点。想要“省功”,只有先筑牢 CSS 基础,再大量实践,不断复盘提炼,才有可能趋近这个终极目标。
16.2.2 带“飞入”特效的文本标签的创建 Creating “fly in” labels
菜单标签不必一直保持可见状态。默认情况下可以将其隐藏,只在相应位置保留图标告诉用户菜单的位置即可。当用户移动鼠标到菜单或者导航元素上时,再把标签以淡入的方式展示出来。这样,只要鼠标一靠近图标,整个导航菜单就都渲染出来了,其间会用到多个特效:背景和文本标签都使用了淡入特效,且标签是从最终位置略偏左一点开始过渡的(如图 16.9 所示)。
【图 16.9 鼠标悬停时,菜单淡入,文本标签则从左侧滑动淡入】
整个特效中,文本标签同时用到了两个不同的过渡特效:一个是针对透明度,另一个则针对平移变换。试根据代码清单 16.10 同步更新本地样式表。
代码清单 16.10 导航菜单项的过渡特效示例样式代码
@media (min-width: 480px) {.nav-links {display: block;padding: 1em;margin-block-end: 0;}.nav-links__label {display: inline-block; /* 令标签为行内块级元素,以便对其设置变换 */margin-left: 1em;padding-right: 1em;opacity: 0; /* 标签初始隐藏 */translate: -1em; /* 令标签左移 1em *//* 为有变更的属性值设置过渡特效: */transition: transform 0.4s cubic-bezier(0.2, 0.9, 0.3, 1.3), opacity 0.4s linear;}.nav-links:hover .nav-links__label,.nav-links:focus-within .nav-links__label {opacity: 1; /* 鼠标悬停或聚焦状态下,令标签可见 */translate: 0; /* 鼠标悬停或聚焦状态下,令标签同时平移回原位 */}.nav-links__icon {transition: transform 0.2s ease-out;}.nav-links a:hover > .nav-links__icon,.nav-links a:focus > .nav-links__icon {transform: scale(1.3);}
}
该导航菜单尽管只占了屏幕的一小部分,但实际上包含了很多样式;其中某些菜单选择器还写得又长又复杂。
留意上述代码在顶层的 nav-links
元素上添加的 :hover
与 :focus-within
这两个伪类样式。这样一来,无论是用户鼠标划过菜单,还是通过键盘上 Tab 键让菜单项获得焦点,所有标签都会立刻渲染出来。
在隐藏状态下,文本标签利用 translate()
函数向左平移了 1em
;而在淡入过程中,又通过过渡特效回到了原来的位置。这里省略了 translate()
函数的第二个参数,只设置了 x
的值,这样就只产生水平位移。因为元素无需上下移动,所以这样写也没问题。
而自定义的 cubic-bezier()
三次贝塞尔函数值得重点关注。它产生了一个弹跳特效:标签向右移动时超出了最终停止的位置,然后再回到最终位置停下来。其运动曲线效果如图 16.10 所示。
【图 16.10 终点处带弹跳特效的贝塞尔曲线示意图】
我们发现贝塞尔曲线超出了上边框,这就意味着数值超过了过渡特效的最终值。在从 translate: -1em
过渡到 translate: 0
期间,文本标签的变换会短暂到达超出最终数值约 0.15em
的位置,然后再缓缓回到最终数值。同理,我们也可以在定时函数的初始阶段添加弹跳效果,即把第一个控制柄移至矩形框底边以外。但过渡曲线是不可能超出左右两侧边缘的,这不合逻辑。
在浏览器中加载页面,查看最终的过渡效果。弹跳过程一闪而过(subtle),估计得调慢过渡时间才能更好地进行观察调试。这样看上去像是给文本标签引入了重量和动能,使得运动过程更加自然。
16.2.3 过渡特效的交错渲染 Staggering the transitions
至此,导航菜单看上去已经非常不错了,我们最后再做一次优化,让它更加精致。我们会用到 transition-delay
属性,为每个菜单项设置不同的延迟时间。这样就可以让每段飞入动画交错渲染,而不是一次性全部渲染出来,犹如翻滚的 “波浪”(如图 16.11 所示)。
【图 16.11 各导航菜单项将从上到下依次飞入渲染】
要实现这样的页面效果,需要用到 :nth-child()
伪类选择器,根据每个菜单项在列表中的位置进行选中,然后分别给每个菜单项设置连续变长的过渡延迟。请将下列代码清单 16.11 给出的示例样式代码更新到本地样式表,并放在 nav-llinks
样式规则的后面。
代码清单 16.11 为菜单项添加带交错渲染效果的过渡延迟示例代码
.nav-links:hover .nav-links__label,
.nav-links:focus-within .nav-links__label {opacity: 1;translate: 0;
}
.nav-links > li:nth-child(2) .nav-links__label { /* 选中第二个菜单项的标签 */transition-delay: 0.1s; /* 为过渡设置 0.1s 的延迟 */
}
.nav-links > li:nth-child(3) .nav-links__label { /* 选中第三个菜单项的标签 */transition-delay: 0.2s; /* 为过渡设置 0.2s 的延迟 */
}
/* 根据实际需求重复上述操作 */
.nav-links > li:nth-child(4) .nav-links__label {transition-delay: 0.3s;
}
.nav-links > li:nth-child(5) .nav-links__label {transition-delay: 0.4s;
}
选择器 :nth-child(2)
选中的是列表项中的第二项,我们给它加上一些延迟。第三项(即 :nth-child(3)
)上的延迟时间稍长一点,第四、五项的又分别再长一点。我们不需要为第一个元素项操心,因为我们希望首个元素的过渡特效立即生效,无需延迟。
在浏览器中重新加载页面,并用鼠标划过导航菜单来查看效果。整个菜单显得流畅生动。鼠标移开时,所有元素又以同样的交错顺序淡出屏幕。
我们发现这种实现方式存在一个缺点,即菜单项必须和所写的选择器数量一样多。示例代码针对第五个元素也添加了延迟规则,尽管当前的导航菜单只有四个元素。这是一种预防措施(safeguard),以防将来再增加一个菜单项。虽然安全起见我们甚至可以为第六个元素添加规则,但需要意识到菜单数量总是有可能在某个时间点超出已有样式规则的,届时一定要记得在 CSS 中同步添加更多的规则。
提示
类似的重复代码块可以使用预处理器来进行简化。相关示例参见 附录 B。
这样导航菜单就大功告成了,接下来可以给页面添加更多内容。我们将在下一章继续实现,因此请保留示例页面以便随时添加新内容。在此之前,还有几件和变换效果有关的事项需要了解。
关于《CSS in Depth》(中译本书名《深入解析 CSS》)
第 1 版 | 第 2 版 | |
---|---|---|
读者评分 | 原版:4.7(亚马逊);中文版:9.3(豆瓣) | 原版:5.0(亚马逊);中文版:暂无,待出版 |
出版时间 | 原版:2018 年 3 月;中文版:2020 年 4 月 | 原版:2024 年 7 月;中文版:暂无,待出版 |
原价 | 原版:$44.99;中文版:¥139.00 | 原版:$59.99;中文版:暂无,待出版 |
现价 | 原版:$36.49;中文版:¥52.54 起步 | 原版:$52.09;中文版:暂无,待出版 |
原版国内预订 | 起步价 ¥461.00 | 起步价 ¥750.00 |
本专栏为该书第 2 版高分译文专栏,全网首发,精译精校,持续更新,计划今年内完成全书翻译,敬请期待!!!
目前已完结的章节(可进入本专栏查看详情,连载期间完全免费):
- 第一章 层叠、优先级与继承(已完结)
- 1.1 层叠
- 1.2 继承
- 1.3 特殊值
- 1.4 简写属性
- 1.5 CSS 渐进式增强技术
- 1.6 本章小结
- 第二章 相对单位(已完结)
- 2.1 相对单位的威力
- 2.2 em 与 rem
- 2.3 告别像素思维
- 2.4 视口的相对单位
- 2.5 无单位的数值与行高
- 2.6 自定义属性
- 2.7 本章小结
- 第三章 文档流与盒模型(已完结)
- 3.1 常规文档流
- 3.2 盒模型
- 3.3 元素的高度
- 3.4 负的外边距
- 3.5 外边距折叠
- 3.6 容器内的元素间距问题
- 3.7 本章小结
- 第四章 Flexbox 布局(已完结)
- 4.1 Flexbox 布局原理
- 4.2 弹性子元素的大小
- 4.3 弹性布局的方向
- 4.4 对齐、间距等细节处
- 4.5 本章小结
- 第五章 网格布局(已完结)
- 5.1 构建基础网格
- 5.2 网格结构剖析 (上)
- 5.2.1 网格线的编号(下)
- 5.2.2 网格与 Flexbox 配合(下)
- 5.3 两种替代语法
- 5.3.1 命名网格线
- 5.3.2 命名网格区域
- 5.4 显式网格与隐式网格(上)
- 5.4.1 添加变化 (中)
- 5.4.2 让网格元素填满网格轨道(下)
- 5.5 子网格(全新增补内容)
- 5.6 对齐相关的属性
- 5.7 本章小结
- 第六章 定位与堆叠上下文(已完结)
- 6.1 固定定位
- 6.1.1 创建一个固定定位的模态对话框
- 6.1.2 在模态对话框打开时防止屏幕滚动
- 6.1.3 控制定位元素的大小
- 6.2 绝对定位
- 6.2.1 关闭按钮的绝对定位
- 6.2.2 伪元素的定位问题
- 6.3 相对定位
- 6.3.1 创建下拉菜单(上)
- 6.3.2 创建 CSS 三角形(下)
- 6.4 堆叠上下文与 z-index
- 6.4.1 理解渲染过程与堆叠顺序(上)
- 6.4.2 用 z-index 控制堆叠顺序(上)
- 6.4.3 深入理解堆叠上下文(下)
- 6.5 粘性定位
- 6.6 本章小结
- 第七章 响应式设计(已完结)
- 7.1 移动端优先设计原则(上篇)
- 7.1.1 创建移动端菜单(下篇)
- 7.1.2 给视口添加 meta 标签(下篇)
- 7.2 媒体查询(上篇)
- 7.2.1 深入理解媒体查询的类型(上篇)
- 7.2.2 页面断点的添加(中篇)
- 7.2.3 响应式列的添加(下篇)
- 7.3 流式布局
- 7.4 响应式图片
- 7.5 本章小结
- 第八章 层叠图层及其嵌套
- 8.1 用 layer 图层来操控层叠规则(上篇)
- 8.1.1 图层的定义(上篇)
- 8.1.2 图层的顺序与优先级(下篇)
- 8.1.3 revert-layer 关键字(下篇)
- 8.2 层叠图层的推荐组织方案
- 8.3 伪类 :is() 和 :where() 的用法
- 8.4 CSS 嵌套的使用
- 8.4.1 嵌套选择器的使用
- 8.4.2 深入理解嵌套选择器
- 8.4.3 媒体查询及其他 @规则 的嵌套
- 8.5 本章小结
- 第九章 CSS 的模块化与作用域
- 9.1 模块的定义
- 9.1.1 模块和全局样式
- 9.1.2 一个简单的 CSS 模块
- 9.1.3 模块的变体
- 9.1.4 多元素模块
- 9.2 将模块组合为更大的结构
- 9.2.1 模块中多个职责的拆分
- 9.2.2 模块的命名
- 9.3 CSS 的作用域
- 9.3.1 CSS 作用域的就近原则
- 9.3.2 划定作用域的边界
- 9.3.3 CSS 中的隐式作用域
- 9.3.4 关于 CSS 作用域与层叠图层
- 9.4 CSS 模式库
- 9.5 本章小结
- 第十章 CSS 容器查询
- 10.1 容器查询的一个简单示例
- 10.1.1 容器尺寸查询的用法
- 10.2 深入理解容器
- 10.2.1 容器的类型
- 10.2.2 容器的名称
- 10.2.3 容器与模块化 CSS
- 10.3 与容器相关的单位
- 10.4 容器样式查询的用法
- 10.4.1 将模块与所在容器解耦
- 10.4.2 减少重复代码
- 10.5 本章小结
- 第 11 章 颜色与对比
- 11.1 通过对比进行交流
- 11.1.1 模式的建立
- 11.1.2 还原设计稿
- 11.2 颜色的定义
- 11.2.1 色域与色彩空间
- 11.2.2 CSS 颜色表示法(RGB、Hex、HSL、HWB、LAB/OKLAB、LCH/OKLCH)
- 11.3 利用 OKLCH 处理颜色(上篇)
- 11.3.4 从页面其他颜色衍生出新颜色(下篇)
- 11.4 思考字体颜色的对比效果
- 11.5 本章小结
- 第 12 章 CSS 排版与间距
- 12.1 间距设置
- 12.1.1 使用 em 还是 px
- 12.1.2 对行高的深入思考
- 12.1.3 行内元素的间距设置
- 12.2 Web 字体
- 12.3 谷歌字体
- 12.4 @font-face 的工作原理
- 12.4.1 字体格式与回退处理
- 12.4.2 同一字型的多种变体形式
- 12.5 性能因素考量
- 12.5.1 font-display 属性解析
- 12.5.2 可变字体的用法
- 12.6 调整字间距,提升可读性
- 12.6.1 正文的字间距
- 12.6.2 标题、小元素和间距
- 12.7 本章小结
- 第 13 章 渐变、阴影与混合模式
- 13.1 渐变
- 13.1.1 使用多个颜色节点(上)
- 13.1.2 颜色插值方法(中)
- 13.1.3 径向渐变(下)
- 13.1.4 锥形渐变(下)
- 13.2 阴影
- 13.2.1 利用渐变和阴影打造立体感
- 13.2.2 使用扁平化设计创建元素
- 13.2.3 创建混合风格的按钮外观
- 13.3 混合模式
- 13.3.1 为图片上色
- 13.3.2 混合模式的类型
- 13.3.3 图片纹理的添加
- 13.3.4 融合混合模式的用法
- 13.4 本章小结
- 第 14 章 蒙版、形状与剪切
- 14.1 滤镜
- 14.1.1 滤镜的类型
- 14.1.2 背景滤镜
- 14.2 蒙版
- 14.2.1 带渐变效果的蒙版特效
- 14.2.2 基于亮度来定义蒙版
- 14.2.3 其他蒙版属性
- 14.3 剪切路径
- 14.3.1 多边形的裁剪路径
- 14.3.2 Firefox 内置的剪切路径工具
- 14.3.3 其他剪切路径类型
- 14.4 浮动与形状
- 14.4.1 浮动
- 14.4.2 形状的定义
- 14.5 本章小结
- 第 15 章 过渡
- 15.1 状态间的由此及彼
- 15.2 定时函数
- 15.2.1 定制贝塞尔曲线
- 15.2.2 阶跃
- 15.3 非动画属性
- 15.3.1 不可添加动画效果的属性
- 15.3.2 淡入与淡出
- 15.4 过渡到自然高度
- 15.5 自定义属性的过渡设置
- 15.6 本章小结
- 附录
- 附录A:CSS 选择器参考
- 附录B:CSS 预处理器简介
相关文章:
【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…...
webpack3 webpack4 webpack5 有什么区别
性能优化 Webpack 3 性能优化主要依赖开发者手动配置各种插件。例如,在代码分割方面,需要通过CommonsChunkPlugin来实现公共模块的提取,其配置相对复杂。如果配置不当,可能会导致模块重复打包等问题,影响构建效率和最终…...
vue2 升级为 vite 打包
VUE2 中使用 Webpack 打包、开发,每次打包时间太久,尤其是在开发的过程中,本文记录一下 VUE2 升级Vite 步骤。 安装 Vue2 Vite 依赖 dev 依赖 vitejs/plugin-vue2": "^2.3.3 vitejs/plugin-vue2-jsx": "^1.1.1 vite&…...
[创业之路-206]:《华为战略管理法-DSTE实战体系》- 6-关键成功因素法CSF
目录 一、概述 1、定义与起源 2、关键成功因素的定义 3、关键成功因素的来源 4、关键成功因素的确认方法 5、关键成功因素法的步骤 6、关键成功因素法的应用 7、关键成功因素法的优势与局限性 二、 关键成功因素法CSF的应用 1、企业战略管理 2、项目管理 3、绩效管…...
WebRTC服务质量(08)- 重传机制(05) RTX机制
WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…...
Go的select的运行原理
Go语言中的select语句是一种专门用于处理多个通道(channel)操作的控制结构。其运行原理可以概括为以下几点: 1. 监听多个通道 select语句能够同时监听多个通道上的操作,这些操作可以是发送操作或接收操作。每个通道操作都对应se…...
操作002:HelloWorld
文章目录 操作002:HelloWorld一、目标二、具体操作1、创建Java工程①消息发送端(生产者)②消息接收端(消费者)③添加依赖 2、发送消息①Java代码②查看效果 3、接收消息①Java代码②控制台打印③查看后台管理界面 操作…...
3D坐标下,一点在某一线段上的左右方向的判定
3D坐标下,一点在某一线段上的左右方向的判定 代码 代码 #include <iostream> #include <Eigen/Dense>#define M_PI 3.1415926// 计算三点组成平面的参数和变换到XOY平面的变换矩阵 void computePlaneAndTransform(const Eigen::Vector3d& P1, cons…...
Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】
🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...
Linux高级--2.4.5 靠协议头保证传输的 MAC/IP/TCP/UDP---协议帧格式
任何网络协议,都必须要用包头里面设置写特殊字段来标识自己,传输越复杂,越稳定,越高性能的协议,包头越复杂。我们理解这些包头中每个字段的作用要站在它们解决什么问题的角度来理解。因为没人愿意让包头那么复杂。 本…...
【UE5 C++课程系列笔记】14——GameInstanceSubsystem与动态多播的简单结合使用
效果 通过在关卡蓝图中触发GameInstanceSubsystem包含的委托,来触发所有绑定到这个委托的事件,从而实现跨蓝图通信。 步骤 1. 新建一个C类 这里命名为“SubsystemAndDelegate” 引入GameInstanceSubsystem.h,让“SubsystemAndDelegate”继承…...
PyQt实战——随机涂格子的特色进度条(十一)
系类往期文章: PyQt5实战——多脚本集合包,前言与环境配置(一) PyQt5实战——多脚本集合包,UI以及工程布局(二) PyQt5实战——多脚本集合包,程序入口QMainWindow(三&…...
.NET 8.0 项目升级到 .NET 9.0
本文项目从.NETCore3.1开始一直延续到目前,如果您没有升级过,请参考以下文章: .Net Core 2.2 升级到 .Net Core 3.1:https://blog.csdn.net/hefeng_aspnet/article/details/131259537 NetCore3.1或Net6.0项目升级到Net7.0&#x…...
用Python写炸金花游戏
文章目录 **代码分解与讲解**1. **扑克牌的生成与洗牌**2. **给玩家发牌**3. **打印玩家的手牌**4. **定义牌的优先级**5. **判断牌型**6. **确定牌型优先级**7. **比较两手牌的大小**8. **打印结果** 完整代码 以下游戏规则: 那么我们要实现的功能,就是…...
深度学习中的并行策略概述:2 Data Parallelism
深度学习中的并行策略概述:2 Data Parallelism 数据并行(Data Parallelism)的核心在于将模型的数据处理过程并行化。具体来说,面对大规模数据批次时,将其拆分为较小的子批次,并在多个计算设备上同时进行处…...
电商平台能挡住恶意网络爬虫的攻击吗?
爬虫盗取电商数据的步骤 爬虫技术作为一种数据获取工具,正逐渐成为电商平台的一大隐患。网络爬虫不仅能够获取商家关键信息并滋生仿冒网站,还能收集用户敏感信息,对用户的财产安全和隐私造成严重威胁。同时,爬虫攻击还会扰乱正常…...
Jenkins安装方法二
配置环境 和 Jenkins 官方的 yum 源之后进行安装 # 关闭防火墙 $ sudo systemctl stop firewalld $ sudo systemctl disable firewalld# 安装 EPEL 源 $ sudo yum install -y epel-release # 安装 wget $ sudo yum install -y wget# 配置 Jenkins 官方 yum 源 $ sudo wget -O /…...
Nginx性能优化全方案:打造一个高效服务器
提到前面:一个热衷技术,反对八股的资深研发,不卖课不引流,专注分享高质量教学博客。 如果觉得文章还不错的话,可以点赞收藏关注 支持一下,持续分享高质量技术博客。 如果有什么需要改进的地方还请大佬指出❌…...
【每日学点鸿蒙知识】沙箱目录、图片压缩、characteristicsArray、gm-crypto 国密加解密、通知权限
1、HarmonyOS 如何创建应用沙箱目录? 下载文件,想下载到自己新建的应用沙箱目录,有什么方法实现吗? fs.mkdir可以创建目录 参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis…...
XMLHttpRequest的基础知识
get请求 const xml new XMLHttpRequest(); xml.open("GET", "https://jsonplaceholder.typicode.com/todos/1", true); xml.onreadystatechange function () {if (xml.readyState 4 && xml.status 200) {console.log(xml.responseText);} }…...
学习笔记(C#基础书籍)-- C#基础篇
(12.24) C#介绍:《第一章》 特点:语法简洁,面向对象,支持绝大部分的web标准,强大的安全机制(垃圾回收器),兼容性好(遵循.NET的公共语言规范【CL…...
现在有什么赛道可以干到退休?
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:点击跳转到网站 ,对人工智能感兴趣的小伙伴可以点进去看看。 最近,一则“90后无论男女都得65岁以后退休”的消息在多个网…...
【VScode】第三方GPT编程工具-CodeMoss安装教程
一、CodeMoss是什么? CodeMoss是一款集编程、学习和办公于一体的高效工具。它兼容多种主流平台,包括VSCode、IDER、Chrome插件、Web和APP等,支持插件安装,尤其在VSCode和IDER上的表现尤为出色。无论你是编程新手还是资深开发者&a…...
选择屏幕的用法
**************************定义控件*********************************** SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-002. SELECT-OPTIONS bukrs FOR iloa-bukrs . "公司代码 SELECT-OPTIONS swerk FOR iloa-swerk OBLIGATORY . "工厂 SELECT-O…...
VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试
VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试 一、打开设备管理器看主机(Window系统)是否识别出串口,我这边显示的串行通信端口是COM3 二、打开VirtualBox,设置串口和USB设备 串口设置: 启用…...
CH340系列芯片驱动电路·CH340系列芯片驱动!!!
目录 CH340基础知识 CH340常见类型 CH340引脚功能讲解 CH340驱动电路 CH340系列芯片数据手册 编写不易,仅供学习,请勿搬运,感谢理解 常见元器件驱动电路文章专栏连接 LM7805系列降压芯片驱动电路降压芯片驱动电路详解-CSDN博客 ME62…...
Unity中使用环形缓冲区平滑抖动值
环形缓冲数据结构,就是如下图一样的一个收尾相接的列表 在index指针指到4时,再往里添加数据,index就会指向0,并覆盖已有数据。 如何绘制Sin函数,请看下面一篇文章 Unity中如何实现绘制Sin函数图像-CSDN博客 接下来要…...
如何通过HTTP API插入或更新Doc
本文介绍如何通过HTTP API向Collection中插入或更新Doc。 说明 若调用本接口时Doc Id已存在,则等同于更新Doc;Doc Id不存在,则等同于插入Doc。 若调用本接口时不指定Doc Id,则等同于插入Doc,DashVector会自动生成Doc …...
RTMW:实时多人2D和3D 全人体姿态估计
单位:上海AI实验室 代码:mmpose/tree/main/projects/rtmpose 系列文章目录 RTMO: 面向高性能单阶段的实时多人姿态估计 目录 系列文章目录摘要一、背景二、相关工作2.1 自上而下的方法。2.2 坐标分类。2.3 3D Pose 3 实验方法3.1.1 任务限制3.1.3训练技…...
《Java源力物语》-3.空值猎手
~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” \quad 夜色渐深,在一处偏僻小径上,月光透过浓密的源力云层,在地面上投下斑驳的光影。String正独自练习着刚从…...
macrodroid通过http请求控制手机运行宏
macrodroid adb命令 adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS例:http请求手机播放指定MP3文件 声音素材_电量过低提醒 新建一个宏 添加触发器-连接-http服务器请求 路径随意填,最好不要有特殊符号,不然浏览器识别链接会出错,…...
Redis分片集群+MQ处理高并发
Redis的三大集群模式:主从复制、哨兵模式和Cluster模式。每种模式都有其特点和应用场景,具体如下: 主从复制模式:适用于数据备份和读写分离场景,配置简单,但在主节点故障时需要手动切换。哨兵模式ÿ…...
Linux内核 -- UIO (User-space I/O) 简介与使用笔记
UIO (User-space I/O) 简介 UIO (User-space I/O) 是 Linux 内核提供的一种机制,用于简化设备驱动的开发。它将设备的硬件资源(如内存映射、中断等)通过简单的接口暴露给用户空间程序,从而使用户可以在用户空间编写复杂的设备逻辑…...
《计算机组成及汇编语言原理》阅读笔记:p86-p115
《计算机组成及汇编语言原理》学习第 6 天,p86-p115 总结,总计 20 页。 一、技术总结 1.if statement 2.loop 在许多编程语言中,有类种循环:一种是在程序开头检测条件(test the condition),另一种是在程序末尾检测条件。 3.C…...
Python爬虫实战(保姆级登网页信息爬取教程)
此blog为爬虫实战教学,代码已附上,可以复制运行。若要直接看实战代码翻到博客后半部分。 本文使用selenium库进行爬虫,实现爬取数据操作,此库是通过模仿用户的操作进行对页面的处理。了解了这个思维模式,可以对代码进…...
探索CSDN博客数据:使用Python爬虫技术
探索CSDN博客数据:使用Python爬虫技术 在数字化的浪潮中,数据的获取与分析变得日益关键。CSDN作为中国领先的IT社区和服务平台,汇聚了海量的技术博客与文章,成为一座蕴藏丰富的数据宝库。本文将引领您穿梭于Python的requests和py…...
PPT画图——如何设置导致图片为600dpi
winr,输入regedit打开注册表 按路径找,HKEY_CURRENT_USER\Software\Microsoft\Office\XX.0\PowerPoint\Options(xx为版本号,16.0 or 15.0或则其他)。名称命名:ExportBitmapResolution 保存即可,…...
uniapp——APP读取bin文件,解析文件的数据内容(二)
文章目录 读取bin文件内容,发送给蓝牙设备;上传文件返回数据格式通过URL路径获取文件对象,读取文件的数据内容file对象返回数据格式 读取bin文件内容,发送给蓝牙设备; 上传文件,根据返回路径,解…...
Paddler负载均衡器
Paddler负载均衡器 Paddler本身是用Go语言编写的,没有直接的Python接口,但可以通过以下方式在Python中使用: 执行命令行调用 在Python中可以使用 subprocess 模块来调用Paddler的命令行工具,实现负载均衡功能 。例如: import subprocessdef start_paddler_agent():com…...
`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别
文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…...
clicbot可立宝编程 易错归纳笔记
1、屏幕播放表情模块和等待时间 易错点1: (1)等待时间: (a)不是等上一个代码执行完,再执行等待时间,这是错误的。 (b)等待时间上面的代码1刚开始执行,上面的代码2也刚开始执行,不是等到代码1执行完…...
MySQL 数据”丢失”事件之 binlog 解析应用
事件背景 客户反馈在晚间数据跑批后,查询相关表的数据时,发现该表的部分数据在数据库中不存在 从应用跑批的日志来看,跑批未报错,且可查到日志中明确显示当时那批数据已插入到数据库中 需要帮忙分析这批数据丢失的原因。 备注:考虑信息敏感性,以下分析场景测试环境模拟,相关数据…...
基于人工智能时代政务智慧转型的实现前景初探
去年6月,我有幸聆听了由华政公共管理与政治学院精心组织的2019年MPA研究生高端论坛,上午场:由董海军(中共上海市委机构编制委员会办公室处长)主讲的深化机构改革的探索与实践,以及下午场:由束金…...
【论文笔记】Visual Alignment Pre-training for Sign Language Translation
🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: Visual Alignment Pre-tra…...
一起学Git【第五节:git版本回退】
git reset 是 Git 版本控制系统中一个非常强大的命令,它可以用来重置当前分支到指定的状态,即执行撤销操作或者回退至之前的某一版本,他可以回退至之前的某一个提交状态。有三种主要的用法:git reset --soft;git reset --hard;git reset --mixed; 对比如图: 1.git res…...
金蝶V10中间件的使用
目录 环境准备搭建过程配置修改应用部署 环境准备 Linux内核服务器JDK1.8安装包:AAS-V10.zip程序包:***.war 搭建过程 将安装包上传至服务器opt目录下,官方给定的默认服务主目录为“/opt/AAS-V10/ApusicAS/aas/”;解压安装包(解…...
hi168大数据离线项目环境搭建
hi168大数据离线项目环境搭建 ## **1. 服务器准备**##### 1.1 创建集群应用节点 集群服务器使用“我的应用“中的Ubuntu22.04集群模版创建三个节点应用,并且进入“我的应用”中去修改一下节点名称(node1对应master,node2对应hadoop1…...
Ubuntu 22.04安装Docker
陈拓 2024/10/19-2024/12/26 0. 概述 docker是容器(Container),有点像一个轻量级的虚拟机。 容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行。Docker将镜像文件运行起…...
穿山甲等广告联盟依据哪些维度给APP、小程序结算广告变现收益
媒体在开展广告变现商业化时,最关心的是变现收益问题,所运营的不同体量的APP、小程序能产生多少广告变现收益。#广告联盟# 广告变现的价格、收益不是一成不变的,广告转化是影响广告收益的重要因素之一。广告平台针对整个变现链路上的各环节&…...
【ES6复习笔记】迭代器(10)
什么是迭代器? 迭代器(Iterator)是一种对象,它能够遍历并访问一个集合中的元素。在 JavaScript 中,迭代器提供了一种统一的方式来处理各种集合,如数组、字符串、Map、Set 等。通过迭代器,我们可…...