news 2026/9/19 22:35:59

CSS backdrop-filter 实现毛玻璃效果:原理、实战与性能优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CSS backdrop-filter 实现毛玻璃效果:原理、实战与性能优化

不是,这几年网页设计里"毛玻璃"这个词出现的频率高得吓人——从苹果的系统界面到各种新品发布会页面,再到你随手打开的设计灵感站,几乎到处都能看到那种半透明、背景模糊、边缘还泛着微光的卡片效果。以前想在网页上复刻这种质感,得靠背景图裁切、伪元素复制、甚至手动PS一张模糊底图,麻烦不说,一换分辨率就露馅。直到backdrop-filter这个属性出现,才算真正把毛玻璃效果的实现成本降到了"写几行CSS"的地步。

我最早接触backdrop-filter的时候还在做后台管理系统,那时候需求方就提了一句"能不能做出 iOS 那种背景透过去又模糊的效果",当时我老老实实用伪元素方案硬扛,结果滚动起来掉帧、圆角边缘也容易露底色。后来换了backdrop-filter,代码量直接减半,效果还更细腻。这篇文章就把我从原理到实战、从踩坑到优化的完整经验整理一遍,无论你是刚入门前端,还是已经写了几年 CSS 想进阶,应该都能从中找到能直接抄作业的东西。

1. backdrop-filter 到底解决什么问题——先搞清楚原理

1.1 毛玻璃效果为什么最近两年突然到处都是

先聊聊这股设计风气的来源。所谓"Glassmorphism",也就是玻璃拟态风,核心特征就是你看到的那些卡片、面板、导航栏,背景是半透明的,同时它背后的内容会呈现出一种模糊的磨砂质感,边缘通常还有 1px 左右的半透明白色描边,配合柔和的投影,看起来就像一块悬浮在界面上的毛玻璃。

这种风格其实不是凭空冒出来的。从早期拟物化设计到扁平化,再到 Google 的 Material Design,界面审美一直在"模拟真实物体"和"追求信息层级清晰"之间来回摇摆。毛玻璃厉害的地方在于,它同时兼顾了两者:一方面通过半透明和模糊营造出真实的材质感,另一方面因为背景模糊掉了细节,前景内容反而更容易被视线聚焦。所以你会发现它特别适合用在"需要层级叠放"的场景——导航栏、弹窗、侧边栏、悬浮操作按钮,这些地方的共同特点是:我不想完全挡住背景,但又不希望背景的复杂细节干扰阅读。

backdrop-filter的存在,就是让这种效果从"设计稿上的好看"变成"代码里的几行配置"。它直接告诉浏览器:把元素背后那片区域的内容抓取出来,做一次滤镜处理,然后放在元素底下。你什么都不用裁切,不用复制背景图,滚动时背后内容不断变化,模糊区域也跟着实时更新。

1.2 backdrop-filter 和 filter 的区别在哪里

这个点是新手最容易绕晕的地方。filterbackdrop-filter名字长得像,实际作用对象完全不同。

filter: blur(10px)处理的是元素自身的内容。比如你给一张图片加filter: blur(10px),那么模糊的是图片本身;给一个 div 加模糊,div 里的文字、子元素全都被模糊掉。这就像你拿一张已经画好的画,直接在画面上涂了一层磨砂,画里的内容看不清了,但画纸边缘还是那个边缘。

backdrop-filter: blur(10px)处理的则是元素背后那片背景区域。元素自身是什么样还什么样,它的子元素、文字都不受影响,但它底下的那些内容会被模糊、调色。这更像你拿一块真正的毛玻璃放在画上,毛玻璃下面的画变模糊了,但玻璃表面贴的贴纸依然是清晰的。

所以一个非常典型的使用姿势是:给元素设置一个半透明背景色(比如rgba(255, 255, 255, 0.4)),再加上backdrop-filter: blur(12px)。这样一来,元素自身是近乎透明的,它背后不断滚动的文字、图片被模糊成一片柔和的色块,而元素内部的前景内容始终清晰锐利。如果你忘了加半透明背景,会发现模糊好像没生效——因为元素背后虽然被模糊了,但元素本身完全不透明,把模糊区域整个盖住了,你当然看不到效果。

1.3 基础语法与兼容现状

语法其实没有想象中复杂,它和filter共用一套滤镜函数:

.glass { backdrop-filter: blur(10px) saturate(150%) brightness(0.9); }

支持的滤镜函数包括blur()模糊、brightness()亮度、contrast()对比度、grayscale()灰度、hue-rotate()色相旋转、invert()反相、opacity()透明度、saturate()饱和度以及sepia()棕褐色,多个函数用空格隔开,浏览器会从左到右按顺序叠加处理。

兼容性方面,这里我直接给一个真实验证过的结论:

浏览器是否支持是否需要前缀
Chrome / Edge76+ 支持不需要
Firefox103+ 支持不需要
Safari / iOS Safari9+ 支持需要-webkit-
Opera63+ 支持不需要

当前端项目还需要兼容旧版 Safari 的时候,建议写成:

.glass { -webkit-backdrop-filter: blur(12px) saturate(180%); backdrop-filter: blur(12px) saturate(180%); }

在一段时间里,Safari 是毛玻璃效果最积极的推进者,所以前缀方案在 iOS 系统上很早就有了。Chrome 和 Firefox 虽然支持得更晚,但是支持之后就很稳定。需要注意的是,如果你在移动端 WebView 或老版本浏览器里跑,backdrop-filter不生效并不会直接报错,只是元素看起来就跟没有滤镜一样,这时候需要別的降级方案,后面我会专门讲。

2. 从零做一个毛玻璃卡片——完整实操流程

2.1 先搭好 HTML 结构

理论讲了半天,不如直接上手。我们做一个最常见也最实用的场景:一张毛玻璃卡片,覆盖在一张多彩的背景图上方,卡片里有标题和一小段文字。

HTML 结构非常简单,就三层:

<div class="page-wrapper"> <!-- 第一层:多彩背景 --> <div class="page-bg"></div> <!-- 第二层:内容层,用来体现“背后内容”被模糊 --> <div class="content-area"> <h2>这里是被毛玻璃盖住的背景内容</h2> <p>它可以是文字、图片、列表,滚动的时候毛玻璃区域会实时模糊它们。</p> </div> <!-- 第三层:毛玻璃卡片 --> <div class="glass-card"> <h3>毛玻璃卡片标题</h3> <p>这张卡片看起来就像一块半透明的磨砂玻璃,背后的内容清晰可见但又不会干扰阅读。</p> </div> </div>

这里我把背景图和内容文字分开处理,主要是为了方便演示:page-bg负责提供一个色彩丰富的底图,content-area负责提供一些细小文字,这样就能明显感受到"模糊"到底模糊了什么。实际项目里你不需要刻意分成两层,只要毛玻璃元素底下存在任何有内容、有颜色的区域,它都会帮你处理。

2.2 核心 CSS:blur + saturate 组合参数

接下来是关键的样式。我把我自己在项目中稳定的参数组合直接给出来:

.page-wrapper { position: relative; width: 100%; min-height: 100vh; } .page-bg { position: absolute; inset: 0; background: linear-gradient(135deg, #6a11cb 0%, #2575fc 50%, #ff6a00 100%); /* 换成任意图片也完全没问题 */ } .content-area { position: relative; z-index: 1; padding: 40px; color: rgba(255, 255, 255, 0.85); font-size: 16px; line-height: 1.8; } .glass-card { position: absolute; right: 40px; top: 80px; width: 320px; padding: 32px 28px; color: #1f2933; border-radius: 20px; /* 关键三件套:半透明背景 + 背景模糊 + 白色描边 */ background: rgba(255, 255, 255, 0.35); -webkit-backdrop-filter: blur(16px) saturate(160%) brightness(1.05); backdrop-filter: blur(16px) saturate(160%) brightness(1.05); border: 1px solid rgba(255, 255, 255, 0.4); box-shadow: 0 12px 32px rgba(31, 38, 135, 0.25); }

这里每个属性都有它的意图,我逐个拆一下:

  • background: rgba(255, 255, 255, 0.35):半透明白色底,决定玻璃的"通透感"。数值越小越通透,背后的内容越清晰;数值越大玻璃越"实"。我建议在 0.25~0.5 之间调,太透会导致前景文字和背景内容混在一起,太实又失去了毛玻璃的意义。
  • backdrop-filter: blur(16px) saturate(160%) brightness(1.05):这才是毛玻璃的核心。16px 的模糊半径是比较均衡的值,能模糊掉文字细节但不会糊成一片死白;160% 的饱和度让背后鲜艳的色彩透过来之后更浓郁,模拟真实玻璃的"增艳"效果;1.05 的亮度微调是为了让玻璃区域看起来更通透、干净。
  • border: 1px solid rgba(255, 255, 255, 0.4):半透明白色描边。玻璃拟态的标志性细节,没有这条边会缺少"边缘高光"的质感。实际视觉上这条边会压在背后内容之上,做出一种玻璃边缘折射的感觉。
  • box-shadow: 0 12px 32px rgba(31, 38, 135, 0.25):柔和的彩色投影,让卡片"浮"在背景上。阴影颜色最好和背景主色调呼应,而不是死黑,这样整体更融合。

2.3 各参数怎么选:数值逻辑与常见组合

说到参数,很多人的误区是直接抄一个 blur 值到处用。实际上,blur()的数值并不是越大越好,它要根据背后内容的密度、卡片尺寸、文字大小来决定。

我整理了自己常用的几组组合,你们可以直接拿去试:

使用场景推荐组合备注
普通信息卡片blur(12px) saturate(150%)最百搭,文字背景都适用
大面积面板/侧边栏blur(20px) saturate(120%) brightness(1.1)模糊强度高一些,避免大片背景干扰
导航栏(背景高度 60~80px)blur(10px) saturate(180%)导航栏通常不厚,数值太大会发虚
弹窗遮罩blur(4px) brightness(0.9)只需轻微模糊,保留背景轮廓
图片上叠加文字容器blur(8px) saturate(130%)图片细节丰富,不需要太高模糊

这里想特别说一个容易忽略的点:多个滤镜函数的组合顺序不同,最终效果也会有细微差别。比如blur(16px) brightness(1.05)brightness(1.05) blur(16px),前者是先模糊再提亮,后者是提亮后再模糊。因为亮度调整发生在模糊前还是后,会影响模糊区域里高光像素的扩散程度。绝大多数场景下我建议把blur()放最前面,先模糊,再调色,视觉上最自然。

另外,saturate()这个参数值得多说两句。毛玻璃效果之所以有时候看起来"很廉价",往往不是模糊半径不够,而是饱和度没有提升。真实世界的玻璃因为有折射和反射,会让透过的颜色变得更加浓郁,所以适度加一点saturate(150% ~ 200%),会瞬间让卡片产生"玻璃感"。做对了这一步,整体质感会明显不一样。

3. 进阶场景实战:导航栏、弹窗与图片文字叠加

3.1 固定导航栏:滚动时背景自动模糊

毛玻璃最早在网页上被广泛应用的场景之一,就是吸顶导航栏。传统方案是给导航栏一个接近不透明的背景色,或者用 JS 监听滚动事件,滚到一定高度后再切换背景。用了backdrop-filter以后,这些都不用管了,你只管把导航栏做成半透明 + 模糊,页面内容从它底下滑过时,天然就是毛玻璃效果。

.nav-bar { position: fixed; top: 0; left: 0; right: 0; height: 60px; display: flex; align-items: center; padding: 0 24px; background: rgba(255, 255, 255, 0.4); -webkit-backdrop-filter: blur(12px) saturate(180%); backdrop-filter: blur(12px) saturate(180%); border-bottom: 1px solid rgba(255, 255, 255, 0.3); z-index: 100; }

position: fixed的元素上用backdrop-filter,后面即使没有任何设置,只要页面滚动,导航栏下面经过的图片、文字都会自动被模糊。这里要注意一个隐藏的坑:backdrop-filter的元素祖先中如果有overflow: hiddentransformfilterwill-change这些属性,很可能会导致滤镜意外失效,或者模糊区域被裁剪掉。特别是 transform,这在做导航栏进场动画的时候很容易踩到,后面我会在问题速查表里再强调。

3.2 弹窗与遮罩:用毛玻璃代替半透明黑

弹窗遮罩过去最普通的做法就是rgba(0, 0, 0, 0.5)盖一层,简单粗暴,但缺点是背后的内容被压得很闷,视觉上整个页面像是掉进了暗房。现在越来越多的设计选择用毛玻璃来做遮罩:背景仍然可见,但细节被模糊掉,用户的注意力会被更自然地引导到弹窗内容上。

.modal-mask { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.2); -webkit-backdrop-filter: blur(6px) brightness(0.85); backdrop-filter: blur(6px) brightness(0.85); z-index: 999; } .modal-content { width: 420px; padding: 32px; background: rgba(255, 255, 255, 0.65); -webkit-backdrop-filter: blur(20px) saturate(160%); backdrop-filter: blur(20px) saturate(160%); border-radius: 16px; border: 1px solid rgba(255, 255, 255, 0.5); }

这种层次感就是双层毛玻璃:最外层遮罩只做轻度模糊,让用户知道背后还有内容;弹窗本身则用更扎实的模糊和半透明白色,保证前景内容足够清晰。实际在移动端使用时,需要注意遮罩覆盖整个屏幕,而backdrop-filter触发的渲染成本跟覆盖面积直接相关,全屏遮罩的模糊会带来不小的性能开销。这时候可以把遮罩的blur值控制在 4~8px 之间,既有效果又不至于让低端设备卡顿。

3.3 文字叠加图片:解决可读性问题

图片上盖文字,一直是设计稿里好看、实现起来头疼的经典场景。图片色彩鲜艳、明暗不均的时候,不管白字黑字都可能看不清。以前的办法是给文字加阴影、加半透明底色条,效果大都很生硬。现在,直接在文字容器上套一个毛玻璃底,问题就变得很优雅了。

这里有一个我自己用得很顺手的"图片卡标题"写法:

<div class="img-card"> <img src="photo.jpg" alt="背景图片" /> <div class="img-card__overlay"> <h4>山间清晨</h4> <p>2024 · 摄影</p> </div> </div>
.img-card { position: relative; width: 360px; height: 260px; border-radius: 16px; overflow: hidden; } .img-card img { width: 100%; height: 100%; object-fit: cover; } .img-card__overlay { position: absolute; left: 16px; right: 16px; bottom: 16px; padding: 12px 16px; color: #fff; border-radius: 12px; background: rgba(0, 0, 0, 0.25); -webkit-backdrop-filter: blur(10px) saturate(120%); backdrop-filter: blur(10px) saturate(120%); border: 1px solid rgba(255, 255, 255, 0.2); }

这个方案的思路是:用一个覆盖在图片底部的半透明暗色 + 模糊容器,来承载文字。暗色底保证了白色文字的对比度,模糊去掉背后图片的锋利边缘,整体看起来就像一块深色磨砂玻璃贴在图片上。对于这个场景,我一般不推荐用太高的透明度和过亮的背景色,因为图片本身就有颜色,再来个白色半透明底会让文字发灰。

3.4 鼠标移入与动画:让毛玻璃"活"起来

静态毛玻璃已经很耐看了,但如果配合鼠标交互,效果能再上一个层级。CSS 的transition是可以作用在backdrop-filter上的,所以你可以让模糊程度随着鼠标移入移出平滑变化。思路很简单,就是改变滤镜函数的数值:

.glass-card { background: rgba(255, 255, 255, 0.35); -webkit-backdrop-filter: blur(12px) saturate(150%); backdrop-filter: blur(12px) saturate(150%); transition: -webkit-backdrop-filter 0.3s ease, backdrop-filter 0.3s ease; } .glass-card:hover { background: rgba(255, 255, 255, 0.5); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%); }

这个交互说白了就是鼠标移入时,玻璃变得更"实"、更模糊,同时背景色变得更不透。实际体验中,这种效果用在图集卡片、功能入口上非常讨喜,用户会觉得这个界面有灵性。不过要注意,backdrop-filter的动画性能在不同浏览器上差异很大,Chrome 下通常是 GPU 加速的,但低端移动端设备上连续动画还是可能卡顿。所以动效不要做得太快,0.3s 左右比较舒适,也不要用在长时间持续动画上。

再顺带提一个相关热词里出现频率很高的场景——"css 鼠标移入事件",很多人把它理解成 JS 事件,其实在纯 CSS 里对应的是:hover伪类。像我上面这个例子就是纯 CSS 实现,不需要写一行 JS。如果你要实现更复杂的移入移出效果,比如移入时从模糊 0 渐变到模糊 16px,理论上这是可行的,但因为blur(0px)blur(16px)的插值在部分浏览器中表现不一致,我建议直接切换预设参数,不要做持续的数值动画。

4. 性能优化、兼容降级与坑位排查

4.1 性能开销有多高,怎么控制

我可以很直白地说:backdrop-filter是一个很"贵"的属性。它每时每刻都在获取元素背后的渲染结果,然后对这个区域做滤镜计算。如果页面里只有一张小卡片用,基本感受不到性能影响;但如果全屏铺开、或者在一个滚动容器里有多个毛玻璃元素,掉帧是分分钟的事。这是因为浏览器需要把背景层单独渲染一份出来交给 GPU 处理,这本身就多了一次合成开销。

实操中我一般会遵守这几条经验:

  • 尽量缩小模糊区域。毛玻璃元素不要无脑撑满全屏,能用多小就多小。
  • 不要在滚动容器里放太多动态变化的毛玻璃块。每滚动一个像素,背后内容都在变,浏览器就得重新计算一次模糊结果。
  • 如果backdrop-filter和 CSS 动画一起用,请把动画属性限制在transformopacity上,这两个属性由 GPU 合成,不会触发频繁重绘。
  • will-change: transform来给即将发生动画的元素做提示,但不要滥用,因为will-change本身也会创建新的层叠上下文,有时候反而会干扰backdrop-filter的作用区域。

4.2 浏览器兼容与降级方案

前面提到过,Firefox 直到 103 版本才默认支持backdrop-filter,Chrome 76 以后才稳定可用。如果你的项目还需要兼容稍旧的浏览器,不能直接依赖这个属性,需要准备降级方案。

我常用的做法是用@supports做特性检测:

.glass-card { /* 降级:不支持时给一个接近不透明的半透明底色 */ background: rgba(255, 255, 255, 0.85); } @supports (backdrop-filter: blur(12px)) or (-webkit-backdrop-filter: blur(12px)) { .glass-card { background: rgba(255, 255, 255, 0.35); -webkit-backdrop-filter: blur(12px) saturate(160%); backdrop-filter: blur(12px) saturate(160%); } }

这里@supports的意思是:浏览器支持backdrop-filter-webkit-backdrop-filter时,才应用半透明 + 模糊的样式;不支持时,元素保持接近不透明的纯色背景,保证内容可读。这样即使毛玻璃效果完全失效,界面也不会变得一团糟。

我见过不少项目不做降级,结果老用户看到的就是半透明背景上文字和背后内容叠在一起,完全没法阅读。所以在使用backdrop-filter时,"先保证可用,再追求效果"永远是对的。

4.3 常见问题速查表

几年用下来,我把遇到过的和同行分享过的典型问题整理成了一个速查表,基本覆盖了backdrop-filter最常见的坑:

问题现象根本原因解决方案
毛玻璃效果完全不生效元素或祖先创建了层叠上下文;或者浏览器不支持检查是否有filtertransformwill-changeoverflow属性;用@supports降级
效果生效但背景不模糊元素本身背景完全不透明,把模糊区域盖住了background改成rgba半透明,如rgba(255,255,255,0.35)
模糊区域边缘出现白边或黑边模糊后边缘像素与border-radius切圆角不完全匹配给元素加稍微大一点的border-radius;或使用mask配合优化
滚动时明显掉帧、卡顿backdrop-filter面积太大,或背景动态变化频繁缩小模糊区域,降低 blur 数值,减少同屏毛玻璃元素数量
Safari 上不生效忘了加-webkit-前缀同时写-webkit-backdrop-filterbackdrop-filter
transform动画同时使用时偶发失效Chrome 在元素被 transform 期间停止更新背景采样动画结束后再应用backdrop-filter;或用@keyframesanimation-fill-mode: forwards固定最终状态
毛玻璃元素在弹窗内,弹窗背景是纯色弹窗本身不透明,背后内容被整体遮住弹窗外层容器设置为半透明,并给弹窗内部元素留出透明区域
::before/::after伪元素上使用不生效大部分浏览器不支持伪元素上的backdrop-filter把效果放到真正的子元素上,或用额外标签替代

这里面我想再说一下最常见的"白边"问题。当你给毛玻璃卡片同时设置backdrop-filterborder-radius时,模糊区域是卡片矩形的内容区,而圆角之外的部分会被裁剪掉,但模糊边缘会有半透明白色像素残留在圆角边界上,视觉上就像一圈白边。解决方案之一是给卡片再加一层mask或者直接调整背景透明度和描边透明度,让白边不那么扎眼。不过我实际测试下来,只要描边颜色选择rgba(255, 255, 255, 0.3)左右,白色描边和轻微白边混在一起,肉眼并不容易察觉。

另一个隐藏很深的问题是"父容器 overflow 裁剪"。如果毛玻璃元素的某个祖先设置了overflow: hidden且父容器内部有滚动的子元素,部分浏览器会在滚动时暂停对背景的实时采样,导致毛玻璃变成一块静止的"冰玻璃"。遇到这种情况,我一般会把毛玻璃元素移出滚动容器,或者把模糊效果换成filter模拟方案。

尾巴收在这里,分享一个我实际项目里特别常用、但文档里很少提到的小技巧:当你需要为一个"固定在某个区域内部的毛玻璃面板"做背景模糊时,不要让毛玻璃元素本身成为滚动容器的子代,而是在滚动容器外面套一层定位容器,让毛玻璃元素覆盖在滚动容器上方。这样滚动事件不会干扰浏览器对背景的采样,毛玻璃始终能正常工作,性能也稳定得多。

再补充一个参数经验:如果你拿不准自己的场景该用多大的 blur 值,先记住"12px 起步、20px 上限、少量加点 saturate"这个口诀。大多数设计稿里的毛玻璃,落在 10~20px 这个区间都不会出大错。然后根据背后内容的复杂程度微调:背景是纯色就调小一点,背景是高密度图片就调大一点。做多了以后你会发现,毛玻璃效果的美感其实不在于模糊多强,而在于半透明、模糊、饱和度、描边这几个变量之间的平衡——这也是backdrop-filter作为"新利器"最有意思的地方。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 22:35:14

Spark Join 策略深度对比:优化大数据查询性能的关键

一、Spark Join 策略概述Spark作为大数据处理的利器&#xff0c;Join操作是其最核心也最常见的操作之一。在面对海量数据的Join场景下&#xff0c;选择合适的Join策略对查询性能有着决定性影响。Spark SQL中的Join策略主要分为三类&#xff1a;Broadcast Hash Join&#xff08;…

作者头像 李华
网站建设 2026/9/19 22:34:21

移动APP测试实战:从Genymotion环境到adb性能与稳定性命令详解

简介&#xff1a;面向移动端测试工程师的APP测试精编合集&#xff0c;内容覆盖从环境搭建到性能分析的完整知识链。资料为PDF文档&#xff0c;共1个文件&#xff0c;包体仅1020KB&#xff0c;便于碎片时间学习与移动端查阅&#xff1b;目前已有230人浏览学习&#xff0c;适合初…

作者头像 李华
网站建设 2026/9/19 22:34:18

LibreChat自托管AI聊天平台:多模型统一接入与Docker部署全攻略

1. LibreChat是什么&#xff0c;以及它解决的到底是什么问题先抛一个场景&#xff1a;你是不是也把 ChatGPT、Claude、Gemini 这些对话页面都开着&#xff0c;哪个好用切哪个&#xff1f;结果就是浏览器标签页开了一排&#xff0c;来回切换&#xff0c;历史记录散落各处&#x…

作者头像 李华
网站建设 2026/9/19 22:33:20

EffectorP3.0实战:从全蛋白组到候选效应子的高效筛选链路

拿到一个病原菌的基因组或转录组&#xff0c;注释出上万条蛋白序列&#xff0c;接下来最重要的是从中把“真正参与致病”的候选效应子捞出来。这一步纯靠实验验证会把人累死&#xff0c;所以业内通行的做法是先跑一遍EffectorP3.0做计算预筛&#xff0c;再结合信号肽、半胱氨酸…

作者头像 李华
网站建设 2026/9/19 22:31:45

Cursor 切 GPT-4o 报 401?TaoToken 这样填 Base URL

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

作者头像 李华