告别margin和padding做间距:用gap与Flex、Grid实现精准CSS布局
很多人可能都遇到过这种情况写一个按钮组给每个按钮加margin-right最后一个还得单独去掉做一个卡片列表要么用margin-bottom一个一个调要么用父元素设负 margin、子元素设 padding那种祖传套娃更别提高度不固定的场景随手一个margin-top就叠出奇怪间距又找不到是哪儿来的。这些问题的根源不是你不会用margin和padding而是这两个属性本身并不是为布局间距设计的。它们做文本内边距、做元素外边距没问题但一旦拿来做组件之间的间距、做网格间隔、做排列精度就会出现折叠、溢出、手动补偿这些头疼的事。CSS 里其实早就有了更精准的方案Flex 和 Grid 布局下的gap属性还有配套的inset、place-content这些现代简写才是真正该用来做布局间距和定位的东西。这篇文章我会从实际开发角度讲透这件事为什么margin和padding做布局会越写越乱gap是怎么解决这些问题的具体怎么把现有布局改成 gap 写法以及精准布局还有哪些被低估的现代属性。适合写页面写了几年、一直被间距问题折磨的前端开发者也适合刚学 CSS 布局、想从一开始就建立正确姿势的新手。1. 为什么我劝你别再用 margin 和 padding 做布局先别急着换写法得先搞清楚margin和padding在布局场景里到底输在哪儿。只有理解了它们的缺陷你才能在团队评审代码的时候说清楚为什么不用 margin。1.1 margin 的三大硬伤塌陷、百分比错位、负值难维护第一个硬伤是 margin 塌陷collapse。父元素和第一个子元素之间如果你给子元素设了margin-top这个 margin 常常会穿透到父元素外面表现为父元素整体往下掉而不是子元素在父元素里往下挪。我之前排查过一个页面外层容器设置了背景色里面的标题想往下推 20px结果怎么刷新都是整个容器往下移背景色区域也跟着变大就是没看到标题居中——最后确认就是 margin 塌陷。第二个硬伤是百分比计算方式。margin的百分比无论是margin-top还是margin-left都是相对父元素的宽度计算的不是相对父元素的高度。这一点很多人会踩想做一个竖排列表以为子元素每个隔 5% 的高度写margin-top: 5%结果列表的高度直接失控。新手基本都会被这个规则坑一次。第三个硬伤是负 margin。负 margin 本身是合法的有时候也确实能救急比如两列布局里面做重叠效果。但问题是负 margin 的叠加优先级、与兄弟元素的关系、在 Flex 容器里的表现不同浏览器和不同上下文都有微妙差异。我做过一个标签关闭按钮的偏移用负 margin 定位写完从没觉得精确只觉得自己在猜。1.2 padding 的坑盒子被撑大之后计算全靠心算padding的问题相对少一些但它最大的短板就是会改变元素的可视尺寸。好你说现在大家普遍用了box-sizing: border-box那 padding 不会再撑大宽度了。可这只解决了一部分问题——当你在一个已经设置了 flex 宽度的容器里塞 padding实际占用的空间会让兄弟元素被迫压缩。我见过一整个表单布局因为一个输入框的padding-left从 8px 改成 16px结果旁边的按钮宽度突然变了因为它们在同一个 flex 容器里可用空间是固定的。还有一个很隐蔽的padding会参与元素的可点击区域、背景色绘制区域和边框位置。如果你只是想在两个元素之间留空隙却用了 padding等于无形中扩大了某个组件的交互区域或者让背景色多了一块本不该有的区域。这属于用错了工具后面排查起来很绕。1.3 手动计算的脆弱性改一个间距牵一发而动全身拿margin和padding做间距还有一个更实际的问题——它没有一个独立的间距模型。什么意思呢如果你想在竖向列表里统一每个 item 之间 12px用margin-bottom: 12px可以实现但最后一个 item 下面也会多出 12px你又得用:last-child去消除。如果你用padding包一层又得处理负 margin 对齐。问题在于你写出来的代码表达了我要给每个 item 加下边距而不是这个列表的 item 间距是 12px。当你需要一个 16px 的时候得同时改 margin、改 last-child 规则、可能还要改 padding——这不是编程这是在做手工活。一旦布局嵌套层次多起来这种手工活能活活把人拖死。2. gap 属性的核心价值把手动间距变成容器级间距gap不是一个新的概念在 CSS Grid 里早就有了后来 Flexbox 也全面支持了。它最大的特点是把元素之间的间距提升到了容器属性层面你只要在父容器上声明一次容器里所有子元素之间的间隔就自动统一了。2.1 gap 的三种应用场景flex、grid、多列gap可以用在三类容器里Flex 容器、Grid 容器、多列multi-column布局。语法也统一.container { display: flex; gap: 16px; }也可以拆成行间距和列间距.container { display: grid; row-gap: 12px; column-gap: 20px; }在多列布局里同样有效.text-columns { column-count: 3; column-gap: 40px; }这意味着你不用区分这是行方向的间距还是列方向的间距去逐个调整 margin而是在容器层面一次性说清楚行与行之间多少、列与列之间多少。逻辑清晰很多。2.2 gap 为什么不会塌陷它是容器内部的空间划分gap与margin的本质区别在于它不会和容器外的元素发生关系。margin 的概念是这个元素把自己推离邻居所以当两个 margin 相遇时要么取最大值折叠要么产生双倍距离。而gap是容器在自己内部均匀地分配元素之间的空间它不存在元素之间的互相碰撞自然就没有塌陷问题。举一个直白的例子。你要做一排三张卡片中间有两道间距每道 20px。用 margin 的做法可能是每张卡margin: 0 10px然后还要处理左右边界溢出用 gap 的做法就是.card-wrap { display: flex; gap: 20px; }就这一行结束。你不用去想三张卡片需要两个间距、每张卡右侧留多少、最后一张卡怎么办——容器自己会均匀处理。2.3 用表格对比 gap 和 margin 做间距的差异对比维度margin 做间距gap 做间距声明位置每个子元素上单独写父容器上写一次是否塌陷会尤其垂直方向不会最后一个元素是否多出间距会需额外处理不会百分比计算相对父元素宽度容器自动分配间距语义推离邻居元素之间的间隔响应式调整要改多个子元素只改一个容器属性与边框的关系可能被边框影响独立于边框绘制看完这个表就清楚多了做间距这个场景gap基本是全面优于margin的。3. 实操环节把常见布局从 margin 写法改成 gap 写法技术内容光讲概念没用得看实际代码。下面我选了五个我在真实项目里最常见的布局场景每个都给了前后对比大家可以直接拿去参考。3.1 导航栏菜单项间距很多导航栏的第一个版本是这样写的nav classnav a href# classnav-link首页/a a href# classnav-link产品/a a href# classnav-link关于/a a href# classnav-link联系/a /nav旧写法一堆 margin.nav { display: flex; } .nav-link { margin-right: 24px; } .nav-link:last-child { margin-right: 0; }新写法一行 gap 就完了.nav { display: flex; gap: 24px; }看出区别了吗旧写法里我做了一次最后一个元素特殊处理这还只是四个链接如果导航是后端渲染出来的列表项数量不固定last-child还得保证真的能匹配上最后一个元素。而gap完全不用关心这个问题无论有多少个子元素间距始终一致尾部也不会有多余的间隙。3.2 响应式卡片网格卡片列表是间距重灾区。以前常见的做法是.card-grid { display: flex; flex-wrap: wrap; margin: -12px; } .card-item { width: calc(33.333% - 24px); margin: 12px; }这种负 margin 抵消 padding 的做法在一段时间里几乎成了网格布局的标准黑话但它有两个明显问题一是margin: -12px会让容器的背景或边框与内容挤压二是每个卡片的宽度要用 calc 手工计算间距一变这个公式也得变。用 gap 加 flex wrap 的写法是.card-grid { display: flex; flex-wrap: wrap; gap: 24px; } .card-item { width: calc((100% - 48px) / 3); }等一下宽度这里还是用了 calc能不能也省掉能如果你换成 CSS Grid 的话.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 24px; }这种写法就真的完全不用关心间距对宽度的影响了——1fr会自动分配容器剩余空间gap会自动从总宽度里扣除间距所需的空间。你拿到的就是三列、每列至少 240px、列间距 24px这样一个干净的结果。做后台管理系统的卡片列表我会优先推荐这个写法因为它同时解决了列数自适应和间距统一两个问题。3.3 表单输入框之间的纵向间距表单场景里垂直间距写 margin 简直是最容易出 bug 的。一个典型的登录表单form classlogin-form input placeholder用户名 input placeholder密码 button登录/button /form你可能会想当然地写.login-form input { margin-bottom: 16px; }这样写本身没问题但一旦按钮前面想加一个忘记密码链接或者要给输入框包一层有边框的 wrappermargin 的规则就开始失灵——只要包了一层margin 就从撑开兄弟间距变成了把 wrapper 往下顶。我改过好几个这类问题最后都是把 margin 全部删掉换成容器 gap。改造后.login-form { display: flex; flex-direction: column; gap: 16px; }所有输入框、按钮、链接之间统一 16px。以后你想在输入框和密码框之间加一个温馨提示结构上插入就行间距照样自动生效不会被新元素破坏。3.4 操作工具条按钮组右对齐 间距工具条有时候不是单纯的竖排比如一个编辑器的底部操作条左边一组按钮、右边一个主按钮中间用justify-content: space-between拉开。这种场景下按钮之间的间距如果仍然用 margin会出现层级越复杂越难维护的情况.toolbar { display: flex; justify-content: space-between; } .toolbar-left .tool-btn .tool-btn { margin-left: 8px; }旧写法用了相邻兄弟选择器目的就是除了第一个其他按钮都给左边距。这个技巧在纯静态结构里没问题但一旦某个按钮被条件渲染隐藏了选择器就会失效——隐藏后原来它右边的按钮变成第一个了间距就没了。用 gap 的话直接对按钮组这个容器设置.toolbar-left { display: flex; gap: 8px; }无论按钮是动态增删还是条件渲染间距都稳定存在。这才是组件级间距的正确姿势——间距属于承载它的容器而不是属于某一个按钮右边的邻居。3.5 多列文本排版这个场景可能前端接触少但做博客、做侧栏、做电子杂志风格的页面会用到。以前控制多列之间的间距是用column-gap还是margin其实是column-gap它其实早就是 CSS 多列的一部分。但很多人会误用 margin结果列之间的间距完全不对因为 margin 没办法作用在列与列之间这个抽象分隔上。正确写法.article-columns { column-count: 2; column-gap: 40px; }这个例子想说明的是gap这个思路其实贯穿了 CSS 的多个布局模块不只是 Flex 和 Grid。一旦你理解了间距应该在容器上声明很多难以手工控制的场景都会豁然开朗。4. 更精准的不只是 gapinset、place-content 与锚点定位说完 gap标题里还有一个词——更精准。确实间距控制只是现代 CSS 布局进步的一部分还有几个被低估的属性写出来之后整个布局代码简洁度会上一档。4.1 inset替你做绝对定位的元素偏移计算inset是top、right、bottom、left四个属性的合并简写。它本身不算翻天覆地但在精准定位上非常舒服。以前绝对定位一个元素常见写法是.tooltip { position: absolute; top: 100%; left: 50%; transform: translate(-50%, 8px); }用了inset加 margin 自动避让可以用更语义化的方式表达.tooltip { position: absolute; inset: calc(100% 8px) auto auto 50%; translate: -50% 0; }inset的好处是四个值集中在一个属性里阅读时上右下左一眼看全改起来不会漏。而且calc(100% 8px)这种写法的精读比toptransform加偏移要直观得多。4.2 place-content 与 place-items让对齐从调 margin 碰运气变成容器语义化Flex 和 Grid 里对齐一直有justify-content、align-items这些但很多人不知道可以合写成place-content和place-items.center-panel { display: grid; place-content: center; place-items: center; }你不再需要给子元素加margin: auto去居中。居中这个需求现在完全可以从容器层面声明place-content: center表示整个内容区居中place-items: center表示每个格子里的项目居中。这一步在很大程度上替代了给元素设 margin auto的老套路代码也更干净。4.3 锚点定位Anchor Positioning把两个元素的相对位置交给浏览器如果你想做最前沿的精准定位可以关注一下锚点定位Anchor Positioning这个方向。简单说它让你把一个元素比如 tooltip直接挂到页面里另一个元素上不需要你再手动计算偏移也不需要给相对定位的父元素和绝对定位的子元素写一堆 magic number。它的核心写法大约是这样部分浏览器预览版已支持未来会逐渐普及.tooltip { position: fixed; bottom: anchor(top); left: anchor(left); }.anchor-target { anchor-name: --tip-anchor; } .tooltip { position-anchor: --tip-anchor; }就是把一个元素钉在另一个元素身上间距自动跟随。传统布局中这种 tooltip、popover、下拉浮层的位置计算往往靠绝对定位加肉眼微调或者用 JavaScript 动态算getBoundingClientRect()。锚点定位把这些变成了声明式的 CSS。它比margin手动顶一个位置要精准太多因为它的参考点永远跟锚点元素绑定在一起如果锚点移动浮层自动跟着走。当然这个特性的兼容性还处于早期生产环境暂时不建议大面积使用。但关注它的思路很重要CSS 正在把越来越多手工计算变成声明关系。这跟我们今天讲的 gap 是同一条路——用容器和标准属性去描述关系而不是用 margin/padding 去打补丁。4.4 逻辑属性响应式布局下更精准的方向表达还有一个值得一提的精准方案是逻辑属性Logical Properties。传统的margin-left、padding-right是物理方向跟页面书写方向绑定。如果你的页面某一天要适配阿拉伯语等从右到左的排版物理方向的 margin 会让布局整个镜像乱掉。而margin-inline-start、padding-block-end这些逻辑属性表示的是行内方向的起点块方向的终点跟书写方向自动适配。很多组件库已经把内部样式切到逻辑属性了。做国际化项目的同学优先用逻辑属性会明显比物理 margin/padding 稳。5. 常见问题与避坑手册这部分我直接整理成速查都是我实际改造布局时遇到过并验证过的。照着用能少踩很多坑。5.1 gap 和 margin 同时用会叠加吗会。gap和子元素上的margin互不抵消会产生叠加效果。比如 flex 容器gap: 16px子元素又带margin-right: 8px那这个间隙实际就是 24px。改造布局时建议先全局搜索margin把用作间距的清理干净只保留嵌套时需要的内缩场景。5.2 旧浏览器兼容怎么处理gap在单行的 flex 容器里最早是 Safari 和部分老版本浏览器不支持。如果项目需要兼容较旧的浏览器可以给 flex 容器同时写一个 fallback。.nav { margin: -8px; } .nav * { margin: 8px; }然后把 gap 放在更靠后的位置支持 gap 的浏览器会忽略 margin 方案gap 占优不支持的浏览器仍在用 margin 方案。不过现在主流浏览器基本都支持了这个 fallback 在绝大多数实际项目里已经不需要。要不要保留取决于你的用户画像里还有没有大量旧内核设备。5.3 gap 对 flex-grow 尺寸的计算有没有影响有。Flex 布局里flex-grow是在扣除 gap 后的剩余空间上进行分配的。也就是说三张卡片flex: 1中间两道gap: 24px三张卡片平分的是容器总宽度减去 48px之后的剩余空间。这样反而更好——你不用再像以前一样为了把gap换算成 padding 而头痛于最后一排卡片宽度不齐。grid 的1fr同理自动扣除 gap。5.4 网格里 gap 和 border 相接时注意什么如果你给 grid 网格里的每个格子都设了边框又想让相邻格子的边框合并成一条细线单纯的 gap 是做不到边框合并的——因为 gap 隔开的格子之间还有距离你看到的会是两条独立的边框。这时候要么用outline代替border来画线要么回到margin-left: -1px那类补偿技巧。所以 gap 在间距这个领域很强但边框相邻合并这个特殊视觉效果不属于 gap 要解决的问题。5.5 排查建议看到一个布局乱掉先查三层我自己排查间距问题的时候有个固定顺序先看这个元素是不是在 Flex 或 Grid 容器里容器有没有 gap再看元素自身有没有 margin 和 padding是给谁用的最后检查是不是 margin 塌陷或百分比导致的异常。绝大多数布局突然乱了的案例最后都落在 margin 上而不是 gap 上——这已经很说明问题了。还有一个好习惯改造的时候把 margin/padding 只用于元素自身的内外间距、不用于组件排列间距 作为团队代码规范写进文档。规范不一定能约束所有人但新人在被 review 时看到 gap 出现在 diff 里慢慢就会形成条件反射。写在最后的小体会我做前端也有几年了最明显的感受是CSS 布局从手动逼同一排的元素对齐走向声明容器与容器的关系这是体验上的巨大提升。第一次在一个动态增删卡片的后台页面上把所有 margin 清理掉、换成一行gap: 16px的时候我盯着屏幕看了好几秒——因为我知道以后再也不用因为数组里多一个元素而被迫去写last-child补丁了。在实际项目里我现在的默认做法是凡是块级、列表、网格这类多个元素均匀排列的场景第一选择永远是 Flex 或 Grid 容器加 gapmargin和padding只用来做元素内部的微调比如给按钮加点内边距、给卡片内缩一块区域。这个习惯帮我节约了大量调整间距的时间也让代码结构清晰到下一个接手的人不至于想骂人。最后再分享一个很实际的小技巧如果你在重构老项目别一次性全部替换。先挑一个最常变的列表或卡片区把 margin 换成 gap交给视觉同学验证一轮。他们通常只会说间距应该都一样了吧——而你心里清楚这就是 gap 在帮你兜底。CSS 布局正在变得精确、简洁、可声明越早用上这些新特性后面的日子越轻松。

相关新闻

H5前端如何实现AMR音频全平台兼容播放

H5前端如何实现AMR音频全平台兼容播放

1. 为什么AMR在H5移动端是个“隐形雷区”你有没有遇到过这样的场景:一个语音留言功能,在安卓手机上点一下就响,但在iPhone上却只显示一个灰色的播放按钮,点下去毫无反应?或者更糟——页面直接报错,控制台里…

2026/10/15 21:09:14 阅读更多 →
WeChatBot_WXAUTO_SE 角色扮演 Prompt 完全指南:以 prompts/角色2.md 为模板构建微信 AI 角色

WeChatBot_WXAUTO_SE 角色扮演 Prompt 完全指南:以 prompts/角色2.md 为模板构建微信 AI 角色

AI 应用人工智能大模型即时通讯 【免费下载链接】WeChatBot_WXAUTO_SE 【停止维护】LLM API 聚合对话工具。原项目仓库:https://github.com/KouriChat/KouriChat 本项目由iwyxdxl在原项目基础上修改创建。仅供学习,请遵守规定使用,请勿接入公…

2026/10/15 21:08:13 阅读更多 →
机器学习期末复习题怎么刷:从概念到推导的错题反推突击法

机器学习期末复习题怎么刷:从概念到推导的错题反推突击法

简介:面向机器学习初学者的期末备考资料,覆盖机器学习入门到核心算法应用,以一份约20KB的docx文档呈现,内容精炼且体系完整。资料聚焦期末复习场景,系统梳理机器学习核心知识点,题型设置贴近常见考试风格&a…

2026/10/15 21:08:13 阅读更多 →

最新新闻

Unity Profiler性能分析实战:从真机采集到GC优化完整指南

Unity Profiler性能分析实战:从真机采集到GC优化完整指南

1. 为什么每个Unity开发者都该把Profiler当日常工具做Unity这几年,我见过太多项目在编辑器里跑得飞起,一打包到真机就卡成幻灯片。帧率从90掉到22,发热烫手,玩家骂声一片,团队却找不到瓶颈在哪。这种场景几乎每个中大型…

2026/10/15 22:09:39 阅读更多 →
SolidWorks干涉检查假干涉排查:隐藏实体与压缩的区别及选项设置

SolidWorks干涉检查假干涉排查:隐藏实体与压缩的区别及选项设置

1. 先别急着翻设计树:干涉检查报出的"假干涉"从哪来做整机装配干涉检查的时候,我猜你肯定遇过这种场面:明明把弹簧、密封圈、线束、装饰罩这些零件都隐藏了,图纸看着清爽得很,结果一点"干涉检查"&…

2026/10/15 22:09:39 阅读更多 →
collect.js 严格比较设计指南:全方法默认 `===` 的实现原理与 Laravel 差异对照

collect.js 严格比较设计指南:全方法默认 `===` 的实现原理与 Laravel 差异对照

开发工具 【免费下载链接】collect.js 💎 Convenient and dependency free wrapper for working with arrays and objects 项目地址: https://gitcode.com/gh_mirrors/co/collect.js 点击查看 免费下载 导读 本文围绕 collect.js 的**严格比较&#x…

2026/10/15 22:09:39 阅读更多 →
6D位姿估计综述:RGB-D、点云、RGB三条路线选型与复现避坑指南

6D位姿估计综述:RGB-D、点云、RGB三条路线选型与复现避坑指南

简介:这份资源是面向机器人视觉与三维感知方向学习者、研究者的6D位姿估计综述文献总结,以思维导图形式梳理了Vision-based Robotic Grasping综述的核心脉络,帮助读者快速建立从物体定位、位姿估计到抓取估计的整体认知框架。内容覆盖基于RGB…

2026/10/15 22:09:39 阅读更多 →
memtester内存压力测试实战:从原理到脚本化压测

memtester内存压力测试实战:从原理到脚本化压测

简介:这是一份内存压力测试工具 memtester 4.1.2 的完整源码包,面向 Linux/Unix 系统管理员、运维工程师与底层软硬件开发者,用于检测内存条位翻转、数据丢失、地址错误等不稳定因素,也可作为服务器上线前压力验证和故障排查的有力…

2026/10/15 22:09:39 阅读更多 →
MySQL时间类型选型:DATETIME与TIMESTAMP底层差异与避坑指南

MySQL时间类型选型:DATETIME与TIMESTAMP底层差异与避坑指南

MySQL 的时间类型,尤其是在 DATETIME 和 TIMESTAMP 之间反复纠结的情况,我见过太多了。很多人直到线上出现“时间差8小时”或者“2038年数据写不进去”才发现自己对这两个类型的理解还是靠猜。今天把这俩家伙的底层逻辑、行为差异、性能取舍和选型思路一…

2026/10/15 22:08:39 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →