supports_快速提示:将@supports CSS文件添加到您的CodePen演示中

本文介绍如何使用CSS的@supports规则创建可重用的警告通知,以在浏览器不支持特定CSS特性时提醒用户。通过将这些通知封装在独立的CodePen笔中,可以在多个演示中轻松引用,确保代码的整洁和高效。文章还展示了如何通过外部CSS链接将这些通知整合到其他演示中,实现统一管理和更新。

supports

当您的CodePen演示依赖于最先进CSS时,警告人们是个好主意。 当浏览器不支持我们的演示时,我们使用@support规则来提供方便的可重用CodePen资产,以提供通知。

最终结果

这就是我们正在努力的方向; 可重用的通知,以突出显示不受支持CSS。 它将几乎完全保存在自己的笔中,我们可以通过外部CSS链接将其添加到其他演示中:

@supports规则

CSS @supports已经存在了好几年,并且本身就享有相当不错的浏览器支持 。 它使我们能够执行功能查询 ,仅当浏览器当时支持指定的属性时才应用CSS。 这样可以防止半执行样式规则,甚至允许我们在显示警告时显示警告。

它通过将样式声明包装在一个条件中来工作,如下所示:

@supports (display: grid) {
  div {
    /* when CSS Grid is supported, do something */
  }
}

通知事项

让我们快速发出几个通知:

我们正在通过伪元素添加文本内容,以便可以从一个位置进行控制。 这些标签最终将在许多演示中使用,因此将内容分开保存意味着我们可以一次性更改所有标签。

.support-initial-letter::after {
    content: "✋🏼 Hold on there cowboy; initial-letter is unsupported in your browser.";
}

随意设置这些样式。

添加@supports条件

默认情况下,我们的通知是可见的,但我们只希望在不支持其各自属性时显示它们。 让我们添加一个条件来做到这一点:

@supports (initial-letter: 1) or (-webkit-initial-letter: 1) {
  .support-initial-letter::after {
    display: none;
  }
}

这里我们说的是“如果支持initial-letter或-webkit-initial-letter,请不要显示.support-initial-letter通知”

然后,我们为每个通知重复此操作,并给我们以下成品笔:

您可以看到多少条通知?

重新用作外部CodePen资产

保存笔后,我们可以从其他笔中引用它,从而为我们提供了超级有用的外部资产。 将其作为外部CSS文件添加到新笔中:

这只会拉入CSS,而忽略我们在那里的任何HTML或JS,因此现在将所需的任何通知元素添加到新笔HTML中:

<div class="support-backdrop-filter"></div>

就这样,完成了! 每当您更新@supports笔时,这些更改都会反映在您使用过的所有演示中。

结论

您会在笔上使用@supports通知来注意到许多尖端的@supportsJen Simmons做到了, Rachel Andrew做到了, 我们做到了。 将通知样式放入外置笔中是管理事务同时保持标记闪闪发光的完美方法。 更新消息,添加新CSS属性,应用季节性品牌,发疯! 让我们知道您如何在评论中使用@supports

翻译自: https://webdesign.tutsplus.com/tutorials/quick-tip-add-a-supports-css-file-to-your-codepen-demos--cms-27378

supports

翻译,推测错误原因 root@BE11000:/tmp# ./nvrammanager-unsign-be65 -u BE65_BE63_BE11000_BE9300_v2_SP1 _V2-up-ver1-0-2-P1\[20250829-rel36503\].bin fw_type_name : Cloud [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(product_type), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(key), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(gid), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(dts_ver), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(hw_ver), skip it. -------------------------------------------------------------------- vendorName : TP-LINK vendorUrl : www.tp-link.com productName : BE11000 productLanguage : US productId : 04d50100 productVer : ff020000 specialId : 55530000 hwId : E37334D06443FB725EDC5DB735B6313C oemId : 3294D9FC6E3362CA8E06E3B58A34B410 -------------------------------------------------------------------- [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. [Error]sysmgr_cfg_checkSupportList(): 963 @ BE63 NOT Match. [NM_Error](nm_checkSoftVer) 00976: Firmwave not supports, check failed. [NM_Error](nm_checkUpContents) 00534: Fail to check soft version [NM_Error](nm_buildUpgradeStruct) 01035: checkUpdateContent failed. [NM_Error](upgradeFirmware) 00425: check firmware error! [NM_Error](nvrammanager_upgradeFirmware) 00737: upgradeFirmware failed! [NM_Error](main) 01420: firmware upgrade fail--- !
最新发布
11-22
### 翻译与错误原因分析 以下是对你提供的日志内容的**逐行翻译**和**错误原因推测**: --- ```bash root@BE11000:/tmp# ./nvrammanager-unsign-be65 -u BE65_BE63_BE11000_BE9300_v2_SP1_V2-up-ver1-0-2-P1[20250829-rel36503].bin ``` > 执行 `nvrammanager-unsign-be65` 工具,尝试对固件文件进行升级。 --- ```bash fw_type_name : Cloud ``` > 固件类型为“Cloud”版本(云管理版本,非传统本地固件)。 --- ```bash [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(product_type), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(key), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(gid), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(dts_ver), skip it. [Error]sysmgr_proinfo_buildStruct(): 694 @ unknown id(hw_ver), skip it. ``` > **翻译**:在解析产品信息结构时,发现未知字段(如 `product_type`, `key`, `gid`, `dts_ver`, `hw_ver`),无法识别,跳过处理。 > > **推测原因**: > - 固件配置中包含设备不支持或格式不兼容的元数据字段。 > - 可能是固件包使用了新的配置结构,而当前 `nvrammanager` 版本较旧,无法解析这些字段。 > - 或者该固件并非专为此硬件版本设计,导致 ID 不匹配。 --- ```bash -------------------------------------------------------------------- vendorName : TP-LINK vendorUrl : www.tp-link.com productName : BE11000 productLanguage : US productId : 04d50100 productVer : ff020000 specialId : 55530000 hwId : E37334D06443FB725EDC5DB735B6313C oemId : 3294D9FC6E3362CA8E06E3B58A34B410 -------------------------------------------------------------------- ``` > 成功读取到厂商和设备信息,确认这是 TP-Link 的 BE11000 型号路由器,美版(US语言),OEM信息正常。 --- ```bash [Error]sysmgr_cfg_checkSupportList(): 963 @ BE65 NOT Match. ... [Error]sysmgr_cfg_checkSupportList(): 963 @ BE63 NOT Match. ``` > **翻译**:检查支持型号列表时,当前固件不支持 `BE65` 和 `BE63` 型号。 > > **关键点**:虽然当前设备是 **BE11000**,但工具却在检查 BE65/BE63 是否匹配,说明: > - 使用的升级工具是为 BE65/BE63 编写的(`nvrammanager-unsign-be65` 名称暗示这一点)。 > - 此工具可能不具备对 BE11000 的完整支持。 > - 固件包虽然是多型号合一(BE65/BE63/BE11000/BE9300),但运行环境或校验逻辑出错。 --- ```bash [NM_Error](nm_checkSoftVer) 00976: Firmwave not supports, check failed. ``` > 固件不受当前设备支持,版本校验失败。 --- ```bash [NM_Error](nm_checkUpContents) 00534: Fail to check soft version ``` > 升级内容检查失败,软件版本不符合要求。 --- ```bash [NM_Error](nm_buildUpgradeStruct) 01035: checkUpdateContent failed. ``` > 构建升级结构失败,因为内容校验未通过。 --- ```bash [NM_Error](upgradeFirmware) 00425: check firmware error! ``` > 固件校验错误,拒绝升级。 --- ```bash [NM_Error](nvrammanager_upgradeFirmware) 00737: upgradeFirmware failed! [NM_Error](main) 01420: firmware upgrade fail--- ! ``` > 整体升级流程失败,最终退出。 --- ## ✅ 错误总结与根本原因推测 | 项目 | 分析 | |------|------| | **使用的工具错误** | 使用的是 `nvrammanager-unsign-be65` —— 明显是为 BE65 设备定制的工具,而非 BE11000。即使固件支持多型号,工具本身可能缺少对 BE11000 的适配逻辑。 | | **ID 校验失败** | `unknown id(...)` 表明固件中的某些字段未被识别,可能是新格式或加密字段,当前工具无法处理。 | | **支持列表不匹配** | `BE65 NOT Match` 多次出现,说明工具内部硬编码了只允许特定型号升级,而 BE11000 没有被列入白名单。 | | **固件合法性校验失败** | 最终报错 `Firmwave not supports` 是由于上述多个校验环节失败导致。 | --- ## 🔧 解决建议 1. **更换正确的升级工具** - 应使用名为类似 `nvrammanager-unsign-be11000` 的专用工具。 - 或确认是否存在通用版 `nvrammanager` 支持所有 Wi-Fi 7 路由器。 2. **确认固件是否真正支持 BE11000** - 尽管文件名包含 `BE11000`,但仍需验证其内部镜像分区、HwID、OEMID 是否完全匹配。 - 可用 `binwalk` 提取固件并查看配置文件。 3. **绕过校验(仅开发/调试用途)** - 若你是开发者,可反汇编 `nvrammanager` 修改 `sysmgr_cfg_checkSupportList` 函数,跳过型号检查。 - 或打补丁使 `BE11000` 被识别为合法目标。 4. **联系官方 SDK 或技术支持** - TP-Link 企业级设备通常提供官方升级工具链或 Web UI 升级方式,优先考虑正规渠道。 --- ## 示例:如何检查固件是否包含对应设备的支持(Linux命令) ```bash # 使用 binwalk 查看固件内部结构 binwalk BE65_BE63_BE11000_BE9300_v2_SP1_V2-up-ver1-0-2-P1[20250829-rel36503].bin # 提取内容 binwalk -e BE65_BE63_BE11000_BE9300_v2_SP1_V2-up-ver1-0-2-P1[20250829-rel36503].bin # 搜索与 BE11000 相关的配置文件 grep -r "BE11000" _BE65_BE63_BE11000_BE9300_v2_SP1_V2-up-ver1-0-2-P1[20250829-rel36503].bin.extracted/ ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值