-
grid-template-rows:1frauto实现页脚底部对齐的前提是容器具备明确高度(如min-height:100vh),且子元素顺序与行定义匹配;若仅两行却含三个子元素,footer会落入隐式网格行而失效,正确做法是用auto1frauto或包裹结构确保行数一致。
-
Vue的computed实现微信时间格式化,核心是依赖数据变化自动更新而非定时器:今天显示“10:23”,昨天显示“昨天15:42”,近7天显示“周一14:05”,更早显示“2023/05/12”。
-
call和apply都显式指定函数执行时this的值并立即调用;区别仅在传参方式:call用逗号分隔参数,apply用数组传参。
-
原生<ul>嵌套是最稳的方案,不依赖JS、不靠第三方库、打开即见结构;必须用<li>包裹内容、子<ul>嵌在<li>内,用margin-left和伪元素控制缩进与连线,确保跨浏览器及PDF导出稳定。
-
直接使用input[type="email"]即可精准定位type="email"的输入框,无需class或id;注意引号必须为英文且type值严格区分大小写。
-
position:fixed使导航栏悬浮但脱离文档流,需用padding-top或margin-top预留空间;移动端需加transform:translateZ(0)防抖动;响应式时left/right/width要同步更新;z-index失效多因层叠上下文隔离。
-
playsinline 是一个布尔属性,设置后表示视频应以内联方式播放(即不进入全屏模式)。在 iOS 上,如果不加这个属性,视频默认会以全屏">
playsinline在iOS上关键是因为仅iOSSafari和WebKitWebView强制要求该属性实现内联播放,Android等浏览器默认支持;必须同时设置playsinline和webkit-playsinline布尔属性,且需配合muted才能自动播放,否则强制全屏。
-
performance.getEntries()无法识别长任务,因其默认不返回longtask类型条目;必须调用performance.getEntriesByType('longtask')才能获取已发生的长任务记录,因长任务仅在主线程阻塞超50ms后延迟生成且需按类型主动查询。
-
v-memo是Vue3.2+针对长列表优化的实验性指令,通过显式声明不变依赖跳过子树diff;仅当v-memo数组中所有响应式值未变时复用vnode,需谨慎选键、避免嵌套与非响应式值。
-
HTML5原生required和pattern能满足简单场景的基础验证,如非空、邮箱格式、最小长度等,但存在样式不可控、错误信息无法自定义、不支持异步校验及老版Safari兼容性问题。
-
浏览器原生不支持clipboardchange事件,因安全限制禁止后台窃取剪贴板;仅能在用户手势触发、HTTPS环境及获clipboard-read权限后,通过定时轮询readText()并比对哈希实现折中监听。
-
外部资源加载失败主因是file://协议安全限制,需用LiveServer等HTTP服务绕过;路径错误或onerror未防重会加剧问题;base64兜底可避免图片不显示。
-
箭头函数不绑定自身this,而是继承外层作用域的this值;它用=>定义,无arguments、prototype、super和new.target,不能作为构造函数。
-
漏掉<metaname="viewport">标签,其他所有响应式代码都白写;它不是可选优化,而是移动端渲染开关,缺失或写错(如拼成viewpoint、用固定宽度)会导致@media不触发、页面缩放显示。
-
TailwindCSSv4因内置RustOxide引擎而忽略postcss.config.js,样式处理全程由tailwindcss()插件接管;@import"tailwindcss"是入口指令,自动加载三层、启用JIT编译并隐式支持important、@theme、@plugin等新语法,且默认扫描源码无需content配置。