-
HTMLid属性是全局唯一标识而非选择工具,#id选择器才用于CSS/JS定位;常见getElementById失效因DOM未加载完,ID值不能数字开头、区分大小写、不可重复,CSS中#id可被更具体规则覆盖,动态插入需确保拼写正确,ShadowDOM需特殊穿透,React中禁用id作key因语义冲突。
-
manifest属性已废弃,Chrome94起彻底移除支持;ServiceWorker是唯一可行的离线缓存方案,需HTTPS环境下用navigator.serviceWorker.register()早期注册,注意生命周期、缓存策略与调试要点。
-
在jQuery的submit事件处理器中调用$(form).submit()会再次触发绑定的事件监听器,导致无限递归;正确做法是缓存表单DOM元素并调用其原生submit()方法,绕过jQuery事件系统。
-
正确处理Flexbox溢出需结合overflow:hidden与flex属性,关键在于设置子元素min-width:0、flex:1及text-overflow:ellipsis,确保内容可收缩且文本溢出时截断,尤其在嵌套布局中更应规范使用以避免撑开容器。
-
利用CSS的gap属性配合Flexbox或Grid布局,可轻松实现响应式卡片间距自适应。1.使用Flexbox时,设置display:flex、flex-wrap:wrap和gap,再通过flex:11calc()定义卡片尺寸,实现自动换行与间距均匀;2.使用Grid时,设置display:grid、gap和grid-template-columns:repeat(auto-fit,minmax()),由浏览器自动计算列数并保持间距一致。相比传统margin方案易出现行尾错位、需复杂媒体查询等问题,gap
-
最可靠方式是用matchMedia('(prefers-color-scheme:dark)')监听系统暗色模式,它响应系统设置、不受时区和时间不准影响;手动切换需用themeMode状态隔离自动逻辑,并通过document.documentElement.classList切换class实现样式控制。
-
list-style-position取值决定标记与文本的排版关系:outside使换行文本左边缘不对齐首行,inside则侵占内容区宽度并影响盒模型;二者在响应式或嵌套场景易致视觉错位,需手动补偿或改用语义化替代方案。
-
navigator.clipboard.writeText()报“Permissiondenied”是因为未在用户手势(如点击)触发的HTTPS/localhost环境中执行,或iframe缺少相应sandbox和allow权限。
-
AJAX天然支持异步请求,问题源于XMLHttpRequest.open()第三个参数设为false导致同步阻塞;正确做法是设为true并配对onreadystatechange与readyState===4且status===200判断;现代推荐使用默认异步的fetchAPI。
-
EdgeLegacy(≤79)完全不支持datalist,因其EdgeHTML引擎从未实现该HTML5规范,输入框无下拉建议、DOM忽略datalist、JS无法获取list属性,须用JS模拟下拉组件。
-
Vue.js父子组件通信通过$emit派发事件实现双向数据流,子组件触发'inc'/'dec'操作类型,父组件统一校验并更新quantity,总价用computed自动响应变化。
-
一个页面只能有一个<main>元素,且不能嵌套在<header>、<footer>、<nav>、<aside>内;它必须包裹本页独一无二、不可复用的核心内容,否则将损害可访问性、SEO及Lighthouse评分。
-
PostCSS是构建时工具,必须集成于Webpack/Vite等构建流程,无法在HTML中直接运行或浏览器端实时处理;其作用是在编译阶段将CSS规则静态注入HTML的style属性或生成CSS文件。
-
Jest更适合中大型长期维护项目,Vitest更适合新项目和Vite生态;两者均需正确配置以避免模块解析错误,可靠测试需覆盖边界、隔离副作用、验证行为而非实现细节。
-
是的,const声明后仍可修改对象属性,因其仅锁定变量绑定(指针),不冻结堆内存中的数据;若需真正不可变,须配合Object.freeze()或不可变数据结构。