-
幽灵空白节点能撑开父盒子高度是因为它作为行内级、零宽度、继承父级font-size和line-height的不可见盒子参与行框构建,而父容器高度由行框总高度决定;vertical-align通过改变对齐基准点间接影响行框底部位置;最可靠方案是font-size:0+vertical-align:bottom+flex布局组合。
-
SVG不支持alt属性,装饰性SVG需加aria-hidden="true",功能性SVG应使用aria-label或aria-labelledby,数据可视化SVG必须配<title>、<desc>和aria-roledescription="chart"。
-
要让多个CSS动画不“错拍”,需确保所有动画的起始时间(animation-delay)和持续时间(animation-duration)均一致,使播放窗口完全对齐;推荐用CSS自定义属性统一管理时序参数,并避免JS启停导致的微时差失步。
-
fetch触发OPTIONS预检当使用PUT/DELETE等非常规方法、含自定义请求头或非标准Content-Type时;前端可降级为简单请求规避,但需后端配合,且credentials需显式设为include并配对应响应头。
-
用padding-bottom实现宽高比裁剪是因为其百分比值基于父容器宽度计算,可纯CSS锁定比例;需配合position:relative与绝对定位子元素,并用object-fit:cover实现居中裁剪。
-
Vue模板HTML嵌套需遵循原生HTML内容模型,禁用非法嵌套(如p内嵌div),template仅作逻辑容器,v-html绕过编译但无响应式,slot和动态组件保障安全嵌套与响应性。
-
全选功能需通过事件委托与状态聚合实现双向同步:全选框change触发子项.checked批量更新,子项change委托至父容器并过滤disabled项计算indeterminate状态,避免setAttribute和计数器误判。
-
label标签必须正确关联表单控件:优先用隐式包裹(input嵌套在label内),显式绑定需确保for与id严格一致;仅可聚焦控件支持关联,错误绑定将导致无障碍失效。
-
html-minifier的--minify-jstrue选项需依赖terser且仅压缩内联脚本:若未安装terser、语法不兼容、含module/nomodule属性或危险语句,会静默跳过;它不处理外部JS,也不跨script块优化,压缩效果取决于原始JS质量。
-
绝对定位子元素不占位,完全脱离文档流,父容器计算尺寸时无视其存在;需为父元素设置position:relative等非static定位才能建立定位上下文,否则偏移参考祖先或body。
-
计算属性实现动态表单校验的核心是规则与状态分离:规则来自配置,状态驱动响应,校验逻辑只读不写、结果自动更新;支持跨字段联动、动态表单项和单元测试,无需手动触发或第三方库。
-
直接用:checked伪类能控制开关状态,因其响应checkbox原生状态变化,无需JS且兼容IE9+;label与input需正确关联,input不可display:none而应隐藏;滑块动画用::after配合transform实现;深色模式用prefers-color-scheme适配,禁用状态需用aria-disabled或class控制;pointer-events:none加在input上以保留可访问性。
-
transition不生效需先检查三件事:目标属性是否支持过渡、状态切换时属性值是否发生可插值变化、是否遗漏:hover等触发源。
-
本文详解Etch-a-Sketch项目中重置按钮无响应的问题:核心在于DOM元素选择器不匹配——createGrid()创建的是带canvas类的<div>,但reset()却尝试重置所有<div>,导致目标元素未被选中,从而无法清空画布。
-
不是必须,但强烈建议用<thead>包裹表头;它提升语义化、可访问性及打印/滚动时表头重复显示能力,WCAG和主流UI库均要求该结构。