-
推荐用data-ext属性存小写后缀并配合[data-ext$="pdf"]选择器,避免href路径干扰;图标用::before+content插入字体图标或Unicode,需设display和font-size;注意大小写敏感,JS提取后缀时应转小写。
-
<metacharset="UTF-8">必须置于<head>最前面,因为浏览器流式解析HTML时,若此前遇到中文等非ASCII字符而未声明编码,会按默认编码(如GBK或ISO-8859-1)错误解码,导致乱码且无法回溯修正。
-
最快的老照片效果是filter:sepia(),推荐组合为sepia(0.8)contrast(0.85)brightness(0.92)blur(0.3px)drop-shadow(008pxrgba(140,100,60,0.15)),并可叠加噪点纹理提升真实感。
-
仅用html{filter:grayscale(100%);}不够,需补-webkit-filter兼容旧版Safari/安卓WebView,并为IE11添加progid语法;应选html而非body作根选择器以确保全覆盖,且须规避性能拖慢、文本可读性下降及视觉细节崩坏问题。
-
密码不可跨域明文传递,须用WebCryptoAPI的PBKDF2在前端加盐派生密钥(iterations≥100000、SHA-256、后端下发盐),导出十六进制凭证供后端校验,全程内存操作并立即清空原始密码。
-
Nunjucks原生不支持{%include"xxx"with{...}%}语法,但可通过自定义render过滤器安全、递归地传递上下文数据,实现类似React的props下传效果。本文详解替代方案、代码实现及关键注意事项。
-
签名生成本质是JS调用crypto.subtle.sign()执行HMAC-SHA256哈希,需将payload转Uint8Array、secret导入为CryptoKey,输出ArrayBuffer再转hex;常见不一致源于payload序列化、secret隐藏字符及编码不统一。
-
header和footer是语义容器而非视觉标签,必须依附于body、article等明确作用域;禁止嵌套、滥用或仅作样式用途,否则破坏可访问性、SEO及结构解析。
-
纯CSS实现抽屉拖拽需设resize:horizontal与overflow:auto/scroll/hidden,且父容器为flex;Firefox需手动启用;全兼容需JS监听mousedown/mousemove,用requestAnimationFrame节流并持久化至localStorage。
-
input标签无内置状态切换能力,需属性+CSS伪类+JS配合实现;disabled使元素脱离表单流程,readonly仅禁编辑但仍可聚焦和提交;focus/blur需事件监听,验证状态需reportValidity()等主动触发。
-
textarea的form属性用于将其关联到页面中任意位置的form元素,实现跨DOM结构提交;需同时设置合法form值(匹配目标form的id)和name属性,且目标form必须已存在并具有id。
-
根本原因是服务器返回的Content-Type响应头不是text/css,现代浏览器(如Chrome90+)会严格校验该值,即使CSS内容正确,只要Header不符就拒绝解析并报“MIMEtypemismatch”。
-
浮动元素底部不齐是正常行为,伪等高需用padding-bottom+负margin-bottom配合overflow:hidden裁剪实现,IE6/7需zoom:1触发hasLayout,现代项目应优先使用flex或grid。
-
CSS-in-JS中媒体查询应直接用模板字符串写入,如@media(min-width:${tablet}),使用字符串常量而非动态表达式以保障服务端渲染与样式提取正确。
-
现代JavaScript项目应选对工具链:新项目用Vite(启动快、热更新准),旧Webpack项目或需IE11/UMD/动态require则留用Webpack;vitebuild默认用Rollup处理define、public目录和hash文件名;部署前须检查base路径、outDir与Nginx配置一致、HTML中script标签是否由Vite自动注入。