新闻详情

新闻详情

首页 / 资讯中心 / 详情

CSS居中方案详解:水平、垂直与水平垂直居中

发布时间:2026/9/29 1:19:05来源:尧图网络
CSS居中方案详解:水平、垂直与水平垂直居中
做了这么多年前端CSS里被问得最多的问题不是那些花哨的动画也不是复杂的布局框架反而是“元素怎么居中”。水平居中、垂直居中、水平垂直居中这三个词看着差别不大放在不同场景里却各有各的脾气。同样的代码换个父容器、换个元素类型可能就完全失效。这也正是CSS居中最折磨人的地方你背了很多方案却不知道眼前这个场景该用哪一个。这篇文章我把日常开发里真正用得上的居中方案按水平、垂直、水平垂直三类全部拆开讲一遍。不只是给代码还会解释为什么能用、为什么失效、在什么场景下选型。尤其是新手一定遇到过的那种“明明写了text-align: center却没用”的情况我会连原因带排查方法一起说清楚。前端学习者和刚转行写页面的人应该都能从这里拿到一张可以直接照着干的地图。1. 居中的底层逻辑先搞清楚元素处于什么状态1.1 盒模型是理解居中的第一步很多居中的问题表面上差在样式写法本质上差在没搞懂盒模型。一个元素占据的空间由content、padding、border、margin四部分构成width和height默认只作用于content区域box-sizing换成border-box之后才会把padding和border包进来。这个差异会影响你对“剩余空间”的判断也会影响绝对定位时元素尺寸的计算。举个最常见的例子你设置了width: 100px又设置了padding: 20px如果是默认的content-box整个元素实际水平占位是140px如果box-sizing: border-box实际占位就是100px。这两个值在margin: 0 auto水平居中时没有本质区别因为auto会吃掉剩余空间但在绝对定位里比如top、left都设置之后再用margin: auto居中子元素宽高一旦因为box-sizing变化计算出来的“剩余空间”就完全不同了。所以我建议动手写居中之前先默认加上* { box-sizing: border-box; }至少能少踩三分之一兼容性的坑。盒模型还有一个容易被忽视的点margin在竖直方向会发生折叠。父子元素之间、兄弟元素之间的margin top和margin bottom可能会合并成一个更大的值这会让垂直方向的间距变得难以预测也会间接影响“看起来是否居中”的判断。比如一个flex容器里如果子元素设置了margin-top: auto来实现底部贴齐这时父容器又有margin某些浏览器里可能出现递归折叠的意外。别看这只是边距问题实际项目里很多“怎么调都不居中”的视觉偏差根源就在这里。1.2 元素类型决定可用的居中手段CSS里的元素类型大致分三类块级元素、行内元素、行内块级元素。块级元素占满整行宽度默认是100%所以“水平居中”对它来说有点微妙如果宽度是auto它本身已经占满了没有剩余空间再谈居中就无从谈起只有把宽度限定住或者让宽度收缩到内容大小margin: 0 auto才能发挥作用。行内元素则完全不同它和旁边的文本处在同一行内唯一的水平居中方式是让父容器text-align: center。行内块级元素是我平时遇到最容易出问题的一类。input、img、button这类替换元素很多默认都带行内块特性。它们既有块级元素能设置宽高的能力又保留着行内元素受文本对齐影响的特性。所以有人搜“css中怎么把input居中”会得到一堆看似矛盾的答案有人说text-align: center有人说margin: 0 auto其实都对关键要看input自身是否设置了宽度。如果它是固定宽度且没变成块级那就需要display: block加margin auto如果宽度是auto放在一个有text-align: center的父容器里反而是最简单的方案。所以别死记代码先判断元素是哪一种类型。1.3 是否脱离文档流居中策略的岔路口普通文档流里的元素走的是文本和块级的传统对齐逻辑可一旦元素设置了position: absolute或fixed它就脱离了文档流不再受父容器text-align、vertical-align这些常规样式影响所有居中思路都得切换到“定位坐标系”上来。这里有一个很关键的点绝对定位元素的定位参考是最近的定位祖先元素也就是position不是static的父级或更高级元素。很多人明明给子元素写了absolute还加了top和left却发现它根本不在预期的父容器里居中往往是因为父容器没有设置position: relative。这个细节在小项目里不容易暴露一旦页面上有多层嵌套的弹窗、浮层或卡片定位参考一旦搞错整个居中坐标就全歪了。另外fixed元素是相对于视口定位的它不会跟着滚动条走。如果你想把一个悬浮按钮固定在屏幕右下角用fixed再配合偏移计算是合理的但如果你只是想让某个弹窗固定在页面内容区中央还带着滚动这时候就要小心fixed是钉在视口上的滚动之后会盖住其他内容。区分清楚“相对父元素定位”和“相对视口定位”再谈用top、left还是transform来居中会简单很多。2. 水平居中的完整方案由浅入深2.1 最简单的一行代码text-align: centertext-align: center大概是CSS里最基本的水平居中手段但它的作用对象是文本和行内元素不是块级元素。只要父容器设置了text-align: center里面的文字、span、a、img、input这些行内级别的元素全部都会在水平方向上居中。不要小看这个方案在布局中的作用。导航菜单里的菜单项如果整个菜单是flex布局通常直接用flex的水平居中即可但如果是传统列表布局每个菜单项是inline-block那么给ul设置text-align: center就能让列表整体水平居中简单又稳定。类似地一组按钮想排在页面中央不一定要给每个按钮算width和margin父容器text-align: center就够用。这个方案的核心限制就很明确了子元素不能是独占一行的块级元素。如果你给父容器写了text-align: center却发现里面的div纹丝不动那不是text-align失效是作用对象选错了。这种情况下要么把子元素从div换成inline-block要么改走margin auto方案。2.2 定宽块级元素的经典方案margin: 0 auto块级元素水平居中最经典、最符合直觉的就是margin-left和margin-right都设为auto。比如一张卡片宽度600px想要在页面中间展示写margin: 0 auto就能实现。为什么这么写有效因为CSS对auto有一套自动分配机制当元素宽度已经确定水平方向又有剩余空间时auto会把剩余空间均匀分给左右两侧的margin。剩余空间被均分元素自然就居中了。这里有个关键前提元素必须是有明确宽度的。width可以是固定值也可以是max-width配合百分比甚至可以是title里那种根据内容收缩的宽度但绝对不能是默认的auto。如果width是auto块级元素默认会拉伸到父容器全宽此时剩余空间为0auto左边距和右边距各分到0也就谈不上居中了。还要注意浮动元素和绝对定位元素不适用margin auto。浮动元素的水平位置由float的方向决定margin auto不会把它推到中间绝对定位元素虽然有width但它的水平位置由left和right决定如果只有left设置值右margin的auto也不会分配剩余空间。理解了这个就不会在flex或grid布局里因为某个“不听话”的auto margin浪费时间了。2.3 不定宽块级元素怎么办日常开发里经常遇到一类情况一个div里只有一行文本或者只有一张小图想要整个div水平居中但又不好给它定死宽度。这时候有几个很不错的手段。第一个是display: table。给这个要居中的元素设置display: table它会像表格那样收缩到内容宽度不再占满整行然后margin: 0 auto就生效了。这种写法兼容性好几乎不需要考虑浏览器版本问题缺点是语义上有点别扭div看起来像表格但仅仅为了居中效果这个代价可以接受。第二个是width: fit-content。这个属性更现代化让元素宽度收缩到内容尺寸等价于“由内容决定宽度”然后照常配margin auto。它的浏览器兼容性已经很好了但如果你要维护的是老项目还是display: table更稳。另外父容器text-align: center配合子元素display: inline-block也能达到类似效果这种方式适合希望子元素保留行内盒特性的场景。2.4 flex 布局下的水平居中flex布局出现之后水平居中变得异常简单。只要父容器设置display: flex; justify-content: center子元素不管宽度是定值还是内容自适应都会在主轴水平方向上居中。flex的另一个好处是它可以同时控制多个子元素的排列比如让一组按钮居中同时保持间隔gap这在传统方案里要额外处理间距在flex里只要加一个gap属性就全部搞定了。flex居中与text-align是有本质区别的。text-align处理的是文本行框内的对齐而justify-content处理的是flex容器里项目的位置。前者会影响文本的换行和行内元素的基线对齐后者只关心所有项目作为一个整体在主轴上的排布。理解这个区别你在遇到“flex容器里文字默认左对齐”的情况时就不会慌文字在flex项目内部依然是左对齐的justify-content只负责项目整体的水平位置文字本身的对齐要靠text-align或flex内的其他属性来控制。3. 垂直居中一块难啃的骨头3.1 单行文本垂直居中line-height垂直居中比水平居中麻烦得多因为传统的文档流里块级元素的高度默认由内容撑开想要在一个固定高度的容器里垂直居中并没有一个天然的属性直接对应。最简单的情况是单行文本垂直居中让line-height等于容器高度即可这是按钮、导航栏、小标签里最常见的做法。原因在于行高决定了文本所在行框的高度而文本在行框内是垂直居中的。给一个高度为80px的div设置line-height: 80px文本就会出现在这80px高度的中间位置。这个技巧对单个文本节点非常有效但有两个限制一是文本不能换行换行后行框会被撑开行高和容器高度的对应关系就乱了二是如果容器内还有padding实际文字区域的高度就不等于容器高度居中效果会出现偏差。如果想在单行文本场景用得更优雅可以把line-height放在子元素上父容器固定高度子元素line-height等于父容器高度。不过更统一的做法是用inline-block加vertical-align: middle来模拟垂直居中父容器设置固定高度和line-height子元素设置为inline-block同时vertical-align: middle这样即使子元素是多行文本也能收到相对居中的效果。这个技巧在老项目里很实用可以处理多行文本垂直居中问题后续我会在表格单元格方案里再展开。3.2 多行文本垂直居中table-cell 的复古方案多行文本垂直居中最经典的就是display: table-cell配合vertical-align: middle。它的原理是模拟表格单元格的行为表格单元格天然支持内容垂直居中所以只要让父容器变成table子容器变成table-cell就能复用这个能力。实现上一般是父容器display: table子容器display: table-cell带上vertical-align: middle再给子容器一个宽度比如100%。此时子容器的高度由父容器决定但子容器里的多行文本会以整块内容为单位垂直居中。这个方案最大的优点是兼容性极好IE6、IE7的时代都能用缺点是table-cell对高度的处理有时比较别扭父容器必须显式设置高度否则table-cell的高度无法撑起来你会看不到任何居中效果。我曾经用这个方案做了一个小弹窗弹窗高度固定内里有两段说明文字一段多行一段单行还有一个小按钮。用table-cell做外层容器里面内容整体垂直居中再配合内层元素控制间距效果非常稳定。不过在flex普及之后table-cell更多是作为“兼容老环境”或者“不引入复杂布局”的备选并不推荐在新项目里大量使用因为flex对这个场景的语义表达更清晰代码也更简洁。3.3 绝对定位做垂直居中一个容易踩坑的方案绝对定位加上top: 50%是最常见的垂直居中思路但它并不是开箱即用的。top: 50%只是把子元素的顶边移动到父容器垂直方向的50%位置想要让子元素真正居中还必须把它自身高度的一半再向上偏移。这有两种实现方式一种是已知子元素高度用margin-top负一半高度另一种是未知高度用transform: translateY(-50%)。为什么很多人写了top: 50%子元素却没有居中因为他们漏掉了偏移自己一半这个步骤。用margin-top时你需要明确知道子元素的实际高度否则没法计算负值。比如子元素高度100pxmargin-top: -50px高度200pxmargin-top: -100px。这在静态宽高固定的场景没问题但一旦内容是动态的高度不固定margin-top就失效了这时候transform: translateY(-50%)就登场了它的百分比是相对于元素自身尺寸计算的理论上子元素高度再怎么变化都能自动正确偏移。不过transform方案也有它的小坑如果子元素的父容器不是相对定位而是static或者父容器高度没有设定top: 50%的百分比无法正常计算最终位置就会跑到奇怪的地方。另外transform会生成一个合成层在个别低端设备上可能导致文字渲染变虚所以如果对性能或者渲染质量有严格要求可以考虑用flex的方案替代。至少在我实际项目里遇到文字发虚的报告排查到最后一半以上都跟transform的合成层有关。3.4 垂直居中的首选方案flex如果让我只推荐一个垂直居中方案我会毫不犹豫选flex。给父容器设置display: flex; align-items: center子元素就在交叉轴上垂直居中了。这个方案不要求你知道子元素的高度也不要求显式给父容器设置固定高度子元素内容再多也能保持居中简直是为动态内容量身定做的。需要注意的是flex容器里align-items的默认值是stretch也就是子元素会被拉伸到与容器交叉轴同高。如果你只写了display: flex没有写align-items: center子元素很可能看起来是“被拉满了”而不是垂直居中。这个细节是flex新手最容易栽的地方。有人问“flex布局为什么不垂直居中”十有八九就是漏了align-items: center。flex的另一个隐藏能力是子元素自身也可以用margin: auto这个属性在flex容器里居中。不同于块级环境下margin auto只能管水平方向在flex容器里子元素设置了margin: auto它会在主轴和交叉轴两个方向上都尝试吃掉剩余空间实现双轴居中。比如父容器display: flex子元素margin: auto这行代码已经实现了水平和垂直双重居中。这种写法在分发按钮组、侧边栏卡片内元素等场景下非常灵活值得在实战里多用。4. 水平垂直居中把两个方向一起搞定4.1 多场景方案总览水平垂直居中说白了就是同时控制主轴和交叉轴。官方给过很多写法实际使用中不外乎五种主流方案绝对定位加负margin、绝对定位加transform、绝对定位的inset全0加margin auto、flex双轴居中、grid的place-items。它们各有取舍我用一个表格先把适用场景和注意点列出来。方案核心代码是否依赖子元素尺寸适用场景绝对定位 负margintop/left 50% margin减半依赖需要定宽高尺寸固定的弹窗、卡片绝对定位 transformtop/left 50% translate(-50%, -50%)不依赖不定尺寸浮层、微标、加载动画inset 0 margin autotop/right/bottom/left 0 margin auto需要定宽高固定尺寸大面积浮层flexjustify-content center align-items center不依赖日常页面、卡片、按钮组griddisplay grid place-items center不依赖全屏或容器级居中、网格布局4.2 absolute margin auto 的巧妙写法这个方案平时不常被提起但非常巧妙。父容器设置position: relative子容器设置position: absolute四个方向top、right、bottom、left都设成0再给子元素一个明确的宽高和margin: auto。这时绝对定位元素在双轴上都会被拉伸到父容器尺寸但由于宽高固定拉伸产生的剩余空间会被margin的auto均分到四边子元素就恰好被推到正中央。这个方案最妙的地方在于你不用像负margin方案那样每次计算一半宽高一厘margin auto帮你把剩余空间的分配全部接管了。但它的约束也很明确子元素必须有明确宽高否则四个方向为0再加上margin auto元素会直接拉伸到整个父容器尺寸结果就不是我们要的居中。实战中这个方案适合做全屏或者大面积遮罩里的居中内容层因为只需要父容器是相对定位子容器给个宽高和四个方向0再加margin auto不需要关心内容是图片还是文本。我用它做过图片预览弹层宽高固定为600px和400px在桌面端显示得很稳代码也很干净。4.3 transform版不定尺寸浮层的救星如果内容高度不固定又想水平垂直居中最优解就是绝对定位加transform。父容器position: relative子容器position: absolute设置top: 50%left: 50%再写transform: translate(-50%, -50%)。注意顺序先定位到父容器的一半再把自己向左、向上偏移自身宽高的一半最后的效果就是元素中心点落在父容器中心点上。这个方案几乎是所有弹窗、提示框、loading动画的标配因为不需要知道内容具体多高多宽。比如一个动态加载的提醒卡片里面的文案数量可能从一行到五、六行不等用flex当然也能居中但如果你必须在绝对定位坐标系里处理它transform就是最简单的选择。保留问题是要注意transform对合成层的影响以及不要和其它transform动画叠加使用不然会互相覆盖。另外如果子元素尺寸超过了父容器transform会导致子元素从中心向四周溢出左右两边被裁剪用max-width和max-height去限制会更好。也不要忘了在父容器里加position: relative否则子元素会往更上层的定位祖先去找坐标这是我在多人协作时见过最多的问题之一。4.4 flex 双轴居中现代化方案在现代浏览器里最推荐的还是flex双轴居中。父容器三行样式display: flex; justify-content: center; align-items: center。这三行代码几乎是刻进肌肉记忆的而且它不限制子元素数量不管是单个图标还是多个按钮都能水平垂直居中。flex双轴居中另一个好处是它天然适用于不定高度的场景。内容多高容器就自动撑开子元素在容器正中间刷新页面也不会跳动。配合gap属性还可以让多个子元素之间留出统一间距省去手工处理margin的麻烦。做卡片布局时我经常用这种方式把卡片里的图标、标题、描述文字排成两段第一段主轴是column第二段水平靠justify-content调整整体又稳又符合直觉。如果你遇到“flex容器里有文字却不居中”的情况先排查两个方向一个是我前面说的漏掉align-items另一个是子元素自身设置了align-self把默认对齐覆盖了。在很多组件库里样式优先级很容易互相干扰看到结果是“不居中”先检查有没有冒出来的align-self覆盖这一步能省下大量排查时间。4.5 grid 与 place-items更高级的简洁grid布局里有一个更极致的居中写法display: grid; place-items: center这一行语法同时设置align-items和justify-items让网格项在整个网格区域居中。相比flexgrid对“容器内单个或多个元素居中”的语义更强代码也更短。place-items的授权范围是整个grid区域所以如果一个grid容器里只有一个子元素place-items: center就足够了。另外place-content: center控制的是整个网格轨道组在网格容器中的对齐place-items控制的是每个网格单元格内项目自身的对齐二者效果在某些简单场景里看起来很相似但适用层不同。想快速实现水平垂直居中用place-items: center即可想控制多行多列网格在容器内的整体位置再用place-content。实际项目中grid做居中最常见的场景是“整个页面或某个区块只有一个核心内容”比如登录页中间的表单模块或者空白状态的插画加文字。flex也能做到同样效果但grid的可读性更强一眼就能看出“这是把内容放在网格正中间”。不过现阶段很多团队还是把grid用于复杂二维布局单居中场景普遍使用flex因为在兼容性和团队熟悉度上更省心。5. 常见问题与排查技巧实录5.1 margin auto 水平居中失效的六个原因一位访客可能反复遇到编写margin: 0 auto后元素仍然靠左的问题。常见原因有元素是行内元素或行内块元素没有display: block窗口元素width是auto导致剩余空间为0元素带了float属性浮动已经完全接管了水平位置元素是absolute或fixed定位水平位置由left/right控制父容器没有明确宽度或者父容器本身也不是块级auto的分配基准不存在还有可能是其他全局样式覆盖了margin。排查这种问题最直接的办法就是打开开发者工具先看元素本身的computed样式。看display、width、float、position这四个属性基本就能定位问题。很多次我接手别人的页面看到fixed定位的按钮还带着margin: 0 auto效果自然不生效这种代码改的时候一定要先理解position对margin auto的影响再动手。5.2 垂直居中时漏掉 align-items 默认值的原因flex垂直居中不生效的最常见原因是只写了display: flex没有写align-items: center。我前面提过align-items默认值是stretch子元素默认被拉伸填满交叉轴看起来根本不像居中。很多人看到这种状态以为代码有问题就去查各种transform方案绕了一圈发现加一行align-items: center就解决了。还有一个隐藏较深的情况flex容器里如果有多个子元素某一个子元素设置了align-self它的垂直对齐方式就被自己的样式覆盖了容器里的align-items不再作用在它身上。这经常发生在组件库和业务样式混合时。排查的时候检查子元素的computed样式里有没有align-self往往就能找到覆盖层。5.3 transform 定位在哪些情况下会让元素“看起来偏了”transform: translate(-50%, -50%)在大多数场景下会让元素非常居中但有几种情况会让人觉得“差了几个像素”。一是子元素包含阴影或者outline时阴影和描边不在元素的盒模型范围内视觉中心就会偏移看起来像是没居中。二是父容器使用了百分比高度时如果父容器高度不是整数像素top: 50%的计算结果可能出现小数像素部分浏览器在合成时会向下取整出现1px左右的偏移这在高度很矮的元素上尤其明显。三是transform与transition或animation叠加时如果动画帧里改写了transform属性很容易覆盖掉translate的居中偏移。解决方法通常是把偏移和动画拆分成不同的属性比如外层用transform做定位偏移内层用top、left或opacity做动画避免互相覆盖。四是transform在某些低版本浏览器里会导致文字模糊因为生成合成层后的字体抗锯齿行为变化这种场景我更建议干脆用flex方案换掉。别和transform死磕换一种手段往往更省力。5.4 多行文本垂直居中的统一处理多行文本垂直居中我前面提到的table-cell方案在兼容性上很有优势但如果你用的是现代技术栈我建议直接用flexdisplay: flex; align-items: center; justify-content: center然后让文本容器自身随意排版。这种写法可以同时处理单行、多行、图片加文字等复杂场景而且高度不固定也能居中。如果非要在老环境里处理多行文本table-cell依然可靠。需要注意父容器一定要有固定高度table-cell高度才能被驱动起来然后子元素不要带margin因为table-cell内margin的垂直效果不可靠。给子元素加padding来控制文本和边框的间距比用margin稳定得多。这两套方案一个兼容一个现代基本能覆盖绝大多数多行文本垂直居中场景。5.5 表单元素居中的细节排查表单元素是居中里的另一大难点input、select、textarea各有各的渲染脾气。要让一个input在父容器水平居中最简单的办法是父容器text-align: centerinput是行内块元素天然会被居中但input自身如果设置了display: block和width那就需要margin: 0 auto才能生效。再说input内部文本的对齐。input里输入的文本要用text-align: center来水平居中placeholder也遵循同样的对齐方式但垂直方向input自带一点内边距和字体基线差异不同浏览器表现并不一致通常会借助height、line-height和padding来微调或者用flex容器包住input再配一个height: 100%的span来辅助。textarea里的多行文本居中就更麻烦了因为textarea默认是行内块换行行为也不可控这个场景比较适合用flex容器包住整个textarea控件而不是直接修改textarea内部对齐。还有一个常被忽略的细节button里的文字默认有平台内部居中但不同浏览器对padding的计算不同如果直接在button里塞一块复杂内容经常出现垂直方向不稳定。给button设置display: inline-flex和align-items: center能更好地实现按钮内部的自定义内容居中这也是现代UI框架里常见的做法。日常选型的一点点个人建议居中的方案看似很多实际挑起来并不难文本级别的内容能靠text-align和line-height解决的就直接用块级元素水平居中margin auto是首选不定宽高的动态内容优先flex一行justify-content加一行align-items比什么都省心绝对定位浮层用transform是最直接的。如果项目对老浏览器兼容要求苛刻table-cell和负margin的方案还在那里等着但别一上来就写最复杂的先把flex吃透大部分场景都能轻松过关。我这些年踩下来的最深体会是居中没有银弹但也没必要把它想成很高深的东西。它考的就是你对盒模型、文档流、元素类型和定位坐标系这几个基础概念的掌握程度。把这些底层的状态搞明白了再去看任何一个居中相关的bug你会发现自己已经能猜出几种可能的成因而不是拿着样式瞎试。希望这份整理能帮你把“居中”真正变成顺手的小事而不是反复踩坑的无底洞。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

基于STM32单片机太阳能手机无线充电宝电压电流锂电池蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S528 2026/9/29 1:18:58

基于STM32单片机太阳能手机无线充电宝电压电流锂电池蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S528

S528-太阳能无线充电宝USB输出输出电压电流功率锂电池电压电量欠压OLED屏声光提醒按键蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、OLED屏、无线蓝牙/WIFI/视频监控/云平台模块-可选、太阳能接口、锂电池充电管理电路、锂电池升压电路、无线充电接口、USB…

阅读更多 →
基于STM32单片机智能拐杖盲人导盲仪语音播报超声波防撞蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S491 2026/9/29 1:18:58

基于STM32单片机智能拐杖盲人导盲仪语音播报超声波防撞蓝牙/WiFi/视频监控/云平台无线APP-DIY设计S491

S491-语音播报水坑防滑超声波测距防撞提醒光照照明一键求救OLED屏按键蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、OLED屏、无线蓝牙/WIFI/视频监控/云平台模块-可选、超声波模块、灯光电路、光敏电阻电路、语音播报模块接口、水位检测电路、电源电路、按…

阅读更多 →
基于STM32单片机无线激光笔翻页笔PPT遥控器电脑USB蓝牙无线APP/WiFi无线APP-DIY设计S513 2026/9/29 1:18:58

基于STM32单片机无线激光笔翻页笔PPT遥控器电脑USB蓝牙无线APP/WiFi无线APP-DIY设计S513

S513-激光笔USB接电脑激光灯上一页下一页全屏退出全屏电源蓝牙/WiFi/视频监控/云平台APP本系统由STM32F103C8T6单片机核心板、无线蓝牙/WIFI/视频监控/云平台模块-可选、USB口、激光灯、电源电路、按键电路组成。【1】激光笔设计分USB版、蓝牙通信版、WIFI通信版。实际蓝牙版本…

阅读更多 →

最新相关资讯

从demo到线上:NLP智能客服系统落地的关键路径与避坑指南 2026/9/29 2:03:12

从demo到线上:NLP智能客服系统落地的关键路径与避坑指南

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

阅读更多 →
计算机组成原理期末复习:高频题型与易错点拆解 2026/9/29 2:03:12

计算机组成原理期末复习:高频题型与易错点拆解

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

阅读更多 →
Argent 简介:AI Agent 一键掌控 iOS 与 Android 应用的神器,5分钟看懂它能做什么 2026/9/29 2:03:12

Argent 简介:AI Agent 一键掌控 iOS 与 Android 应用的神器,5分钟看懂它能做什么

Argent 简介:AI Agent 一键掌控 iOS 与 Android 应用的神器,5分钟看懂它能做什么 【免费下载链接】argent An agentic toolkit to control, debug, and profile iOS and Android apps. Made by Software Mansion. 项目地址: https://gitcode.com/gh_mi…

阅读更多 →
TMS AI Studio:Delphi桌面应用接入大语言模型对话能力的组件之道 2026/9/29 2:03:12

TMS AI Studio:Delphi桌面应用接入大语言模型对话能力的组件之道

简介:这是一套专为 Delphi 13 环境打造的 AI 与机器学习控件套件,面向希望在桌面、移动或 Web 应用中快速引入智能功能的 Delphi 开发者,也适合有一定基础、希望深入 AI 集成的中高级程序员。套件整合了模型训练、数据预处理、自然语言处理、…

阅读更多 →
Jessibuca 播放器底部控制栏完全指南:5个开关自定义按钮与自动隐藏 2026/9/29 2:03:11

Jessibuca 播放器底部控制栏完全指南:5个开关自定义按钮与自动隐藏

Jessibuca 播放器底部控制栏完全指南:5个开关自定义按钮与自动隐藏 【免费下载链接】jessibuca Jessibuca 是一款开源的纯H5直播流播放器,通过Emscripten将音视频解码库编译成Js(wasm)运行于浏览器之中。兼容几乎所有浏览器,可以运…

阅读更多 →
555定时器呼吸灯电路设计与工程实践指南 2026/9/29 2:03:05

555定时器呼吸灯电路设计与工程实践指南

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

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉