ECharts坐标轴name位置调整全攻略:从定位逻辑到实战技巧
做数据可视化的人大概都经历过这种尴尬图表数据全对、配色也调得不错结果坐标轴的name轴名称像个不请自来的客人要么蹲在右上角跟图例挤在一起要么被画布边缘切掉半个字要么跟刻度标签黏成一团。尤其是在做ECharts大屏或者空间紧张的报表时x轴与y轴的name位置调整几乎成了绕不过去的细节活。这篇文章不绕弯子直接从定位逻辑、核心属性、多场景实操到踩坑记录把ECharts坐标轴name这件事完整拆一遍适合正在被坐标轴折磨的前端开发、数据分析师以及所有用ECharts做图但不想在name上浪费时间的人。1. 先搞懂坐标轴name的定位逻辑1.1 坐标轴的“三层结构”与name的真实身份ECharts里的坐标轴从视觉上拆开看其实叠了三层东西轴线就是那条直线本身可以是实线、虚线甚至隐藏。刻度与刻度标签就是轴上的小短线以及旁边的数字比如x轴的1月、2月y轴的100、200。轴名称name用来描述“这一轴代表什么”的文字比如“月份”“销售额”。很多人会把axisLabel和name搞混。axisLabel是刻度值name是轴的名字。举个例子x轴上“1月、2月、3月”是axisLabel而“时间”才是name。两者的定位体系完全独立axisLabel跟着刻度走name则由nameLocation、nameGap、nameTextStyle这三个配置联合决定。理解这个分层很关键。因为坐标轴name的位置调整本质上不是“移动一段文字”而是在一个已经有轴线、刻度、标签的组件里给另一段文字找一个不冲突的落脚点。默认情况下x轴的name出现在轴的最右端外侧y轴的name出现在轴的最顶端外侧这两个位置在图表空间比较充裕时还好一旦图表容器变窄、图例挤到上面、或者双y轴同时出现马上就开始打架。我在项目里最常遇到的情况就是x轴name和y轴name在右上角撞车或者y轴name被grid区域直接裁掉。1.2 nameLocation的取值与方向敏感nameLocation决定了name“挂在轴的哪个部位”。官方文档里xAxis.nameLocation和yAxis.nameLocation都支持四个值start、middle、center、end。start轴的起始端。对x轴来说是左端对y轴来说是下端。middle/center轴的中部。两者在ECharts内部指向同一个位置就是轴的中点。end轴的末端。对x轴来说是右端对y轴来说是上端。这也是默认值。这里有个容易被忽略的陷阱坐标轴一旦设置了inverse: true反向显示start和end会互换。比如y轴反转后数据从上到下递增此时nameLocation为end时name会跑到下方而不是上方。如果你做的是倒序排行榜、倒计时类图表一定要先确认轴的方向再决定用start还是end。另外一个方向敏感性在于y轴的name默认是横排文字不是竖排的。很多人想要“销售额”三个字竖着贴在y轴旁边发现默认根本不竖排因为ECharts并不会自动根据轴的方向旋转name文字。这个我们后面在nameTextStyle部分单独讲。2. 三个核心属性拆解nameLocation、nameGap、nameTextStyle2.1 nameLocation先决定name“挂在轴的哪里”nameLocation是最先要定下来的参数因为它决定了你在哪个区域做微调。我平时做图的习惯是如果图表是横向展示的时间序列x轴是时间x轴的name基本都会放在middle放在末端容易被右上角的图例挤占y轴的name则放在middle或end取决于左侧是否有空间。来看一个最基础的配置示例option { xAxis: { type: category, data: [1月, 2月, 3月, 4月], name: 月份, nameLocation: middle, nameGap: 30 }, yAxis: { type: value, name: 数值, nameLocation: middle, nameGap: 25 }, series: [{ type: line, data: [120, 200, 150, 80] }] };这段配置的效果是x轴的“月份”落在x轴中间位置的下方y轴的“数值”落在y轴中间位置的左侧。相比默认的end位置这种布局在大屏上更常见因为大屏图表通常两侧和顶部都很紧张把name放到中间能避开右上角的图例、左上角的标题。但注意nameLocation为middle时name会精确落在数值轴范围的中点。如果x轴是数值轴且数据范围是0到1000那name就落在500的位置下方如果数据范围动态变化name也会跟着挪。而如果是类目轴middle会落在第一个类目和最后一个类目的中心点不是画布中心。这个差异在做动态数据接口时经常让人困惑实际上只要记住“name是跟着轴线走的不是跟着画布走的”思路就清晰了。2.2 nameGap距离控制的关键也是负数陷阱nameGap这个名字直译是“名称间隙”官方解释是“坐标轴名称与轴线之间的距离”默认值是15。这个参数是控制name垂直方向对x轴而言或水平方向对y轴而言离轴线多远的最直接手段。不过在实际使用中nameGap并不是“轴线到name”的绝对距离这么简单。它叠加了axisLabel的margin、name自身的padding以及轴线所在的位置。换句话说nameGap给出的是一个基准间距最终渲染位置还会受到其他间距参数影响。nameGap支持设置负数这是一个很有用的“土办法”。比如默认的end位置在轴末端外侧但有时候轴末端已经贴到了grid边界name就被画布裁掉了。此时把nameGap设为负数可以把name往绘图区内侧“拉”回来一点视觉上勉强能显示出来。这种做法适合紧急修复但不建议作为长期方案因为负间距在不同缩放比例下的表现不稳定很容易在屏幕尺寸变化后重新出问题。我实测过一个对比同样一个柱状图nameGap设为15、35、-10三种值视觉差异非常明显。15是默认间距不错但不够透气35会明显增加name和轴之间的距离适合name字数多、字号大的图表-10则让name几乎贴到轴线上甚至和轴线相交只适合极少数强调视觉重叠的设计场景。2.3 nameTextStyle样式与微调的最后一公里nameTextStyle控制name文字的样式支持的属性包括color、fontStyle、fontWeight、fontFamily、fontSize、align、verticalAlign、lineHeight、padding、backgroundColor、borderColor等。其中跟位置调整最相关的是align、verticalAlign和padding。align和verticalAlign控制文字自身的对齐方式。比如y轴name放在middle位置时默认是水平居中对齐这意味着name文字会骑在y轴上。为了让文字完全移到y轴左侧通常配合nameGap一起用也可以用align: right让文字右边缘贴近nameGap设定的锚点。padding在ECharts 5.x中支持数组形式按上、右、下、左的顺序设置内边距。它的作用是给name文字自身增加“呼吸空间”避免文字边缘和轴线、刻度标签贴得太紧。比如x轴name在middle位置时可以设置xAxis: { name: 月份, nameLocation: middle, nameGap: 30, nameTextStyle: { padding: [10, 0, 0, 0], color: #666, fontSize: 14 } }这里的padding: [10, 0, 0, 0]表示上边距10px相当于让name在自身锚点位置的基础上再往下偏移10px。为什么不直接改nameGap因为nameGap调整的是name锚点与轴线的距离而padding调整的是name文字框与锚点的距离两者叠加使用能更精细地控制位置。我在调图表时习惯先用nameGap做粗调再用padding做微调这样即使后面改动nameGap也不容易破坏已经调好的对齐关系。还有一个实用技巧如果想让y轴的name竖排显示nameTextStyle本身没有旋转属性但可以通过在name字符串里插入换行符实现yAxis: { name: 销\n售\n额, nameGap: 10, nameTextStyle: { fontSize: 14, lineHeight: 18 } }这种办法虽然“土”但非常稳定而且可以精确控制每个字的行高。缺点是name如果是从接口动态获取的需要在赋值前做一次字符串处理把长文本拆成单字符加换行。3. 实操三类高频场景从配置到落地3.1 场景一折线图的x轴name居中显示折线图是最常用到name位置调整的图表类型。默认x轴name在右端如果图表右侧有数据点name很容易和最后一个点的数值标签重叠。下面是一个完整的居中方案option { grid: { left: 60, right: 30, top: 50, bottom: 40 }, xAxis: { type: category, data: [周一, 周二, 周三, 周四, 周五, 周六, 周日], name: 星期, nameLocation: middle, nameGap: 35, nameTextStyle: { fontSize: 14, color: #888, padding: [8, 0, 0, 0] } }, yAxis: { type: value, name: 访问量, nameLocation: middle, nameGap: 30, nameTextStyle: { fontSize: 14, color: #888 } }, series: [{ type: line, smooth: true, data: [820, 932, 901, 934, 1290, 1330, 1320] }] };这里x轴name放在x轴中间偏下。注意nameGap: 35配合padding: [8, 0, 0, 0]可以让name既不会贴到刻度标签也不会因为间距太大而显得松散。y轴name放在左侧中间位置用nameGap: 30让文字完全浮在y轴左侧不占用绘图区的横向空间。实际运行中有一个细节值得注意当类目数量很多时比如30个类目x轴中点恰好是第15和第16个类目之间的位置name会盖住中间的柱条或折线。这种情况下我的做法是给name加上一层浅色背景或者把nameGap再加大让name落到数据点区域之外。如果空间实在有限也可以考虑把name移到start位置也就是x轴左端下方虽然不如居中好看但至少不遮挡数据。3.2 场景二双y轴name左右分离不重叠双y轴图表中两个轴的name绑定在同一个图表的左右两侧。最常见的需求是左轴name在左侧中间右轴name在右侧中间而且两者不能互相遮挡。看这段配置option { grid: { left: 70, right: 70, top: 50, bottom: 40 }, xAxis: { type: category, data: [产品A, 产品B, 产品C, 产品D], name: 产品, nameLocation: middle, nameGap: 30 }, yAxis: [ { type: value, name: 销售额, nameLocation: middle, nameGap: 40, nameTextStyle: { align: left } }, { type: value, name: 增长率, nameLocation: middle, nameGap: 40, nameTextStyle: { align: right } } ], series: [ { type: bar, yAxisIndex: 0, data: [320, 450, 280, 510] }, { type: line, yAxisIndex: 1, data: [12.5, 18.2, 9.8, 22.1] } ] };这里的关键是把左右两个y轴的nameGap都设到40左右同时在grid里给left和right各留出70px的边距确保name有足够空间显示。左轴name设置align: left让文字在锚点右侧展开右轴name设置align: right让文字在锚点左侧展开。这样即使两个name字数不同也不会互相挤占。双轴场景中最容易翻车的地方是只调整了grid的left忘了right。结果左侧name显示正常右侧name被画布边缘裁掉。我自己的习惯是在确认name位置之前先把grid的left和right都设成相同值再根据实际显示效果调整这样可以减少排查位置问题的变量。另外如果两个轴的name都放在end位置那么他们会同时出现在图表右上方的区域几乎必撞。建议其中一个轴用end另一个用middle或者干脆都放在middle左右分开。3.3 场景三大屏图表name固定位置与整体协调大屏数据可视化是ECharts使用频率最高的场景之一。在大屏上图表容器经常要随分辨率缩放name如果放在轴末端或中间在不同尺寸下会呈现出完全不同的视觉位置。为了让name在缩放时始终保持协调需要配合resize监听和动态计算。我常用的做法是在初始化图表时根据容器宽度动态设置nameGap和grid边距function initChart() { const chartDom document.getElementById(chart); const myChart echarts.init(chartDom); function updateOption() { const width chartDom.clientWidth; const nameGap width 800 ? 35 : 25; const gridRight width 800 ? 50 : 30; myChart.setOption({ grid: { left: 60, right: gridRight, top: 50, bottom: 40 }, xAxis: { type: category, data: [1月, 2月, 3月, 4月, 5月, 6月], name: 月份, nameLocation: middle, nameGap: nameGap }, yAxis: { type: value, name: 销量, nameLocation: middle, nameGap: 30 }, series: [{ type: bar, data: [120, 200, 150, 80, 70, 110] }] }); } updateOption(); window.addEventListener(resize, () { myChart.resize(); updateOption(); }); }这种做法比单纯调用myChart.resize()更精细因为resize只改变画布大小不会自动重新计算nameGap这类间距参数。实际项目里我通常会把nameGap和grid边距的计算封装成一个函数根据容器宽度分成几个区间每个区间对应一组合理的间距避免出现“图表变宽了name离轴还是那么远”的违和感。如果对name位置的要求苛刻到一定程度比如必须贴合某个背景元素、必须避开某些特殊图形那就别纠结原生name属性了直接用graphic组件去画一个文本位置完全由自己控制。这个思路在下面第5节会展开。4. 常见问题与排查技巧实录4.1 name被画布裁掉了怎么办这是被问得最多的一个问题。解决name被裁的第一步是确认它是不是被grid裁剪了。ECharts的grid是用来约束绘图区域的坐标轴的轴线和刻度标签都在grid范围内但name默认可以超出grid。问题在于如果nameLocation指向的位置本身在画布边缘即使它不超出grid也会超出整个chart容器的边界。这里有一个很多人不知道的坑grid.containLabel只保证刻度标签axisLabel不被裁剪并不包含name。所以你以为设置了containLabel: true就能保住name实际上name该被裁还是被裁。正确的做法是手动给grid留出足够边距grid: { left: 60, right: 40, bottom: 50, containLabel: false }adjusted之后如果name在左侧被裁就加大grid.left如果在底部被裁就加大grid.bottom。千万记住containLabel不等于containName这是ECharts文档里容易误读的地方。4.2 name和刻度标签重叠、像个乱码name和axisLabel重叠通常出现在nameLocation为middle或end时。比如x轴name放在中间nameGap设置得不够大name就会压着中间那个刻度标签。同样是y轴name放在end时如果y轴刻度标签的数字很长比如10000name会和顶端的刻度数字挤在一起。处理办法是分两步先用nameGap拉开name与轴线的距离再用axisLabel.margin拉开刻度标签与轴线的距离。两者配合而不是只调一个。比如xAxis: { name: 月份, nameLocation: middle, nameGap: 40, axisLabel: { margin: 12 } }这里的逻辑是nameGap管namemargin管axisLabel两者互相独立但视觉上共同决定这个区域的疏密程度。我一般会先调margin让刻度标签舒服再调nameGap让name不压到刻度标签顺序反了容易反复试错。4.3 双轴时两个name打架双轴场景的name冲突前面已经提到了核心原则左右分离、避免都用end。如果两个轴都必须用end比如一个在顶部、一个在底部那就要考虑让一个轴的name使用换行或者把其中一个name改为通过title或graphic实现。还有一种容易忽略的情况如果左轴name很长比如“累计销售额万元”即便放在middle也可能会超出grid.left区域和画布左侧边缘重叠。这种情况下除了加大grid.left还可以在初始化前对name做字符串处理function splitAxisName(name, maxLen) { if (name.length maxLen) return name; const lines []; for (let i 0; i name.length; i maxLen) { lines.push(name.slice(i, i maxLen)); } return lines.join(\n); }这个函数把长轴名按每行n个字拆成多行再利用name支持\n的特性实现自动换行。实际效果比在配置里手工写换行符更可控尤其适合接口返回的动态名称。4.4 调了配置没有变化先看版本与缓存有时候配置写了半天页面就是纹丝不动。这时候先别怀疑属性名先看三个地方setOption时是否设置了notMerge: true。如果之前setOption时没有指定ECharts默认会合并配置旧配置可能残留导致新配置没有完全生效。建议在动态更新时显式传入notMerge: truemyChart.setOption(option, { notMerge: true });是否误改了别的轴的配置。图表里如果同时存在多个xAxis或yAxis而你只传了一个对象ECharts会认为是覆盖第一个轴其他轴保持原始状态。双轴场景务必用数组形式。浏览器缓存或热更新延迟。开发环境下修改代码后页面没刷新或者缓存了旧的构建产物也会造成“改了没反应”的错觉。4.5 速查表name相关配置一页纸为了方便日常查阅我把常见需求对应的配置整理成了一张表需求核心配置推荐值/做法将x轴name移动到中间xAxis.nameLocationmiddle配合nameGap调整间距将y轴name移动到左侧中部yAxis.nameLocationmiddle配合nameGap设为20~40下拉文字的间距nameGap15默认、30宽松、负数紧急复位微调name偏移nameTextStyle.padding数组形式按上右下左设置y轴name竖排显示name字符串中插入\n配合nameTextStyle.lineHeight控制行高name被画布裁掉grid.left/right/bottom手动加大边距不要依赖containLabel双y轴name不重叠左右轴nameLocation都设middle配合grid.left和grid.right留白动态缩放时name保持协调nameGap在不同容器宽度下动态计算监听resize重新setOption这张表只是起点真正适合自己的值还是要结合实际图表试几轮才能定下来。5. 两个“野路子”技巧关键时刻救场5.1 用graphic.text完全接管name如果name属性能满足需求我不建议绕路。但遇到以下情况name需要竖排、需要独立于轴的方向、需要跟随某个元素而不是跟随轴、需要设置复杂的背景边框、甚至需要分成多段不同样式nameTextStyle就不够用了。此时可以用ECharts的graphic组件直接在画布上添加一个text元素位置用像素或百分比精确控制option { graphic: { type: text, left: center, top: 95%, style: { text: 月份, fill: #888, fontSize: 14 } }, xAxis: { type: category, data: [1月, 2月, 3月, 4月] }, yAxis: { type: value }, series: [{ type: line, data: [120, 200, 150, 80] }] };graphic里的left、top可以是百分比相对于整个chart容器而不是相对于坐标轴。这意味着它不会随数据范围变化而移动适合做固定位置标注。缺点是要手动对齐如果grid边距调整了graphic位置也需要同步调。我通常把graphic文字放在grid外面比如图表底部下方避免与绘图区内容冲突。5.2 名字太长时自动截断加省略号接口返回的轴名称有时候会长得离谱直接塞进name会把布局撑爆。封装一个处理函数很实用function truncateName(name, maxLen 6) { if (name.length maxLen) return name; return name.slice(0, maxLen) …; }如果想更智能一点可以在截断后用tooltip显示完整名称让鼠标悬停时展示全称。虽然name本身不支持tooltip但你可以在series的data里带上完整信息或者用一个隐藏的graphic元素显示。对于大部分场景先截断再配合title的tooltip联动已经足够实用。写在最后的个人体会坦白说ECharts的name再怎么调本质上也只是一个“静态文本”。它在坐标轴体系里是一个附加说明的角色而不是版式设计的主角。项目做多了之后我现在的习惯是先用nameLocation加nameGap解决90%的问题再用nameTextStyle的padding做细节微调如果框架实在满足不了布局要求就直接上graphic.text不在一棵树上吊死。还有一个小技巧是每次调完name记得把浏览器窗口缩到最小和最大各看一遍很多在默认宽度下看起来完美的间距一换分辨率就原形毕露。坐标轴名称这种细节往往决定了图表是“能看”还是“专业”多花几分钟调一调回报率很高。

相关新闻

ECharts坐标轴name配置全攻略:位置、间距、旋转一次搞定

ECharts坐标轴name配置全攻略:位置、间距、旋转一次搞定

做数据可视化这些年,ECharts 里最让我觉得“既简单又反直觉”的配置,就是坐标轴的 name。明明只是给 x 轴、y 轴加一行说明文字,默认位置却总是出人意料:y 轴名称跑到轴线正上方,x 轴名称贴在刻度起始端,想…

2026/10/2 14:49:11 阅读更多 →
MDIN380驱动开发实战:HDMI/VGA/CVBS/YPBPR接口配置与调试避坑指南

MDIN380驱动开发实战:HDMI/VGA/CVBS/YPBPR接口配置与调试避坑指南

简介:这份资源面向嵌入式视频驱动开发工程师与相关专业学习者,提供MDIN380高清视频处理芯片的驱动参考代码,帮助解决HDMI、VGA、CVBS、YPBPR多接口输出配置与调试问题。压缩包共34个文件,以17个.h头文件和16个.c源文件为主&#x…

2026/10/2 14:49:11 阅读更多 →
二叉树深度怎么求?洛谷P4913三种写法与避坑指南

二叉树深度怎么求?洛谷P4913三种写法与避坑指南

刷题的人应该都体验过这种情况:好不容易看懂了一个知识点,结果落到某道题目上,第一眼还是不知道代码该从哪一行写起。我当年学二叉树的时候,就是被“指针、结构体、递归三件套”劝退过好几回。直到把洛谷 P4913【深基16.例3】二叉…

2026/10/2 14:49:11 阅读更多 →

最新新闻

MATLAB卷积神经网络车牌识别:从定位分割到CNN分类实战

MATLAB卷积神经网络车牌识别:从定位分割到CNN分类实战

简介:基于 MATLAB 的卷积神经网络车牌识别工程,面向希望借助深度学习完成图像识别任务的初学者与开发者。项目覆盖车牌定位、字符分割、数据集预处理、CNN 模型训练与部署等完整流程,并配有详细说明文档与教程视频,可引导用户从零…

2026/10/2 18:17:09 阅读更多 →
OpenCV环境安装与项目实战:从零构建计算机视觉图像处理流程

OpenCV环境安装与项目实战:从零构建计算机视觉图像处理流程

如果你最近准备学计算机视觉,大概率会在推荐页刷到类似《2026 版 OpenCV 天花板教程》。这类视频课程通常有一个共同卖点:环境安装 项目实战,从零开始,最后让你直接跑出几个能看的视觉效果。说句实话,这个定位非常精准…

2026/10/2 18:17:09 阅读更多 →
锂电池SOH评估深度学习实战:充电曲线与CNN-LSTM模型

锂电池SOH评估深度学习实战:充电曲线与CNN-LSTM模型

简介:面向计算机、人工智能及相关专业学生和从业者,这套基于深度学习的锂电池健康状态(SOH)评估项目,可支撑毕业设计、课程设计、大作业或初期项目演示。项目以NASA锂电池容量衰退数据集为对象,实现了1D-CN…

2026/10/2 18:17:09 阅读更多 →
用深度学习估算锂电池SOH:从数据划分到模型部署

用深度学习估算锂电池SOH:从数据划分到模型部署

简介:这是一套基于深度学习的锂电池健康状态评估项目,内含可直接运行的Python源码与详细项目说明,面向计算机、数据科学、人工智能、电子信息等相关专业学生及从业者,适合用于毕业设计、课程设计、课程大作业或工程实践参考。项目…

2026/10/2 18:17:09 阅读更多 →
从零搭建AI工程体系:数据、训练、评估、服务与监控全链路实践

从零搭建AI工程体系:数据、训练、评估、服务与监控全链路实践

1. 从零搭建AI工程体系,为什么我劝你别一上来就调包"ai-engineering-from-scratch"这个标题,第一次看到的时候我愣了一下。市面上讲AI的文章,十篇有八篇在教你pip install几个库,然后调个API,跑个demo&#…

2026/10/2 18:17:09 阅读更多 →
前端学AI:从大模型API到Agent应用的学习路径与实战指南

前端学AI:从大模型API到Agent应用的学习路径与实战指南

说实话,这两年前端圈的人多少都有点焦虑。前几年面试问的是“你怎么优化首屏”,后来问“你怎么设计组件库”,现在面试官张嘴就问“你会不会AI”。我自己也经历过那个阶段:朋友说自己在做AI应用,我想说我也在用AI——Co…

2026/10/2 18:16:09 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →